引言
本系列文章記錄老猿自學岡薩雷斯《數字影像處理》的感悟和總結,不過估計更新會比較慢,白天要作業,都是晚上抽空學習,學習完一章再回頭總結,想學的朋友可以自己下載英文原版(目前到第四版)和中文譯本(目前應該到第三版)的電子版觀看,如果想對照觀看建議英文原版也找第三版,
這本《數字影像處理》不愧為數字影像處理的經典教程,知識范圍廣、內容詳盡、案例貼近實踐,至少很合老猿的口味,但中譯本存在兩個問題:
- 有些翻譯得不夠精準或流利,對于這樣的內容如果在老猿總結知識中出現,會進行調整,有些關鍵術語老猿會附上英文原詞;
- 中譯本的影像案例很多都比原版差很多,甚至差到影響對講述內容的理解,因此就算不看原版文字,影像案例最好還是對照原版的,老猿都取英文本的影像,
老猿在學習的總結上,針對特定知識點加上一些自己的感悟,如果感悟內容描寫多一點,會標注為:老猿注,如果少就沒有單獨標注,可能到后來老猿自己都發現不了是否是自己改動過的,
一、概述
平滑濾波器用于模糊處理(blurring )和降低噪聲(noise reduction),模糊處理經常用于影像預處理任務中,例如在(大)目標提取(object extraction)之前去除影像中的一些瑣碎細節(small details),以及橋接(bridging)直線或曲線的縫隙,通過線性濾波(linear filter)和非線性濾波(nonlinear filtering)進行模糊處理可以降低影像噪聲,
二、線性濾波器的向量表示
相關和卷積可以表示成乘積求和的形式:

其中w是一個m×n大小的濾波器系數矩陣,z為濾波器覆寫的相應影像像素的灰度值,這也是線性濾波的向量表示,因為線性濾波做的所有事情就是實作乘積求和操作,
三、非線性濾波器
不能表示成乘積和形式的濾波器就是非線性濾波,如統計排序濾波(最大值濾波、最小值濾波、中值濾波等)以及高斯濾波,
使用非線性濾波器需要確定濾波器鄰域大小以及鄰域內影像像素執行的操作,
四、平滑線性濾波器(Smoothing Linear Filters)
4.1、概念
平滑線性空間濾波器的輸出(回應)是包含在濾波器模板鄰域內(the neighborhood of the filter mask)的像素的簡單平均值,這些濾波器有時也稱為均值濾波器(averaging filters),也可以把它們歸入低通濾波器(lowpass filters),
平滑濾波器的基本概念非常直觀,它使用濾波器模板確定的鄰域內像素的平均灰度值代替影像
中每個像素的值,
4.2、作用及應用
平滑濾波器處理的結果降低了影像灰度的“尖銳”(sharp)變化(transitions),由于典型的隨機噪聲(random noise)由灰度級的急劇變化組成,因此常見的平滑處理(smoothing)應用就是降低噪聲,
然而由于影像邊緣(edges,幾乎總是一幅影像希望有的特性)也是由影像灰度尖銳變化(sharp intensity transitions)帶來的特性,所以均值濾波處理還是存在著不希望有的邊緣模糊(blur edges)的負面效應(undesirable side effect),另外這類處理的其他應用包括由于灰度級數量不足(insufficient number of intensity levels)而引起的偽輪廓效應(false contours)的平滑處理,
均值濾波器的主要應用是去除影像中的不相關(irrelevant)細節,其中“不相關”是指與濾波器模板尺寸相比較小的像素區域,
4.3、兩種模板示例
圖3.3.2顯示了兩個3x3平滑濾波器:

-
第一個濾波器產生下方的標準像素平均值,把模板系數代人式(3.4-3)即可清楚地看出這一點:

R是由模板定義的3x3鄰域內像素灰度的平均值,注意代替上式中的1/9,濾波器的系數全為“1”,這里的概念是系數取1值時計算更有效,在濾波處理之后整個影像除以9,一個mxn模板應有等于1/mn的歸一化常數,象這樣所有系數都相等的空間均值濾波器有時稱為盒狀濾波器(box filter), -
圖3.32所示的第二個模板更為重要一些,該模板產生所謂的加權平均(weighted average),使用這一術語是指用不同的系數乘以像素灰度,即一些像素的重要性(權重)比另一些像素的重要性更大,
在模板中,處于該模板中心位置的像素所乘的值比其他任何像素所乘的值都要大,因此,在均值計算中為該像素提供更大的重要性,
其他像素如同是模板中心距離的函式那樣賦以成反比的權重,由于對角項離中心比離正交方向相鄰的像素(引數為?2)更遠,所以它的權重比與中心直接相鄰的像素更小,
賦予中心點最高權重,然后隨著距中心點距離的增加而減小系數值的加權策略的目的是在平滑處理中試圖降低模糊(reduce blurring)程度,也可以選擇其他權重來達到相同的目的,然而圖3.32(b)所示模板中所有系數的和等于 16,對于計算機計算來說是一個有吸引力的特性,因為它是 2 的整數次冪,
在實踐中,由于這些模板在一幅影像中任何一個位置所跨過的區域很小,通常很難看出使用圖3.32中的各種模板或類似方式進行平滑處理后的影像之間的區別,
4.4、加權均值濾波的程序表示
對于一幅大小為M×N的影像,使用m×n的濾波器模板(m、n為奇數,a=(m-1)/2、b=(n-1)/2)進行加權均值濾波的程序可以由下式表示:

