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 バッチ レンダリングを使用しようとしましたが (このようにブレンドしたい画像が何千もあるため)、それも機能しませんでした。