一. 2D 去噪介紹
ISP中通常包括對圖像的去噪,英文名稱為Image Denoising。是指的對數字圖像中的噪聲進行消除或減少的過程。2D去噪指的是對單幀圖像進行幀內降噪處理,而3D去噪則需要關聯前后幀。本文僅介紹幾種常見的基于濾波器的方法的2D去噪:均值濾波、高斯濾波、中值濾波。
二. 均值濾波
均值濾波是一種典型的線性濾波算法。原理很簡單,以當前處理像素為中心,取n x n大小的圖像矩陣,求出該矩陣內的像素的均值替代該像素,如此遍歷整個圖像,即可完成整幅圖像的均值濾波。
以5x5的濾波矩陣為例,算法示意圖如圖2-1所示。
圖2-1 均值濾波原理示意圖
均值濾波的FPGA實現框圖如圖2-2所示,以行方式輸入的圖像信號通過line_cache處理后,以5行的形式輸出,輸送至avg_filter_process進行5x5的濾波處理。以圖像大小1080P,像素深度為12bit灰度為例,用于緩存的RAM大小為1920x48(深度1920,寬度12x4)。
圖2-2 均值濾波FPGA實現框圖
line_cache每進來一行,會將緩存在RAM_1920x48中的前4行的像素逐個取出,加上新輸入的一行圖像,組成一個個5x5的矩陣,并組成新的4行數據(48bit)寫入RAM_1920x48中,準備給下一行使用。此過程中需要對圖像上下左右的邊界進行邊界處理,即輸入圖像大小為1924x1084。然后對5x5的矩陣的矩陣相加再除25。除操作通常轉換為近似的乘操作,如該代碼中會乘以2641(1/25*2^16),再將結果右移16位。
仿真結果見圖2-3、圖2-4。
圖2-3 均值濾波仿真圖1
圖2-4 均值濾波仿真圖2
效果對比圖如圖2-5,左邊為原圖,右邊為均值濾波后的結果。
圖2-5 均值濾波效果對比圖
基于5x5的均值濾波會引入兩行的延時。基于Xilinx 7A50T的資源占用如圖2-6所示。
圖2-6 資源占用情況
三. 高斯濾波
高斯濾波就是對整個圖像進行加權平均的過程,每一個像素點的值,都由其本身和鄰域內的其他像素值經過加權平均后得到。高斯濾波的具體操作是:用一個模板(或稱卷積、掩模)掃描圖像中的每一個像素,用模板確定的鄰域內像素的加權平均灰度值去替代模板中心像素點的值。
高斯濾波的公式為:f(x)=aexp [-(x-m)^2/2σ^2]
其中,a是常數,m是均值,σ是標準差。
本文介紹基于Xilinx FPGA實現的5x5的濾波,處理的圖像是bayer圖像,并且對bayer圖像中的R、Gr、B、Gb四個通道分開進行處理。以bayer圖像中的一個像素進行高斯濾波為例,處理過程:首先以目標像素為中心取出一個9x9的像素陣列,再在該9x9像素陣列的基礎上取出一個5x5的像素陣列,然后將像素陣列中的像素值與對應的濾波系數相乘,再將所有值相加,最后將所得的值除以濾波系數之和,相除所得的值就是高斯濾波的結果。
圖3-1 高斯濾波原理示意圖
其中高斯濾波的濾波系數H由標準差σ確定。本文中使用的濾波系數如圖3-2所示。
圖3-2 高斯濾波的濾波系數
高斯濾波的FPGA實現框圖如圖3-3所示,實現方式與均值濾波類似。由于是基于Bayer圖像,需要先將Bayer圖像的通道分離,分別進行處理。另外5x5的均值濾波可以理解為濾波系數均為1的高斯濾波,其他處理過程一致。
圖3-3 高斯濾波FPGA實現框圖
line_cache的處理與均值濾波類似,只是緩存行數由4行增加到了8行。對5x5的矩陣數據均乘以一個系數H,再將所有值相加,最后將所得的值除以濾波系數之和,相除所得的值就是高斯濾波的結果。Pipe line的處理方式如圖3-4所示。
圖3-4 高斯濾波FPGA處理流程
仿真波形如圖3-5、圖3-6。
圖3-5 高斯濾波仿真圖1
圖3-6 高斯濾波仿真圖2
效果對比如圖3-7,左邊為原圖,右邊為高斯濾波后的結果。
圖3-7 高斯濾波效果對比圖
高斯濾波與均值濾波類似,總體是對圖像進行一個只跟距離有關的抹平。因此對邊緣細節沒有保留,效果也差別不大。
基于5x5的均值濾波會引入四行的延時。基于Xilinx 7A50T的資源占用如圖所示。
圖3-8 資源占用情況
四. 中值濾波
中值濾波是一種非線性濾波算法。原理也很簡單,以當前處理像素為中心,取n x n大小的圖像矩陣,將該矩陣內的像素值進行排序,將值大小排列在最中間的像素替換該點。如此遍歷整個圖像,即可完成整幅圖像的中值濾波。
以3x3的濾波矩陣為例,算法示意圖如圖4-1所示。
圖4-1 中值濾波原理示意圖
中值濾波的FPGA實現框圖如圖4-2所示。以圖像大小1080P,像素深度為8bit灰度為例,用于緩存的RAM大小為1920x16(深度1920,寬度8x2)。
圖4-2 中值濾波FPGA實現框圖
line_cache的處理與均值濾波類似,只是緩存行數由4行減少到了2行。對輸出的3x3矩陣內的9個數進行排序,輸出中間值即可。
仿真波形如圖4-3、圖4-4。
圖4-3 中值濾波仿真圖1
圖4-4 中值濾波仿真圖2
效果對比如圖4-5所示,左邊為原圖,右邊為中值濾波后的結果。
圖4-5 中值濾波效果對比圖
中值濾波原理決定了其能較好地消除孤立的噪聲點而不會對圖像造成較大的抹平模糊(相較于均值濾波和高斯濾波)。因此對邊緣細節保留較好。
基于3x3的均值濾波會引入一行的延時。基于Xilinx 7A50T的資源占用如圖所示。
圖4-6 資源占用情況
五. 延申
以上幾種2D去噪算法均為最基礎的去噪處理,實際應用中,不一定能滿足我們的應用需求。因此,基于上述幾種濾波器,通常還有一些改進型。如:
A. 雙邊濾波器: 雙邊濾波器實際上是在高斯濾波器的基礎上引入像素差值作為H濾波器系數的參考,權重系數動態變化,使得濾波器在濾除噪聲的同時也能保留圖像的邊緣信息。
B. 自適應的中值濾波器: 中值濾波器的開窗大小可以應對不同的噪聲密度,但是窗口越大,圖像的失真也會越大。因此增加一個對噪聲密度進行判斷的模塊從而指導中值濾波器動態地變化濾波開窗大小,就能同時兼顧去噪和保留圖像的細節。
審核編輯:劉清
評論
查看更多