【图像处理】FPGA verilog实现16位RGB的图像的灰度转换

项目:FPGA verilog实现16位RGB的图像的转换为8位宽的灰度图。

项目需要的模块:调用一个RAM,16*22500,灰度处理模块和VGA800X600模块。

         本次用到的FPGA是spartan6  X16。因为资源少,所以先尝试的做点简单的图像处理。由于RGB为16位宽的,red,5位宽,green,6位宽,blue,5位宽,故首先将彩色图片用matlab转换为16位的数据,生成coe文件。

下面是将彩色图片用matlab转换为coe文件的程序,是将24位的图片信息转换为16位宽的coe文件。

clc;
clear all ;
RGB = imread('Lena.png') ;
R =RGB ( : ,: ,1) ;
G =RGB ( : ,: ,2) ;
B =RGB ( : ,: ,3) ;
outdata = zeros(1,150*150) ;
outdata1 = zeros(1,150*150) ;
for i = 1:150 
	for j = 1: 150 
        outdata((i-1)*150+j) = bitand(R(i,j),248)+ bitshift(bitand(G(i,j),224),-5);
        outdata1((i-1)*150+j) = bitand(G(i,j),224)+ bitshift(bitand(G(i,j),248),-3);
        end
end


fid = fopen('Lena.coe','w+');

 fprintf(fid,'memory_initialization_radix=16;\nmemory_initialization_vector=\n');

for k = 1:150*150
      fprintf(fid,'%02x%02x,\n',outdata(k),outdata1(k));
end

fclose(fid);

会生成一个coe文件,将coe文件添加到ram当中就可以了。

下面是总框架,一个top图。

【图像处理】FPGA verilog实现16位RGB的图像的灰度转换_第1张图片

最后的到处理过后的灰度图显示在VGA显示屏上。150*150大小的。

【图像处理】FPGA verilog实现16位RGB的图像的灰度转换_第2张图片

由于程序有点多,我就不一一介绍了,有兴趣的同学可以下载一下,只供参考。

【图像处理】FPGA verilog实现16位RGB的图像的灰度转换_第3张图片

采用FPGA芯片是基础板spartan6 X16系列。VGA位宽是16位,下载程序的同学,直供参考,也可以用差不多类似的板子下载试一下!https://download.csdn.net/download/qq_40261818/10611461

 

本文为原创博客,未经允许请勿转载商用,感谢!若转载学习请标明地址:

https://blog.csdn.net/qq_40261818/article/details/81783336

 

 

 

你可能感兴趣的:(【图像处理】FPGA verilog实现16位RGB的图像的灰度转换)