私は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のページを参照してください