1系統(tǒng)概述
如圖所示,這是整個(gè)視頻采集系統(tǒng)的原理框圖。上電初始,FPGA需要通過IIC接口對(duì)CMOS Sensor進(jìn)行寄存器初始化配置。這些初始化的基本參數(shù),即初始化地址對(duì)應(yīng)的初始化數(shù)據(jù)都存儲(chǔ)在一個(gè)預(yù)先配置好的FPGA片內(nèi)ROM中。在初始化配置完成后,CMOS Sensor就能夠持續(xù)輸出標(biāo)準(zhǔn)RGB的視頻數(shù)據(jù)流,F(xiàn)PGA通過對(duì)其同步信號(hào),如時(shí)鐘、行頻和場(chǎng)頻進(jìn)行檢測(cè),從而從數(shù)據(jù)總線上實(shí)時(shí)的采集圖像數(shù)據(jù)。MT9V034攝像頭默認(rèn)初始化數(shù)據(jù)就能輸出正常的視頻流,因此FPGA中實(shí)際上未作任何IIC初始化配置。
在FPGA內(nèi)部,采集到的視頻數(shù)據(jù)先通過一個(gè)FIFO,將原本25MHz頻率下同步的數(shù)據(jù)流轉(zhuǎn)換到50MHz的頻率下。接著將這個(gè)數(shù)據(jù)再送入寫DDR3緩存的異步FIFO中,這個(gè)FIFO中的數(shù)據(jù)一旦達(dá)到一定數(shù)量,就會(huì)寫入DDR3中。與此同時(shí),讀取DDR3中緩存的圖像數(shù)據(jù),緩存到FIFO中,并最終送往LCD驅(qū)動(dòng)模塊進(jìn)行顯示。LCD驅(qū)動(dòng)模塊不斷的發(fā)出讀圖像數(shù)據(jù)的請(qǐng)求,并驅(qū)動(dòng)液晶顯示器顯示視頻圖像。
本實(shí)例除了前面提到對(duì)原始圖像做DDR3緩存和顯示,還會(huì)在原始圖像緩存到DDR3之前,另外做圖像的多行緩存和平滑處理運(yùn)算,獲得新的平滑后的圖像流,這個(gè)圖像流也寫入到DDR3中。根據(jù)LCD顯示模塊的請(qǐng)求,讀取DDR3中處理后的圖像進(jìn)行顯示。最終在VGA液晶顯示器上,可以看到左側(cè)圖像是原始的圖像,右側(cè)圖像是經(jīng)過平滑處理后的圖像。
2圖像平滑與濾波
2.1 基本概念
從統(tǒng)計(jì)學(xué)的觀點(diǎn)來看,凡是統(tǒng)計(jì)特征不隨時(shí)間變化的噪聲稱為平穩(wěn)噪聲,而統(tǒng)計(jì)特征隨
時(shí)間變化的噪聲稱為非平穩(wěn)噪聲。幅值基本相同,但是噪聲出現(xiàn)的位置是隨機(jī)的,稱為椒鹽
噪聲;如果噪聲的幅值是隨機(jī)的,根據(jù)幅值大小的分布,有高斯型和瑞利型兩種,分別稱為
高斯噪聲和瑞利噪聲。
圖像濾波,即在盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,是圖像預(yù)
處理中不可缺少的操作,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可
靠性。
消除圖像中的噪聲成分叫作圖像的平滑化或?yàn)V波操作。信號(hào)或圖像的能量大部分集中在
幅度譜的低頻和中頻段是很常見的,而在較高頻段,感興趣的信息經(jīng)常被噪聲淹沒。因此一
個(gè)能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。
圖像濾波的目的有兩個(gè),一是抽出對(duì)象的特征作為圖像識(shí)別的特征模式;另一個(gè)是為適應(yīng)圖像處理的要求,消除圖像數(shù)字化時(shí)所混入的噪聲。而對(duì)濾波處理的要求也有兩條,一是不能損壞圖像的輪廓及邊緣等重要信息;二是使圖像清晰視覺效果好。
平滑濾波是低頻增強(qiáng)的空間域?yàn)V波技術(shù)。它的目的有兩類:一類是模糊;另一類是消除
噪音。空間域的平滑濾波一般采用簡(jiǎn)單平均法進(jìn)行,就是求鄰近像元點(diǎn)的平均亮度值。鄰域的大小與平滑的效果直接相關(guān),鄰域越大平滑的效果越好,但鄰域過大,平滑會(huì)使邊緣信息損失的越大,從而使輸出的圖像變得模糊,因此需合理選擇鄰域的大小。
關(guān)于濾波器,一種形象的比喻法是:我們可以把濾波器想象成一個(gè)包含加權(quán)系數(shù)的窗口,
當(dāng)使用這個(gè)濾波器平滑處理圖像時(shí),就把這個(gè)窗口放到圖像之上,透過這個(gè)窗口來看我們得
到的圖像。舉一個(gè)濾波在我們生活中的應(yīng)用:美顏的磨皮功能。如果將我們臉上坑坑洼洼比作是噪聲的話,那么濾波算法就是來取出這些噪聲,使我們自拍的皮膚看起來很光滑。
2.2 濾波算法
各種不同的濾波算法如下:
•限幅濾波法(又稱程序判斷濾波法)
• 中位值濾波法
• 算術(shù)平均濾波法
• 高斯濾波法
• 遞推平均濾波法(又稱滑動(dòng)平均濾波法)
• 中位值平均濾波法(又稱防脈沖干擾平均濾波法)
• 限幅平均濾波法
• 一階滯后濾波法
• 加權(quán)遞推平均濾波法
• 消抖濾波法
• 限幅消抖濾波法
•卡爾曼濾波(非擴(kuò)展卡爾曼)
2.3 均值濾波
均值濾波器是圖像處理中一種常見的濾波器,它主要應(yīng)用于平滑噪聲。它的原理主要是利用某像素點(diǎn)周邊像素的平均值來達(dá)到平滑噪聲的效果。
例如,1~8像素是(x,y)點(diǎn)周圍鄰近的8個(gè)像素點(diǎn)。最簡(jiǎn)單的均值濾波,即對(duì)(x,y)以及周邊8個(gè)像素點(diǎn)求平均替代原來的(x,y)點(diǎn)。
這種濾波方式的優(yōu)點(diǎn)很明顯,算法簡(jiǎn)單,計(jì)算速度快。缺點(diǎn)是降低噪聲的同時(shí)使圖像產(chǎn)生模糊,特別是景物的邊緣和細(xì)節(jié)部分。
2.4 加權(quán)均值濾波器
由于我們已經(jīng)注意到了中心點(diǎn)和周邊像素點(diǎn)的重要程度不同,因此可以將均值濾波進(jìn)行改進(jìn),獲得圖像平滑濾波效果的同時(shí),也在一定程度上盡量降低圖像邊緣和細(xì)節(jié)的損失。
基于1/16的加權(quán)均值濾波,我們的Matlab代碼如下:
clear
clc
I1=imread('.\lena.jpg');
I=im2double(I1);
[m,n,c]=size(I);
A=zeros(m,n,c);
% 1 2 1
% 1/16 * 2 4 2
% 1 2 1
%for R
for i=2:m-1
for j=2:n-1
A(i,j,1)=I(i-1,j-1,1)+I(i+1,j-1,1)+I(i-1,j+1,1)+I(i+1,j+1,1)+2*I(i+1,j,1)+2*I(i-1,j,1)+2*I(i,j+1,1)+2*I(i,j-1,1)+4*I(i,j,1);
end
end
%for G
for i=2:m-1
for j=2:n-1
A(i,j,2)=I(i-1,j-1,2)+I(i+1,j-1,2)+I(i-1,j+1,2)+I(i+1,j+1,2)+2*I(i+1,j,2)+2*I(i-1,j,2)+2*I(i,j+1,2)+2*I(i,j-1,2)+4*I(i,j,2);
end
end
%for B
for i=2:m-1
for j=2:n-1
A(i,j,3)=I(i-1,j-1,3)+I(i+1,j-1,3)+I(i-1,j+1,3)+I(i+1,j+1,3)+2*I(i+1,j,3)+2*I(i-1,j,3)+2*I(i,j+1,3)+2*I(i,j-1,3)+4*I(i,j,3);
end
end
B=A/16;
%output
imwrite(B,'lena.tif','TIf');
imshow('.\lena.jpg');TItle('origin image');figure
imshow('lena.TIf');TItle('image after average filter')
濾波效果如下。
Matlab源碼、Lena.jpg原圖和比對(duì)圖存放在at7_img_ex01\matlab文件夾下。