? ? 前往老猿Python博文目錄 https://blog.csdn.net/LaoYuanPython ?
一、引言
在前面章節《《數字影像處理》直方圖均衡學習總結+感悟》、《數字影像直方圖匹配或規定化Histogram Matching (Specification)處理》介紹了直方圖均衡處理和直方圖,二者都是基于整幅影像的灰度分布(intensity distribution)直方圖來進行的,因此說這兩種直方圖處理方式都是全域性的(global), 盡管這種全域方法適用于整個影像的增強(overall enhancement),但有時候需要對影像小的區域區域進行細節增強處理,如果使用全域增強處理,這部分小區域的像素可能在全域變換的計算中所起作用幾乎微乎其微(negligible influence),解決這個問題的方法是設計基于每個像素鄰域灰度分布的變換函式,
二、區域直方圖處理
直方圖均衡和直方圖匹配方法很容易應用于影像的區域增強(local enhancement)處理,
具體處理程序是:
- 定義一個鄰域(neighborhood,一個矩形核,請參考《《數字影像處理》學習總結及感悟:第二章數字影像基礎(4)像素間的關系》的介紹),然后將鄰域中心沿著影像從左到右、從上到下一個一個像素的移動
- 在每個像素位置,計算對應像素點鄰域的直方圖,并對該鄰域進行直方圖均衡或直方圖匹配變換,變換的結果被應用于鄰域中心點的灰度;
- 鄰域的中心被移動到一鄰接像素的位置(an adjacent pixel location),并重復上述處理程序,
由于在鄰域像素到像素的平移(a pixel-to-pixel translation of the neighborhood)程序中,相對前一像素兩者的鄰域僅只有一行或一列發生了改變,可以使用在每個平移步驟中得到的新資料更新在前一位置獲得的直方圖,這種方式比區域每移動一個像素位置就計算并更新鄰域中所有像素的直方圖的方式有明顯優點(結合后文可以理解為優點是減少了計算量),有時用于減少計算量的另一種方式是使用非重疊區域(nonoverlapping regions),但這種方式通常會產生我們不希望的"棋盤"效應(“blocky” effect),
老猿注:上面這段話理解起來比較困難,是因為有些陳述句沒有詳細說清楚細節,老猿結合原版、中文以及背景關系等情況仔細進行理解如下:每移動一個像素,就針對該像素位置的鄰域的灰度進行直方圖變換,但最終只更新鄰域中心點的灰度值,translation 在此翻譯為平移而不是變換,是因為像素到像素是移動程序,不是二者的變換,而且結合背景關系這種翻譯才是準確的,平移到鄰域的下一鄰接點時,相對于當前點的行和列,鄰接點要么是改變了行號而列不變,要么是列號改變而行不變,按此要求,鄰域處理到影像的列邊界時,應該是往下一行而列不變,這與《數字影像處理:理解什么是卷積(濾波)、卷積核以及相關參考資料》介紹的卷積程序不同,在此暫且存疑,希望以后有機會明白和解釋,
三、區域直方圖均衡例子
圖3.26(a)顯示了一幅大小為512x512的8 位元影像,初看之下,該影像在灰色背景上包含5個黑色方塊,影像有輕微的噪聲(noisy),但是噪聲感覺不到(imperceptible),

圖3.26(b)顯示了全域直方圖均衡(global histogram equalization)的結果,當用直方圖均衡平滑的噪聲區域時,很容易導致影像的噪宣告顯地增強了(significant enhancement),然而,除了噪聲之外,圖3.26(b)與原影像相比并未顯示新的重要細節,只是不明顯地給出了左上方和右下方方塊中包含有一個物體,圖3.26?是使用大小為3x3的鄰域的區域直方圖均衡得到的,這里,我們看到了包含在暗色方塊中的物體(objects),這些物體的灰度值太接近大方塊的灰度,而且它們太小,全域直方圖均衡化不足以影響這些細節的顯示,
從這個例子可以看出,使用區域直方圖處理在某些情況下得到的效果是全域直方圖處理無法比擬的,
四、小結
本文介紹了區域直方圖處理的原理和概念,區域直方圖處理就是基于影像像素的鄰域進行直方圖處理,處理結果僅更新鄰域中心像素的灰度值,由于僅以鄰域進行直方圖的計算,每個像素的計算量會小很多,同時這種基于鄰域的直方圖處理,對影像的細節能起到很好的改變,
更多直方圖處理相關知識請參考《《數字影像處理》第三章學習總結感悟2:直方圖處理》,
更多影像處理請參考專欄《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/301621.html
標籤:其他
上一篇:ROS:兩個節點分別實作影像的發布與訂閱功能,以及在其中一個節點實作影像的預處理
下一篇:OpenCV-美食—巧克力濾鏡
