Python OpenCVで画像のコントラストを上げるにはどうすればいいですか?質問する

Python OpenCVで画像のコントラストを上げるにはどうすればいいですか?質問する

私はPython OpenCVの初心者です。いくつかのドキュメントと回答を読みましたここしかし、次のコードが何を意味するのか分かりません。

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)  

ということが分かりましたBasically, every pixel can be transformed as X = aY + b where a and b are scalars.。基本的には理解できました。ただし、コードとこれでコントラストを上げる方法は理解できませんでした。

これまでは、画像を読み取るだけでimg = cv2.imread('image.jpg',0)

ご協力いただきありがとうございます

ベストアンサー1

私は、LABカラースペース

LAB カラー スペースは、3 つのチャネルにわたって色の変化を表現します。1 つのチャネルは明るさ用、2 つのチャネルは色用です。

  • Lチャンネル: 画像の明るさを表す
  • aチャンネル: 赤と緑の間の色の変化を表す
  • bチャネル: 黄色と青の間の色の変化を表す

以下では、L チャネルで適応型ヒストグラム均等化を実行し、結果の画像を BGR カラー スペースに戻します。これにより、明るさが向上しますが、コントラスト感度も制限されます。OpenCV 3.0.0 と Python を使用して次の操作を実行しました。

コード:

import cv2
import numpy as np

img = cv2.imread('flower.jpg', 1)
# converting to LAB color space
lab= cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l_channel, a, b = cv2.split(lab)

# Applying CLAHE to L-channel
# feel free to try different values for the limit and grid size:
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl = clahe.apply(l_channel)

# merge the CLAHE enhanced L-channel with the a and b channel
limg = cv2.merge((cl,a,b))

# Converting image from LAB Color model to BGR color spcae
enhanced_img = cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)

# Stacking the original image with the enhanced image
result = np.hstack((img, enhanced_img))
cv2.imshow('Result', result)

結果:

強調された画像は右側にあります

ここに画像の説明を入力してください

コードはそのまま実行できます。CLAHE (Contrast Limited Adaptive Histogram Equalization) が何であるかを知るには、このWikipediaのページを参照してください

おすすめ記事