4基于fpga的彩色图像灰度化(ROM)

摘要:
RGB分量转灰度的原理:彩色图像是由RGB三基色构成的,根据三个分量的数值不同而显示不一样的彩色。RGB565格式的像素排列为R[15:11]、G[10:5]、B[4:0],因此这里利用保存其中一个分量的数值,其他两个分量被这个分量填补即可实现彩色图像灰度化。在Matlab上实现,用于检验fpga实现的正确性:Matlab代码:clc;clearall;RGB=imread;%读取图像R_gray=RGB;%提取R分量后的灰度图G_gray=RGB;%提取G分量后的灰度图B_gray=RGB;%提取B分量后的灰度图subplot;imshow;title;subplot;imshow;title;subplot;imshow;title;subplot;imshow;title;实现结果:fpga实现中通过按键,切换原图和三个不同提取分量的图片。

学习文章:https://www.cnblogs.com/xianyufpga/p/12407716.html

实战功能:通过fpga将RGB图像转换成Gray灰度图像。

RGB分量转灰度的原理:彩色图像是由RGB三基色构成的,根据三个分量的数值不同而显示不一样的彩色。RGB565格式的像素排列为R[15:11]、G[10:5]、B[4:0],因此这里利用保存其中一个分量的数值,其他两个分量被这个分量填补即可实现彩色图像灰度化。

这里的图片是RGB565格式:用两个字节,即16位来描述一个像素。5+6+5。

4基于fpga的彩色图像灰度化(ROM)第1张


在Matlab上实现,用于检验fpga实现的正确性:

Matlab代码:

clc;
clear all;
RGB = imread('G:shizhan4 gray_imagedocimage.jpg'); %读取图像

R_gray = RGB(:,:,1);        %提取R分量后的灰度图
G_gray = RGB(:,:,2);        %提取G分量后的灰度图
B_gray = RGB(:,:,3);        %提取B分量后的灰度图

subplot(2,2,1);imshow(RGB);   title('原图');
subplot(2,2,2);imshow(R_gray);title('R分量灰度图');
subplot(2,2,3);imshow(G_gray);title('G分量灰度图');
subplot(2,2,4);imshow(B_gray);title('B分量灰度图');

实现结果:

4基于fpga的彩色图像灰度化(ROM)第2张


fpga实现中通过按键,切换原图和三个不同提取分量的图片。

彩色转灰度的关键代码:

moduleRGB_Gray(
inputclk_33M,
inputsys_rst_n,
input [15:0]image,
input [2:0]key_cnt,  
output reg[15:0]data
);

always @(posedge clk_33M or negedge sys_rst_n)begin
if(!sys_rst_n)
data<=16'd0;
else begin
case(key_cnt)
3'd0:data<=image;
3'd1:data <= {image[15:11],image[15:11],1'b0,image[15:11]};
3'd2:data <= {image[10:6],image[10:5],image[10:6]};
3'd3:data <= {image[4:0],image[4:0],1'b0,image[4:0]};
endcase
end
end

endmodule

显示在TFT中的图片结果与Matlab中的一样,实战完成。

免责声明:文章转载自《4基于fpga的彩色图像灰度化(ROM)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇angular 路由传参的三种方式layer弹窗在IOS上,被软键盘挤到上边的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

matlab中imread 从图形文件读取图像

来源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtitle imread 从图形文件读取图像 全页折叠 语法 A = imread(filename) A = imread(filename,fmt) A...

灰度共生矩阵--纹理

共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。 一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。 设f(x,y)为一幅二维数字图象,其大小为M...

OpenCV白平衡算法之灰度世界法(消除RGB受光照影响)

在用OpenCV对图像进行处理时,利用颜色定位是常常会接触到的方法,但RGB受光照影响比较严重,转换到HSV XYZ等空间也解决不了时, 可以用白平衡算法进行修正,使其发黄、发蓝、发红的照片更加趋于自然光下的图像。(转摘请说明来源) 程序代码示例如下: 1 //该代码实现白平衡算法中的灰度世界法,能有效改善图像发红发蓝发绿的现象; 2 3 #includ...

java+opencv实现图像灰度化

灰度图像上每个像素的颜色值又称为灰度,指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0。所谓灰度值是指色彩的浓淡程度,灰度直方图是指一幅数字图像中,对应每一个灰度值统计出具有该灰度值的象素数。   灰度就是没有色彩,RGB色彩分量全部相等。如果是一个二值灰度图象,它的象素值只能为0或1,我们说它的灰度级为2。用个例子来说明吧:一个25...

图像相关

Patch 差计算:基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法光流以及光流场  图像类型格式及访问 在cmakelists文件里PROJECT(Threshold)前添加set(OpenCV_DIR "/home/snn/Downloads/opencv-2.4.9/build")随时切换,引号是你open...

paper 106:图像增强方面的介绍

图像增强是从像素到像素的操作,是以预定的方式改变图像的灰度直方图。有时又称为对比度增强,灰度变换。点运算不可能改变图像内的空间关系,输出像素的灰度值由输入像素的值决定。其作用: 对比度增强:扩展感兴趣特征的对比度。 光度学标定:去掉图像传感器的非线性影响。所谓光度学,就是在可见光波段内,考虑到人眼的主观因素后的相应计量学科称为光度学。标定即计算内参,在光度...