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