2022年4月4日月曜日

【OpenCV】max/minによる比較明(暗)合成

画像処理ライブラリOpenCVmax/minにより2つの画像の比較明/暗合成ができる
OpenCVを使うには次のようにインポートが必要。

import cv2

また合成する画像 'yellow.png'(幅400ピクセルx高さ300ピクセル)、'purple.png'(幅400ピクセルx高さ300ピクセル) は以下

'yellow.png'



'purple.png'





1. 比較明合成/比較暗合成

maxminの書式は以下の通り。src1、src2の各画素値を比較して大きい方(max)/小さい方(min)の画素値からなる新しい画像を生成する。src1、src2は同じサイズでないといけない。比較はチャンネルごと実施される。

dst = cv2.max(src1, src2)
dst = cv2.min(src1, src2)

例の画像をmaxで合成する場合。yellow.pngの画素値は(B, G, R) = (0, 255, 255)、purple.pngの画素値は(B, G, R) = (255, 0, 255)で各チャンネルごとに大きい画素値が採用されるため、生成される画像は(B, G, R) = (255, 255, 255)、つまり白になる。

import cv2

src1 = cv2.imread('purple.png')
src2 = cv2.imread('yellow.png')
dst = cv2.max(src1, src2)

cv2.imwrite('max.png', dst)



例の画像をImageChops.darkerで合成する場合。yellow.pngの画素値は(B, G, R) = (0, 255, 255)、purple.pngの画素値は(B, G, R) = (255, 0, 255)で各チャンネルごとに小さい画素値が採用されるため、生成される画像は(B, G, R) = (0, 0, 255)、つまり赤になる。

import cv2

src1 = cv2.imread('purple.png')
src2 = cv2.imread('yellow.png')
dst = cv2.min(src1, src2)

cv2.imwrite('min.png', dst)


2. リファレンス

OpenCV > Operations on arrays > max()
OpenCV > Operations on arrays > min()

使用したバージョン:Python 3.8.12 / OpenCV 4.5.5

0 件のコメント:

コメントを投稿