Professional Documents
Culture Documents
以 DE2-70 實作前置
影像處理
姓名: 林可昀
班級: 四電子三乙
學號: B9702111
DATE: 2011/1/4
2011 NTUST B9702111 林可昀
Abstract
之前已經寫出純 verilog 的二值化處理,延續之前的程式,這次我將基本的
影像處理一併完成。
Introduction
使用環境:
Quartus II 8.1 + DE2-70 + Verilog + VGA
就像是在設計水管,將水管彎曲、分流或加上濾網,最後再把結果,用掃描
射到 VGA SCREEN 上。
2011 NTUST B9702111 林可昀
系統架構
2011 NTUST B9702111 林可昀
Verilog 做影像處理
最關鍵的部分就是 Buffer 的運用,假設我要做 Dilation,基本上必須知道 pixel
的資料和該 pixel 周圍的資料。如下圖:
V V V
V A V
V V V
如果要計算 pixelA,必須得知周圍 pixel 的資料
P1、P2、P3….P9 皆為 Register
基本上就是用這個概念來做,verilog 就能夠模仿陣列的格式,由於資料像自來
水一樣不斷的流不停的流進來,我們已經不用考慮 pixel 掃描的動作,只要設定
好這 9 個 pixel 之間的運算機制,然後將運算結果送至 VGA 顯示,VGA 的掃描
動作在之前的報告已經有解釋。
EROSION 的運算機制:
/*
Filename : Erosion.v
Compiler : Quartus II 8.1
Description : Erosion on DE2-70
Date : 1/3/2011 1.0
*/
module Erosion (
2011 NTUST B9702111 林可昀
input iCLK,
input iRST_N,
input iDVAL,
input [9:0] iDATA,
output reg oDVAL,
output reg [9:0] oDATA
);
wire [7:0] line0;
wire [7:0] line1;
wire [7:0] line2;
reg [9:0] P1, P2, P3, P4, P5, P6, P7, P8, P9;
LineBuffer_3 for_erosion (
.clken(iDVAL),
.clock(iCLK),
.shiftin(iDATA[9:2]),
.taps0x(line0),
.taps1x(line1),
.taps2x(line2)
);
P2 <= P3;
P3 <= line2;
P4 <= P5;
P5 <= P6;
P6 <= line1;
P7 <= P8;
P8 <= P9;
P9 <= line0;
if (iDVAL)
oDATA <= P1^P2^P3^P4^P5^P6^P7^P8^P9;
else
oDATA <= 0;
end
end
endmodule
Dilation 的運算機制也一樣,換湯不換藥,關鍵在於
oDATA <= P1|P2|P3|P4|P5|P6|P7|P8|P9;
動作畫面:
上圖為彩色模式
上圖為灰階模式
2011 NTUST B9702111 林可昀
上圖為二值化模式
上圖為 SOBEL 模式
2011 NTUST B9702111 林可昀
上圖為第 1 次 EROSION
上圖為第 1 次 DILATION
2011 NTUST B9702111 林可昀
上圖為第 2 次 DILATION
上圖為第 2 次 EROSION
由於照片是用手機拍的,有些圖比較不清楚,但就本質而言,目前已經完成純硬
體的前置影像處理,而且速度超快,完全沒有 DELAY,已達到最初提高速度、
降低系統複雜度的理念。