【影象處理】FPGA verilog實現16位RGB的影象的灰度轉換
阿新 • • 發佈:2019-01-02
專案: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圖。
最後的到處理過後的灰度圖顯示在VGA顯示屏上。150*150大小的。
由於程式有點多,我就不一一介紹了,有興趣的同學可以下載一下,只供參考。
本文為原創部落格,未經允許請勿轉載商用,感謝!若轉載學習請標明地址: