OpenCV:圖像增亮與直方圖均衡


銳化

Snipaste_2021-01-12_23-20-13

左:去噪后銳化 中:原圖 右:直接銳化

不管是直接銳化,還是去噪后進行銳化,都會使得圖像的噪聲更加地嚴重,所以,去噪和銳化就先不做了,直接進行圖像增亮和非線性拉伸

增亮

Snipaste_2021-01-16_19-32-41

增亮使用加分進行增亮,防止乘法造成了像素值溢出。

  1. 利用opencv進行加法增亮時,有兩種操作:

    • 直接進行加法,該方法若超過255的像素會被取模,導致處理后像素值可能變低

    • 使用cv2.add進行加法,該方法若超過255,則任然等於255。所以我們的處理使用的是這個方法

  2. 亮度值的選擇

    分別嘗試了30、40、50、60、80、100的增亮,可以發現,當亮度增量值為30時候,可以比原圖看到更多的細節,且對比其他圖,不會有明顯的全局泛亮的效果,更有助於直方圖均衡。

自適應直方圖均衡

clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(16, 16))
img_his = clahe.apply(img_add)

主要有兩個超參數,一個是clipLImit決定均衡的閾值,一個是tileGridSize決定均衡的圖像patch大小

clipLimit調節

Snipaste_2021-01-16_19-46-37

  1. 當閾值設為太小時,如1,導致對比度不夠
  2. 當閾值設置太大時,如3和4,導致對比度太大
  3. 所以,選取了clipLimit=2.0作為第一個參數值

tileGridSize調節

Snipaste_2021-01-16_19-53-27

  1. 當該值設置太小時,對比度若一些,且取值4和8時候差別不大
  2. 當該值設置適當時,可以明顯看到局部的對比度不同,通過比較,我認為取32較為合適

最終效果圖

Snipaste_2021-01-16_19-56-46

彈性纖維處理效果 左圖:處理好 右圖:處理前

Snipaste_2021-01-16_19-58-27

膠原纖維處理效果 左圖:處理好 右圖:處理前

代碼

def img_enhanced(img, add=30, cliplimit=2.0, tilegridsize=32):
    img_add = cv2.add(img, add)
    clahe = cv2.createCLAHE(clipLimit=cliplimit, tileGridSize=(tilegridsize, tilegridsize))
    img_enhanced = clahe.apply(img_add)
    return img_enhanced


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM