项目: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_i