其中x取值為0–M-1,y取值為0–N-1,上式中的分母部分表示為模板各系數之后,它是只需要計算一次即可得到的常數,
4.5、使用各種尺寸模板的影像平滑示例及效果對比
與濾波器模板尺寸有關的影像平滑效果如圖3.33所示:

圖中顯示了一幅原影像以及分別用尺寸為m=3、5、9、15和35像素的方形均值濾波器得到的相應平滑結果,
這些結果的主要特點如下:
- 當m=3時,可以觀察到在整幅影像中有輕微的模糊,但正如所希望的那樣,當影像細節與濾波器模板近似相同時,影像中一些細節受到的影響比較大,例如,影像中的3x3與5x5黑方塊、較小的字母“a”和細顆粒噪聲,與影像的其他部分相比,要更模糊一些,注意,噪聲顯著地降低了,字母的鋸齒狀邊緣也令人滿意地被平滑了;
- m=5時的結果基本與m=3類似,但模糊程度稍微有所增加;
- 在m=9時,可以明顯地看出影像更加模糊,而且有 20%的黑色圓圈幾乎不能像在前三幅影像中那樣與背景明顯地區分開來,這表明當目標的灰度與其相鄰像素的灰度接近時,會導致模糊目標的混合效應;
- m=15和35時,就影像中目標物的尺寸來說,已屬極端情況,這種極端型別的模糊處理通常用于去除影像中的一些小物體,例如,在圖 3.35(f)中,三個小方框、兩個小圓圈以及大部分噪聲矩形區域已融入到背景中,注意,在這幅圖中還有明顯的黑的邊界,這是我們用0(黑色)填充原影像的邊界,經過濾波后再去除填充區域的結果,某些黑色混入了所有濾波后的影像,但對于使用較大濾波器平滑的影像,這就成為問題了,老猿認為這是因為濾波器比較大,導致濾波時黑色的邊界對內部的像素產生了影響導致的,
正像早些時候提到的那樣,空間均值處理的一個重要應用是為了對感興趣的物體得到一個粗略的描述(gross representation)而模糊一幅影像,這樣,那些較小物體的灰度就與背景混合在一起了,較大物體變得像“斑點”(bloblike)而易于檢測,
空間均值處理模板的大小由那些即將融入背景中的物體尺寸來決定,作為實體,考慮圖:

- 慮圖3.34(a)它是繞地軌道上的哈勃望遠鏡拍攝的一幅影像,
- 圖3.34(b)顯示了應用15x15均值濾波器模板對該影像處理后的結果,我們可以看到,影像中的一些部分或者融入背景中,或者其亮度明顯降低了,像這樣利用閾值處理并基于物體亮度來消除某些物體是很典型的操作,
- 使用等于模糊影像最高亮度25%的閾值,并用圖3.2(b)的閾值函式處理的結果示于圖3.34?中,將該結果與原影像比較,我們看到,考慮影像中最大、最亮物體的表達方式是合理的,
五、統計排序(非線性)濾波器(Order-Statistic (Nonlinear) Filters)
5.1、定義
統計排序濾波器是一種非線性空間濾波器,這種濾波器的回應以濾波器包圍的影像區域中所包含的像素的排序(排隊ordering或ranking)為基礎,然后使用統計排序結果決定的值代替中心像素的值,
5.2、中值濾波
統計排序濾波器中最知名的濾波器是中值濾波器(median filter),正如其名暗示的那樣,它是將像素鄰域內灰度的中值(在中值計算中包括原像索值)代替該像索的值,
一個數值集合的中值(median)ξ是這樣的數值,即數值集合中有一半小于或等于ξ,還有一半大于或等干ξ,為了對一幅影像上的某個點進行中值濾波處理,首先將鄰域內的像素分類排序,確定其中值,并將中值賦予濾波后影像中的相應像素點,
例如,對于一個3x3鄰域,其中值是第5 個最大的值,而在一個5x5鄰域中,中值就是第13個最大的值,等等,
當一個鄰域中的一些像素值相同時,所有相等的值都可以作為中值,假如,在一個3x3鄰域內有一系列像素值(10,20,20,20,15,20,20,25,100),對這些值排序后為(10,15,20,20,20,20,20,25,100),那么其中值就是20,
中值濾波器的使用非常普遍,這是因為對于一定型別的隨機噪聲(random noise),它提供了一種優秀的去噪(noise-reduction)能力,而且比相同尺寸的線性平滑濾波器的模糊程度明顯要低,
中值濾波器對處理脈沖噪聲(impulse noise)非常有效,該種噪聲也稱為椒鹽嗓聲(salt-and-pepper noise),因為這種噪聲是以黑白點的形式疊加在影像上的,
這樣,中值濾波器的主要功能是使擁有不同于周邊像素灰度級的點看起來更接近于它的相鄰點,事實上,我們常使用m×m中值濾波器來去除那些相對于其鄰域像素更亮或更暗并且其區域小于m2/2(濾波器區域的一半)的孤立像素族(isolated clusters),顯然較大的像素簇(Larger clusters)所受到的影響明顯較小,在這種情況下,“去除”(eliminated)的意思是強制為鄰域的中值灰度(median intensity),
例3.14 利用中值濾波降噪,
圖3.35(a)顯示了一幅被椒鹽噪聲污染的電路板的X射線影像,

