검은 색과 흰색의 이미지가 검은 색에서 흰색과 검은 색으로 반전되고 싶습니다. 검은 색 = 0과 흰색 = 255 색입니다. 아래 코드를 사용하면 이미지가 반전되는 대신 전체 화면이 검정색이됩니다.이진 이미지를 반전하려고하면 나에게 검은 색 화면이 나타납니다.
module Inverter (
input [7:0] binary_red,
input [7:0] binary_green,
input [7:0] binary_blue,
output [7:0] inverted_red,
output [7:0] inverted_green,
output [7:0] inverted_blue);
parameter black = 0;
parameter white = 255;
assign inverted_red = (binary_red == black) ? white : black;
assign inverted_green = (binary_green == black) ? white : black;
assign inverted_blue = (binary_blue == black) ? white : black;
endmodule
왜 이렇게 반전되지 않는지에 대한 아이디어가 있습니까? 도와 주셔서 감사합니다!
편집 : 일부 모듈에서는 더 많은 코드를 요청했습니다. 그런 다음
module Greyscale_Filter (
input [7:0] filtered_red,
input [7:0] filtered_green,
input [7:0] filtered_blue,
output [7:0] greyscale_red,
output [7:0] greyscale_green,
output [7:0] greyscale_blue);
assign greyscale_red = (filtered_red != 0) ? (299*filtered_red/1000)+(587*filtered_green/1000)+(114*filtered_blue/1000) : 0;
assign greyscale_green = (filtered_green != 0) ? (299*filtered_red/1000)+(587*filtered_green/1000)+(114*filtered_blue/1000) : 0;
assign greyscale_blue = (filtered_blue != 0) ? (299*filtered_red/1000)+(587*filtered_green/1000)+(114*filtered_blue/1000) : 0;
endmodule
그것이로 이동 : 아래의 코드를 사용하여 그레이 스케일로가 변환됩니다 이후
module Color_Filter (
input [9:0] oVGA_Red,
input [9:0] oVGA_Green,
input [9:0] oVGA_Blue,
output [7:0] filtered_Red,
output [7:0] filtered_Green,
output [7:0] filtered_Blue);
parameter redFilterValue = 150;
parameter greenFilterValue = 110;
parameter blueFilterValue = 110;
assign filtered_Red = (oVGA_Red[9:2] >= redFilterValue && oVGA_Green[9:2] <= greenFilterValue && oVGA_Blue[9:2] <= blueFilterValue) ? oVGA_Red[9:2] : 0;
assign filtered_Green = (oVGA_Red[9:2] >= redFilterValue && oVGA_Green[9:2] <= greenFilterValue && oVGA_Blue[9:2] <= blueFilterValue) ? oVGA_Green[9:2] : 0;
assign filtered_Blue = (oVGA_Red[9:2] >= redFilterValue && oVGA_Green[9:2] <= greenFilterValue && oVGA_Blue[9:2] <= blueFilterValue) ? oVGA_Blue[9:2] : 0;
endmodule
: 원시 RGB 데이터에 걸립니다 만 빨간색 첫번째에 대한 필터링 컬러 필터가있다 는 그레이 스케일의 가치를 살펴보고 그 가치를 기반으로 바이너리로 변환 바이너리 이미지는 아래와 : 그것은 내가 원래 게시 된 반전 모듈로 이동
module Binary_Filter (
input [7:0] greyscale_red,
input [7:0] greyscale_green,
input [7:0] greyscale_blue,
output [7:0] binary_red,
output [7:0] binary_green,
output [7:0] binary_blue);
parameter black = 0;
parameter white = 255;
assign binary_red = ((greyscale_red > 51) ? white : black);
assign binary_green = ((greyscale_green > 51) ? white : black);
assign binary_blue = ((greyscale_blue > 51) ? white : black);
endmodule
이후. 최상위 모듈에서 다음을 수행하면됩니다.
Color_Filter color_filter (
.oVGA_Red(oVGA_R),
.oVGA_Green(oVGA_G),
.oVGA_Blue(oVGA_B),
.filtered_Red(filtered_R),
.filtered_Green(filtered_G),
.filtered_Blue(filtered_B)
);
Greyscale_Filter greyscale_Filter (
.filtered_red(filtered_R),
.filtered_green(filtered_G),
.filtered_blue(filtered_B),
.greyscale_red(greyscale_R),
.greyscale_blue(greyscale_G),
.greyscale_green(greyscale_B)
);
Binary_Filter binary_filter (
.greyscale_red(greyscale_R),
.greyscale_green(greyscale_G),
.greyscale_blue(greyscale_B),
.binary_red(binary_R),
.binary_green(binary_G),
.binary_blue(binary_B)
);
Inverter inverter (
.clk(VGA_CTRL_CLK),
.binary_red(binary_R),
.binary_green(binary_G),
.binary_blue(binary_B),
.inverted_red(inverted_R),
.inverted_green(inverted_G),
.inverted_blue(inverted_B)
);
실제로 바이너리 이미지 (1 비트/픽셀) 또는 흑백 이미지가 있습니까? – Qiu
나는 그것이 기술적으로 흑백 이미지라고 생각한다. 나는 빨간 색 빛을 찾기 위해 색상 필터링을하고, 그 다음 빨간색이면 255 색 (흰색)과 3 색색 채널을 0 (검정색)이 아닌 곳으로 설정합니다. – Mike
입력은 순수한 흑백이 아닐 수도 있지만 회색 음영이있다. 예를 들어'binary_red'가 1 (검은 색 근처)이면'inverted_red'는 254 (흰색 근처)가 아닌 0 (검은 색)이됩니다. '~'연산자로 비트 반전을 시도하십시오 : ex'assign inverted_red = ~ binary_red;' – Greg