1

2つの画像を一緒に追加しようとしています。

ここに画像の説明を入力

ここに画像の説明を入力

GIMPでこれを行うと、「追加」レイヤーモードを使用して、次の目的の出力が得られます。 ここに画像の説明を入力

現在、これを Python で実行しようとしていますが、うまく動作させることができません。gimpのドキュメントによると、私が理解している限り、加算の式は単純に各ピクセルの加算であり、最大255に設定されています.

加算モードの式: E = min(( M + I ), 255)

これを Python に適用しようとしましたが、出力が異なって見えます。Pythonでgimp追加レイヤーブレンディングモードと同じ出力を得るにはどうすればよいですか?

私の試み:

# Load in the images
diffuse = cv2.imread('diffuse.png')
reflection = cv2.imread('reflection.png',)
# Convert BGR to RGB
diffuse = cv2.cvtColor(diffuse, cv2.COLOR_BGR2RGB)
reflection = cv2.cvtColor(reflection, cv2.COLOR_BGR2RGB)
# Covnert to uint64 so values can overflow 255
diffuse = diffuse.astype('uint64')
reflection = reflection.astype('uint64')
added = diffuse + reflection # actually add
# clamp values above 255 to be 255
added[added > 255] = 255

# display 
im = Image.fromarray(added.astype('uint8'))
im.save('blended_python.png')

さて、これはかなり似ているように見えますが、実際にはGIMPの追加に比べて明るすぎます. 両方を新しいタブで開き、alt+tab で開くだけで、違いが明らかになります。
ここに画像の説明を入力

GIMP とまったく同じ結果を得るにはどうすればよいですか? Python-fu または gimp バッチ レンダリングを使用しようとしましたが (このようにブレンドしたい画像が何千もあるため)、それも機能しませんでした。

4

1 に答える 1