【FPGA图像处理实战】- 图像灰度反转与彩色反转

本文转载自:FPGA入门到精通

图像反转技术在计算机视觉和图像处理中有着广泛的应用,主要包括图像灰度反转和彩色反转两大类。

本文将详细介绍图像灰度反转与彩色反转的基本概念以及FPGA实现。

一、什么是图像反转

图像反转是指对图像的彩色、灰度进行相反的处理,从而得到一个新的图像。在计算机视觉和图像处理领域,图像反转是一种常见的操作,它可以帮助我们实现不同的图像特效和视觉效果。

1、灰度反转

这种方法是将图像的灰度进行相反的处理,即原灰度值变为255,原非灰度值变为0。这种反转可以通过对图像的灰度通道进行操作来实现。

灰度图像:R = G = B

灰度图像反转:R = G = B = 255 - R;

2、彩色反转

这种方法是将图像中的彩色进行相反的处理,例如将红色变为青色,绿色变为品红色,蓝色变为黄色,反之亦然。这种反转可以通过遍历图像中的每个像素,并根据颜色通道值进行相应的转换来实现。

简单点理解就是:R = 255 - R;G = 255 - G; B = 255 - B;

例如:红色(R=255,G=0,B=0)变为青色(R=0,G=255,B=255)

总的来说,不管是彩色还是灰度图像,都可以按这个公式:R = 255 - R;G = 255 - G; B = 255 - B;

二、FPGA实现

1、灰度反转

关键代码逻辑如下:

always@(posedge clk or posedge reset) begin
if(reset) begin
RGB_new <= 'b0;
end else begin
RGB_new <= 'd255 - RGB_avr_m[16:9];
end
end

assign img_data_o = {3{RGB_new}};

效果图:

2、彩色反转

always@(posedge clk or posedge reset) begin
if(reset) begin
valid_o <= 'b0;
img_data_o <= 'b0;
end else begin
valid_o <= valid_i;
img_data_o[23:16] <= 255 - img_data_i[23:16];
img_data_o[15:8] <= 255 - img_data_i[15:8];
img_data_o[7:0] <= 255 - img_data_i[7:0];
end
end

效果图:

最新文章

最新文章