為了說明這種情況下的中值濾波器處理效果比均值濾波器更好,在圖3.35(b)中顯示了用3x3鄰域均值模板處理噪聲影像的結果,而在圖3.35?中顯示了用3x3中值濾波器處理噪聲影像的結果,均值濾波模糊了影像,并且噪聲去除性能也很差,在這種情況下,中值濾波要遠遠優于均值濾波,通常中值濾波比均值濾波更適合去除椒鹽噪聲,
5.3、其他統計排序濾波器
在影像處理中,盡管中值濾波器是使用得最為廣泛的統計排序濾波器,但并不意味著它是唯一的,
中值象征一系列像素值排序后的第50%個值,但根據基本統計學可知,排序也適用于其他不同的情況,
例如,可以取第100%個值,即所謂的最大值濾波器(max filter),這種濾波器在搜尋一幅影像中的最亮點時非常有用,一個3x3的最大值濾波器的回應可以由公式R=max{zk|k=1,2,···,9}給出,
相反,取第0%個值的濾波器就是所謂的最小值濾波器(min filter),它可用于相反的目的,
六、小結
本文介紹了線性濾波和非線性濾波的概念、作用以及應用示例,可以看到線性濾波和非線性濾波都有不錯的應用場景,線性濾波器還可以有不同的系數,不同的波器的模板大小取決于要處理影像的目標,特定的模板對特定的噪聲有比較好的作用,如線性濾波比較適合隨機噪聲,中值濾波適合椒鹽噪聲的處理,
更多影像處理請參考專欄《OpenCV-Python圖形影像處理》、《影像處理基礎知識》以及付費專欄《OpenCV-Python初學者疑難問題集》的介紹,
對于缺乏Python基礎的同仁,可以通過老猿的免費專欄《 專欄:Python基礎教程目錄》從零開始學習Python,
如對文章內容存在疑問,可在博客評論區留言,或關注:老猿Python 微信公號發訊息咨詢:

也可以掃描博客左邊欄目的微信公號二維碼咨詢,
寫博不易,敬請支持:
如果閱讀本文于您有所獲,敬請點贊、評論、收藏,謝謝大家的支持!
關于老猿的付費專欄
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt開發圖形界面Python應用》專門介紹基于Python的PyQt圖形界面開發基礎教程,對應文章目錄為《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt開發圖形界面Python應用專欄目錄》;
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音視頻開發專欄 )詳細介紹moviepy音視頻剪輯合成處理的類相關方法及使用相關方法進行相關剪輯合成場景的處理,對應文章目錄為《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音視頻開發專欄文章目錄》;
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初學者疑難問題集》為《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》的伴生專欄,是筆者對OpenCV-Python圖形影像處理學習中遇到的一些問題個人感悟的整合,相關資料基本上都是老猿反復研究的成果,有助于OpenCV-Python初學者比較深入地理解OpenCV,對應文章目錄為《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初學者疑難問題集專欄目錄 》
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬蟲入門 》站在一個互聯網前端開發小白的角度介紹爬蟲開發應知應會內容,包括爬蟲入門的基礎知識,以及爬取CSDN文章資訊、博主資訊、給文章點贊、評論等實戰內容,
前兩個專欄都適合有一定Python基礎但無相關知識的小白讀者學習,第三個專欄請大家結合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》的學習使用,
對于缺乏Python基礎的同仁,可以通過老猿的免費專欄《https://blog.csdn.net/laoyuanpython/category_9831699.html 專欄:Python基礎教程目錄)從零開始學習Python,
如果有興趣也愿意支持老猿的讀者,歡迎購買付費專欄,
老猿Python,跟老猿學Python!
? ? 前往老猿Python博文目錄 https://blog.csdn.net/LaoYuanPython ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/425039.html
標籤:AI
上一篇:詳解Inception結構:從Inception v1到Xception
下一篇:R語言使用load函式將過往保存的作業空間鏡像檔案(RData)加載到當前會話、使用q函式關閉當前作業空間(系統會提示是否保存或者取消)
