「AlphaGenerator」に関する日記

AlphaGenerator

AlphaGeneratorのUIがいまいちな気がしたので、開く操作の簡略化のためエクスプローラからのドラッグ&ドロップに対応しました。
PictureBoxではAllowDropが隠されているというのに少し困りました。

無題

先日のαチャンネルと元の色を復元するプログラムはAlphaGeneratorという名前にすることにしました。
ひねりのないソフトだけにひねりのない名前です。
名前はともかくとして、先日の数式には問題がありました。
というのも、ブレンド結果は元の色OのRGB値それぞれに対して同一のα値を用いるためブレンド結果から単純に元の色が割り出せないのです。
で、ブレンド結果から直接ではなく、α値を求めてからその値を用いて元の色を算出します。
O = (CA*255 - BA*(255-A))/A

無題

任意の2色を背景とした2画像からαチャンネルと元の色を復元するプログラムを作っています。

α値があると想定した本来の画像において、
・元の色を共通でO(0~255)
・α値を共通でA(0~255)

背景色とブレンドした画像AとBにおいて、
・背景色をそれぞれBAとBB(0~255)
・ブレンド結果をそれぞれCAとCB(0~255)

とすると、
・CA = O*A/255 + BA*(255-A)/255
・CB = O*A/255 + BB*(255-A)/255

という連立方程式が成り立ちます。

これを解くと、
・O = (BA*CB - BB*CA)/(BA - BB - CA + CB)
・A = 255*(BA - BB - CA + CB)/(BA - BB)

となります。

この式を適用することで、
・元の色とα値は分からない
・背景色とブレンド結果は分かっている
という画像の元の姿が復元されるわけです。