8

CのOpencvを使用して、グレースケールの画像のコントラスト/明るさを調整して、その画像の白を強調しようとしています。どうすればよいですか?opencvでこのタスクを実行する関数はありますか?

元の画像:

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

変更された画像:

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

前もって感謝します!

4

3 に答える 3

11

ここでは、次の 2 つの方法でコントラストを調整できると思います。

1)ヒストグラム均等化:

しかし、あなたの画像でこれを試してみると、結果は期待どおりではありませんでした。以下で確認してください。

ここに画像の説明を入力

2)しきい値処理:

ここで、 i は入力の各ピクセル値を任意の値 ( i が取った127) と比較しました。以下は、opencv に組み込み関数を持っているロジックです。But remember, output is Binary image, not grayscale as you did.

If (input pixel value >= 127):
    ouput pixel value = 255
else:
    output pixel value = 0

そして、以下は私が得た結果です:

ここに画像の説明を入力

これには、しきい値関数または比較関数を使用できます

3)出力としてグレースケール画像を取得する必要がある場合は、次のようにします

(コードは OpenCV-Python ですが、すべての関数について、対応する C 関数は opencv.itseez.com で入手できます)

for each pixel in image:
   if pixel value >= 127: add 'x' to pixel value.
   else : subtract 'x' from pixel value. 

(「x」は任意の値です。)したがって、明るいピクセルと暗いピクセルの差が大きくなります。

img = cv2.imread('brain.jpg',0)

bigmask = cv2.compare(img,np.uint8([127]),cv2.CMP_GE)
smallmask = cv2.bitwise_not(bigmask)

x = np.uint8([90])
big = cv2.add(img,x,mask = bigmask)
small = cv2.subtract(img,x,mask = smallmask)
res = cv2.add(big,small)

そして、以下が得られた結果です。

ここに画像の説明を入力

于 2012-05-11T13:01:48.553 に答える