1

色を失うことなくビットマップにエンボスとスケッチ効果を適用したい。色効果を適用しましたが、エンボスはまだうまくいきません。

体はそれに対する解決策を持っていますか?助けてください

4

3 に答える 3

0

グレーのエンボスを処理したら、エンボスの結果に従って画像ピクセルのアルファ値を設定できます。

于 2013-02-24T10:39:29.773 に答える
0

2つの操作と考えてください。最初に、グレーのエンボス画像を生成します (これを達成したとします)。次に、元の画像とエンボス画像の間で混合操作を実行して、カラーのエンボス画像を作成します。どの形式の操作を使用するかについて、唯一の正しい選択はありません。それはあなたが達成したい効果に帰着します。

カラー画像(R、G、B)とグレーのエンボス画像(E)があり、各コンポーネントがバイトであると仮定して作業する場合。これにより、(各ピクセルに対して) 0..255 の範囲の 4 つの値が得られます。

エンボスの暗い領域をより暗く表示し、明るい領域をより明るく表示したい場合があるため、グレーレベルを中央に配置すると便利です。

w=(E/128)-1; // convert 0..255 range to -1..1

w が負の場合は暗くなり、w が正の場合は明るくなります。

outputR = R + (R*w);
outputG = G + (G*w);
outputB = B + (B*w);

これにより、w が - 1 の場合は黒になり、w が 1 の場合は明るさ (R*2、G*2、B*2) が 2 倍になります。これにより、色付きのエンボス効果が生成されます。ただし、結果を 0..255 に制限することを忘れないでください。それがより高くなれば、それを上限にします。もし (x>255) x=255;

それは色をきれいに保持するはずですが、あなたが求めているものとは正確には異なるかもしれません. エンボス画像の白を 2 倍以上にしたい場合は、別の式を試すことができます。

outputR = R * (10**w);   // w==0 has no effect
outputG = G * (10**w);   // w==1 is 10 times brighter
outputB = B * (10**w);   // w==-1 is 0.1 brightness

さらに多くの可能性があります。RGB をYUVに変換してから、エンボスの変更を Y コンポーネントに直接適用できます。次に、RGB に変換します。

正しい選択は、最適な処方よりも好みの問題です。

于 2013-02-25T00:53:20.933 に答える