1. 圖像噪聲
圖像降噪(Image Denoising)是指從圖像中去除噪聲的過程,目的是提高圖像質量,增強圖像的視覺效果。
圖像噪聲是指圖像中不希望出現的隨機亮度或顏色變化,通常會降低圖像的清晰度和可辨識度,以及會降低圖像的質量并使圖像分析和理解更加困難。
圖像噪聲主要有以下幾個原因來產生的:
光線不足:光線不足會導致光子噪聲增加,從而降低圖像的信噪比。
電子元器件的熱噪聲:電子元器件在工作時會產生熱噪聲,這種噪聲會影響圖像的質量。
電路噪聲:電路中的電磁干擾也會導致圖像噪聲的產生。
圖像傳輸過程中的錯誤:圖像在傳輸過程中可能會受到各種干擾,從而導致圖像噪聲的產生。
根據噪聲的統計特性來分類,可以將圖像噪聲分為以下幾類:
椒鹽噪聲:圖像中隨機出現黑白像素的噪聲。
高斯噪聲:最常見的噪聲類型,其概率密度函數服從高斯分布。
泊松噪聲:光子噪聲的一種類型,其概率密度函數服從泊松分布。
斑點噪聲:由圖像傳感器壞點或污點引起的噪聲。
下面的例子,分別展示了在圖像中添加椒鹽噪聲、高斯噪聲、泊松噪聲和斑點噪聲。
#include#include #include #include usingnamespacestd; usingnamespacecv; voidaddSaltNoise(Mat&src,intnum,Mat&dst) { dst=src.clone(); //隨機數產生器 std::random_devicerd;//種子 std::mt19937gen(rd());//隨機數引擎 autorows=src.rows;//行數 autocols=src.cols*src.channels(); for(inti=0;i(gen()%rows); autocol=static_cast (gen()%cols); autop=dst.ptr (row); p[col++]=255; p[col++]=255; p[col]=255; } } voidaddGaussianNoise(Mat&src,intmu,intsigma,Mat&dst) { dst=src.clone(); //產生高斯分布的隨機數發生器 std::random_devicerd; std::mt19937gen(rd()); std::normal_distribution<>d(mu,sigma); autorows=src.rows;//行數 autocols=src.cols*src.channels();//列數 for(inti=0;i(i);//取得行首指針 for(intj=0;j255?255:tmp; tmp=tmp0???0?:?tmp; ????????????p[j]?=?tmp; ????????} ????} } typedef?cv::Point3_ Pixel; voidaddPoissonNoise(constMat&src,doublelambda,Mat&dst){ dst=src.clone(); //產生泊松分布的隨機數生成器 std::random_devicerd; std::mt19937gen(rd()); std::poisson_distribution distribution(lambda); dst.forEach ([&](Pixel&p,constint*position)->void{ introw=position[0]; intcol=position[1]; intcount=distribution(gen); dst.at (row,col)=dst.at (row,col)+Vec3b(count,count,count); }); } voidaddSpeckleNoise(Mat&image,doublescale,Mat&dst){ dst=image.clone(); RNGrng; dst.forEach ([&](Pixel&p,constint*position)->void{ introw=position[0]; intcol=position[1]; doublerandom_value=rng.uniform(0.0,1.0); doublenoise_intensity=random_value*scale; dst.at (row,col)=dst.at (row,col)+Vec3b(noise_intensity*255,noise_intensity*255,noise_intensity*255); }); } intmain(){ Matsrc=imread(".../girl.jpg"); imshow("src",src); Matdst1; addSaltNoise(src,100000,dst1); imshow("addSaltNoise",dst1); Matdst2; addGaussianNoise(src,0,50,dst2); imshow("addGaussianNoise",dst2); Matdst3; addPoissonNoise(src,60,dst3); imshow("addPoissonNoise",dst3); Matdst4; addSpeckleNoise(src,0.5,dst4); imshow("addSpeckleNoise",dst4); waitKey(0); return0; }
2. 圖像降噪方法
傳統的圖像處理是基于濾波器的方式進行降噪,比如使用空域濾波、頻域濾波、非局部均值濾波等等,還有使用形態學降噪,當然也可以深度學習的方式進行降噪。
本文介紹兩種空域濾波的方式進行降噪。
2.1 中值濾波
中值濾波是一種非線性濾波器,它通過對圖像中的像素值進行排序并取中間值來進行濾波處理。
中值濾波.png
中值濾波的特性:
對于圖像中的每個像素,選取其周圍一定區域內的所有像素值,并對其進行排序。
將排序后的像素值的中位數賦予該像素。
中值濾波的優點:
能夠有效去除椒鹽噪聲和脈沖噪聲,對圖像中的孤立噪聲點具有較強的抑制能力。
能夠較好地保留圖像的邊緣和細節信息,不會造成圖像模糊。
中值濾波的缺點:
對高斯噪聲的去除效果不佳。
計算量相對較大,特別是對于大尺寸圖像而言。
2.2 高斯濾波
高斯濾波是一種線性平滑濾波器,它利用高斯函數對圖像進行加權平均,可以有效地去除高斯噪聲,同時平滑圖像。
高斯濾波的優點:
高斯濾波具有良好的平滑效果,能夠有效地抑制圖像中的噪聲。
高斯濾波是一種線性濾波器,具有可分離性,可以提高計算效率。
高斯濾波在頻域上具有低通濾波器的特性,能夠去除圖像中的高頻噪聲。
高斯濾波的缺點:
高斯濾波會造成圖像細節丟失,降低圖像銳度。
高斯濾波對椒鹽噪聲等非平滑噪聲的去除效果不佳。
高斯濾波以使用兩種方法實現:一種是離散化窗口滑窗卷積,另一種方法是通過傅里葉變化。最常見的就是滑窗卷積實現。
先來回顧一下一維高斯函數:
一維高斯函數.png
其中,是 x 的均值,是 x 的方差。x 是卷積核內任意一點的坐標,是卷積核中心的坐標。當 = 0 時,
由于圖像是二維的,二維的高斯函數則是對 x、y 兩個方向的一維高斯函數的乘積:
當時,就是我們比較熟悉的二維高斯函數公式:
二維高斯函數.png
常用的高斯模板有如下幾種形式,它們是基于高斯函數計算出來的。
高斯模版.png
高斯濾波具有以下性質:
線性: 高斯濾波器是線性的,這意味著它可以與其他濾波器組合使用。例如,可以先使用高斯濾波器去除噪聲,然后再使用邊緣檢測濾波器檢測邊緣。
可分離性: 高斯濾波器可以分離為兩個一維濾波器,即水平方向和垂直方向的濾波器。這使得高斯濾波器的計算效率更高。
傅里葉變換: 高斯濾波器的傅里葉變換是一個低通濾波器,這意味著它可以抑制圖像中的高頻成分,而保留低頻成分。
旋轉不變性: 高斯濾波器在各個方向上具有相同的平滑效果,這意味著它不會改變圖像的旋轉方向。
尺度不變性: 高斯濾波器的尺度可以通過調整高斯函數的標準差來控制。標準差越大,濾波器的平滑效果越強。
下面的例子,分別使用中值濾波和高斯濾波消除椒鹽噪聲和高斯噪聲。
intmain(){ Matsrc=imread(".../girl.jpg"); imshow("src",src); Matresult; Matdst1; addSaltNoise(src,100000,dst1); imshow("addSaltNoise",dst1); inta=7; medianBlur(dst1,result,a); imshow("removeSaltNoise",result); Matdst2; addGaussianNoise(src,0,50,dst2); imshow("addGaussianNoise",dst2); GaussianBlur(dst2,result,Size(15,15),0,0); imshow("removeGaussianNoise",result); waitKey(0); return0; }
3. 總結
圖像降噪可以提高圖像質量、提高圖像分析和處理的準確性、提高圖像壓縮效率以及擴展圖像應用范圍。
本文介紹了兩種簡單的降噪算法。中值濾波適用于去除椒鹽噪聲和脈沖噪聲,常用于圖像修復和增強。高斯濾波適用于去除高斯噪聲、平滑圖像,常用于圖像預處理和模糊處理。
審核編輯:黃飛
-
濾波器
+關注
關注
160文章
7749瀏覽量
177730 -
高斯濾波
+關注
關注
0文章
17瀏覽量
8059 -
電磁干擾
+關注
關注
36文章
2295瀏覽量
105314 -
圖像降噪
+關注
關注
0文章
7瀏覽量
6680 -
OpenCV
+關注
關注
30文章
628瀏覽量
41273
原文標題:OpenCV圖像降噪算法之中值濾波與高斯濾波
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論