合成モードの計算式について
このサイトで合成モードの計算式を説明するときの約束事です。 $ X_1に$ X_2を合成します。
$ X_1が背面,$ X_2が前面ということです。
単に$ \textrm{R}の式だけが書いてあった場合、$ \textrm{G}や$ \textrm{B}にも同様の操作をするという意味です。
値は$ [0,1] に正規化しています よく$ [0,255] で表しますが,ここでは255で割ってあげてください(計算式が簡単になります)。
ただしグラフは$ [0,255] にしておきました(ここは何にしても本質は変わらない)。
YCbCrは、$ \textrm{Y} [0,4096] を$ [0,1] に、$ \textrm{Cb},\textrm{Cr}[-2048,2048] を$ [-0.5,0.5] にマップしています。
不透明度$ \sout{\textrm{A}_1,\textrm{A}_2}が1以外である場合は、次のように計算をします($ \sout X_1は背面の色$ \sout X_2は不透明度を考慮しない計算の結果)。
$ \sout{\textrm{A}=1-(1-\textrm{A}_1)(1-\textrm{A}_2)}
$ \sout{X=\frac{\textrm{A}_1(1-\textrm{A}_2)}{\textrm{A}}\cdot X_1+\frac{\textrm{A}_2}{\textrm{A}}\cdot X_2}
特に$ \sout{\textrm{A}_1=1}のとき
$ \sout{X=(1-\textrm{A}_2)X_1+\textrm{A}_2X_2}
不透明度$ \textrm{A}_1,\textrm{A}_2が1以外である場合は、次のように計算をします($ X_1は背面の色 $ f(\textrm{dst},\textrm{src})は不透明度を考慮しない計算)。
$ \textrm{A}=1-(1-\textrm{A}_1)(1-\textrm{A}_2)
$ X=\frac{\textrm{A}_1(1-\textrm{A}_2)}{\textrm{A}}\cdot X_1+\frac{\textrm{A}_2}{\textrm{A}}\cdot f(X_1\cdot A_1, X_2)
特に$ \textrm{A}_1=1のとき
$ X=(1-\textrm{A}_2)X_1+\textrm{A}_2\cdot f(X_1\cdot A_1, X_2)
このようなグラフの画像を一緒に掲載しています。
https://gyazo.com/3cbdd45a6caac5b46abec7f5ecd59774
同じ値の部分を赤い線で繋いでいます。等高線のようなものです。