2024-09-11|閱讀時間 ‧ 約 24 分鐘

[OpenCV][Python]影像增強對比_自適應直方圖均衡化

    當影像中有雜訊時,使用直方圖均衡化來增強對比就會受雜訊的影響,從而影響到整體的結果。應對這個問題,可以考慮使用自適應直方圖均衡化來減少雜訊的影響,並增強對比度。

    本文將比較直方圖均衡化自適應直方圖均衡化的差異性。

    [OpenCV基礎][Python]影像增強_直方圖均衡處理


    直方圖均衡化的結果

    在原圖色彩較鮮艷的地方,灰階在增加後,明顯的對比就較強烈,這樣就會造成這些對比增強過多的輪廓外型的特徵就會相對的比較不清楚,例如下圖右上的位置,柱子一些特徵都消失了。

    自適應直方圖均衡化的結果

    相對的,自適應直方圖就沒受到雜訊的影響,進而影響到對比的增強

    兩者放一起比較

    是不是自適應直方圖均衡化表現較為出色呢。


    自適應直方圖均衡化 (CLAHE - Contrast Limited Adaptive Histogram Equalization)

    自適應直方圖均衡化是一種改進的直方圖均衡化方法,它將影像分為小區域(稱為「塊」或「窗口」),對每個小區域分別進行直方圖均衡化。

    為了避免雜訊放大,CLAHE 將對比度限制在一定範圍內。

    這種方法有助於避免全局直方圖均衡化放大局部雜訊的問題,特別適合影像中亮度變化劇烈或含有雜訊的情況。

    使用 CLAHE 的範例:

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt

    # 讀取影像,轉換為灰度圖
    image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

    # 創建 CLAHE (限制對比度的門檻值設定為 2.0,塊大小為 8x8)
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))

    # 應用 CLAHE 對影像進行自適應直方圖均衡化
    clahe_image = clahe.apply(image)

    # 畫出原始影像和自適應均衡化後的影像
    plt.figure(figsize=(10, 6))

    # 原始影像
    plt.subplot(1, 2, 1)
    plt.imshow(image, cmap='gray')
    plt.title('Original Image')
    plt.axis('off')

    # CLAHE 均衡化後的影像
    plt.subplot(1, 2, 2)
    plt.imshow(clahe_image, cmap='gray')
    plt.title('CLAHE Image')
    plt.axis('off')

    plt.tight_layout()
    plt.show()

    CLAHE 主要優勢:

    1. 局部增強:它針對影像的局部區域進行處理,可以避免傳統直方圖均衡化對整體影像的過度影響。
    2. 限制對比度:可以設置 clipLimit 來限制對比度增強的程度,這樣可以避免雜訊被過度放大。


    但還是要根據使用的情況跟需求,挑選適當的工具來做應用。

    假設今天是要看圖片中狗或者是福興下龍的圖案,若是圖片是曝光的狀態下,直方圖均衡的結果就會比CLAHE來的好。




    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.