cv2在影像上的應用-續2

qiuwenzheng發表於2024-06-21

接上篇,255值剃平頭法原文稱為線性變換,只能說是區間線性,其第二個“直方圖正規化”方法稱為全線性是合適的,只是“直方”是見不著的,其原理是假設圖片的灰度值是n-m之間,而8位灰度值的最大區間是0-255,就按比列把畫素灰度值略膨脹到較大的區間即可,值就不會大於255,計算公式是畫素q=(255-0)/(m-n)*(p-n),此法問題在於圖片的大小灰度值一般都接近於0-255,膨脹係數小致效果不明顯

第三個伽馬變換,把每個畫素點的灰度值除以255得到0~1之間的小數,再開方(值差變大,對比度增加)或者平方(值差變小,對比度減少),還發現imshow方法可以直接轉換小數到8位元組整數,而不必使用astype轉成np陣列,轉也是可以的,就是需對每個畫素點乘以255再轉,如圖箭頭指向的註釋程式碼,得益於代數演算法的曲線化,執行程式碼可以見到影像變得更加渾然

第四個,直方圖均衡化,著實是驚喜,只是怎麼也看不出來直方在哪裡,均衡又在哪裡。其實質是統計所有畫素點在灰度0-255的分佈,再按灰度0-255順序遞增疊加,就是p灰度是所有0-p灰度數量的總和,再把所得的遞增表除於畫素總數還原得到0-255之間的畫素值,再生成影像。以吾當前的認知著實理解不了畫素點灰度遞增在展示圖片細節的實質,但效果驚人:

從示例圖可以見到,黑暗中原本不易察覺的細節都展示了出來,呈現出可見光波段外顯影的效果,就像透視鏡或夜視儀一般。

原文cofficient程式碼:

修改了的genuine程式碼:

原文程式碼使用cofficient稍顯複雜,就自行修改為genuine,如圖,但原理是一樣的,都是遞增分佈除以畫素點總數,是否原始碼效果更新,一時也比較不出來,修改後呈現的效果也足夠出色。縱觀superme博主推文,內容上看是自帶刷子的,貼出程式碼是可驗證的,就是有一些參差,比如這段imshow的竟然是原影像image,或錯或漏了equalHistimg,以其段位留了這個彩蛋。

相關文章