2011-01-06 8 views
0

Paint.netで同じルミノシティフィルタを適用したいPaint.NET光度フィルタをプログラムでどのように適用するのですか?

基本的に、光度成分を計算してゼロに設定します。

  • 変換のRGBをXYZにCIELab色にここで見つける式使用:ゼロにhttp://www.easyrgb.com/index.php?X=MATH
  • セット光度(L)コンポーネントを は、ここで私はこれまで試したものです。
  • XYZからRGBに変換する。

私はこの方法を使用して多くの問題がありました。場合によっては、RGBに変換すると、一部のコンポーネントが0〜255の範囲外になることがあります。また、y = 0の線のようにカーブを設定すると、正確なPaint.netの光度効果は得られません。

Paint.netはオープンソースではありません。あなたはそれが何を理解するのを助けてくれますか?

ありがとうございます。

P .:プログラムはC#で書かれています。

答えて

0

私は、単純にRGB値から定数を加算/減算していると思います。

R' = max(min(255, R+diff), 0); 
G' = max(min(255, G+diff), 0); 
B' = max(min(255, B+diff), 0); 

前述の方法を使用すると、より正確な結果が得られるはずです。 0-255の範囲外の値を取得することは期待されており、対処する必要があります。また、計算でガンマ補正を考慮する必要があります。