ぷれまるち

| コメント(2) | トラックバック(0)

コメントでは長すぎるかと思ったのでここで

ねこら対策研究要塞日誌@はてな:PSDの透明度の扱い...50%+50%=100% ?

統合画像データの色データは、白を背景に統合されてしまってるから戻さないと。面倒くさそう。白でなくて黒を背景に統合してくれれば良かったものを…。

そこで件のアルファプレマルチプライの技ですよ。

処理前の統合画像にアルファチャンネルを乗算して、黒くしてからスムージングするのです。

DistRGB = SourceRGB * (Alpha/MaxAlpha)

×

これを、こんなふうにしてから処理

フォトショップのアルファは、(たしか)ストレートのはずなので、
そのあと、スムージング済のアルファで除算してやれば、ストレートアルファのレイヤ画像
÷

が「いっちョ上がり」なのです。

フォトショップ・アルファを剥ぐとこんなデータ…のはず。周囲は黒(0)かもしれませんが、どのみちアルファで切れるので無視しちゃう…まずいかな?

途中、ゼロ除算が当然のようバシバシ発生するので、先に判定して例外として「白(黒でも)」にしてハネといて下さいね。1の除算も当然意味がないのでスキップです(こっちはほっといても実害はないですが)。

  • アルファ同士が重なっていたら、やはり掛け算(系)では? アルファの補数を掛けて反転するのです。アルファ同士をスクリーン合成したものと同じはず。 (100%-(100%-50%)*(100%-50%)) = 75% ←こんな風青いのがアルファ

  • フォトショップのマルチレイヤを1つに結合するのは、描画モードが「通常」の時以外は…
  • アルファルつきPSDのレイヤを直接スムージングすると、アルファ沿いのフリンジが出るかも。ストレートならば…
  • たしか、TIFFには、プレマルチとストレートの両方のアルファが認められていたはず。タグに書いてあると思うが今は手元に資料がない。ライブラリで吸収できるのでしょうか?処理が変わるので、処理できない方は、ハネといた方がよいかと思います。黒線だと目立たないはずですけど。

    直接データを加工するコーディングは、もう10年以上やってない、レイヤー回りは、さらによくわからない。
    またやりたいような気もするけど、今は、「りまぴん」が先

    あれ?ひょっとしたらこの件じゃない…かな? 違ってたら堪忍してくださいね。

  • トラックバック(0)

    トラックバックURL: http://www.nekomataya.info/mt/mt-tb.cgi/504

    コメント(2)

    こんばんわ!
    うーむ。イマイチその存在意義が謎だったアルファプレマルチプライモードはこういう時に使うんでしたか。実例まで見せて頂き勉強になりました。
    あと、α同士の計算式、ありがとうございます。
    TIFFはWindowsAPIで書き出すので、ストレートのみみたいです。

    いらしゃい
    役に立って何よりです。

    「プレマルチプライ」 こんなふうにも使えます。

    ええと、本来は…確認してないですが、たぶん合成時の計算をあらかじめ済ませておくための手法なんだと思ってます。

    アルファ合成は計算上

    (下絵×(アルファ反転))+(上絵×アルファ)

    なので、どうせ乗算するなら「あらかじめアルファとレイヤを掛けてファイルに格納」しておけば合成時の計算時間が「ほぼ半分近くまで減る」って算段 なのだと勝手に予想してます。
    アルファ付きビデオとかだと劇的に早く(軽く)なりそうなカンジがしますです。

    でも、通常合成以外の(BLが中性色でない)モードでは計算量が増えるかも?…ぶつぶつ


    ではまた

    コメントする