14

私は OpenCV を使用していくつかの画像を処理しています。最初に実行する必要がある手順の 1 つは、カラー画像の画像コントラストを上げることです。これまでに見つけた最速の方法は、元の C ベースの cv1 docsで提案されているように、このコード (np は numpy インポート) を使用して乗算および加算します。

    if (self.array_alpha is None):
        self.array_alpha = np.array([1.25])
        self.array_beta = np.array([-100.0])

    # add a beta value to every pixel 
    cv2.add(new_img, self.array_beta, new_img)                    

    # multiply every pixel value by alpha
    cv2.multiply(new_img, self.array_alpha, new_img)  

Pythonでこれを行うより速い方法はありますか? 代わりに numpy のスカラー乗算を使用してみましたが、実際にはパフォーマンスが低下します。私も使用してみcv2.convertScaleAbs ました (OpenCV のドキュメントでは の使用convertToが推奨されていましたが、cv2 にはこの関数へのインターフェイスがないようです) が、テストではやはりパフォーマンスが低下しました。

4

3 に答える 3

21

このコードを試してください:

import cv2

img = cv2.imread('sunset.jpg', 1)
cv2.imshow("Original image",img)

# CLAHE (Contrast Limited Adaptive Histogram Equalization)
clahe = cv2.createCLAHE(clipLimit=3., tileGridSize=(8,8))

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)  # convert from BGR to LAB color space
l, a, b = cv2.split(lab)  # split on 3 different channels

l2 = clahe.apply(l)  # apply CLAHE to the L-channel

lab = cv2.merge((l2,a,b))  # merge channels
img2 = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)  # convert from LAB to BGR
cv2.imshow('Increased contrast', img2)
#cv2.imwrite('sunset_modified.jpg', img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

前の日没: ここに画像の説明を入力 コントラストを上げた後の日没: ここに画像の説明を入力

于 2017-06-15T13:57:57.413 に答える