简单处理——灰度图像反转和彩色图像反转
在前面的简单示例中,我们简单了解了RGB格式的数据,清楚了RGB888、RGB332、RGB565等等,同时进行了简单的灰度处理,将彩色图转换为灰度图,但是我们在实际计算机视觉的处理过程中,还需要对于图像的亮度信息有一个更直观的判断,同时有时候我们也会有反转图像信息的需求。
一、灰度图像反转和彩色图像反转
首先通过百度我们得知:灰度图像反转就是每个像素的灰度值取反,彩色图像反转就意味着每个通道的像素值取反。
//我们可以得出一些简单的公式:
//8位灰度图:invert = 255 - origin
//RGB888: invert = (255-R)*2^16 + (255-G)*2^8 + (255-B;
二、MATLAB实现
MATLAB实现是比较简单的,实现结果如下:
三、FPGA实现
我们今天尝试实现一个效果:用四个按键操控HDMI显示器显示处理后的图像,分别控制:RGB、RGB彩色反转、Y分量、Y分量彩色反转;从我们上节实验的基础上进行是十分简单的,我们只需要对ISP_TOP模块的代码进行简单修改即可
在这个部分的基础上用assign语句对invert后的语句赋值即可,时钟方面与invert之前的数据保持对齐即可(插入一个题外思想,实际上图像反转的assign语句应该也是造成了一定的时序延迟的,在时序约束中或许要进行进一步的讨论)
//这里我原本的思想是把RGB565复原之后,用255减去之后再将RGB888转换成RGB565即可
//实际上只需要用RGB565分别对应的阈值进行减操作即可
assign rinve_R = 5‘b11111 - RGB_data[15:11];
assign rinve_G = 6‘b111111 - RGB_data[10:5];
assign rinve_B = 5‘b11111 - RGB_data[4:0];
assign rinve_data = {rinve_R,rinve_G,rinve_B};
assign ginve_data = 8'd255 - Y_data;
四、上板验证
实验结果符合预期,不过感觉自己这个小显示器的对比度有点低,和MATLAB处理的还是存在一定差距的。
参考资料:咸鱼FPGA
标签:彩色图像,反转,rinve,RGB,灰度,data,assign From: https://www.cnblogs.com/qier0220/p/18119890