質問

正確な背景色はわかっています。

緑の背景にアンチエイリアスフォントを想像してください。次に、画像の背景色を赤に変更します。

だから。"非バックグラウンド"を抽出するにはどうすればよいですか?ピクセルの色の一部を追加し、後で別のbg色の上に追加(または「ブレンド」)しますか?

フォントの色もわかっているので、どのピクセルが完全に不透明であるかがわかります。

役に立ちましたか?

解決

画像内のすべてのピクセルは、背景色、フォント色、またはこの2つのブレンドです。したがって、画像全体を背景RGB値、フォントRGB値、および0〜1の値の配列で指定できます。たとえば、0はピクセルが背景色、1はピクセルがフォント色であることを意味します。 0.1のような値は、ピクセルの大部分が背景色で、フォントの色が小さいなどを意味します。

次のような式:

blend_value = ((pixel.R - bg.R) / (font.R - bg.R)
              + (pixel.G - bg.G) / (font.G - bg.G)
              + (pixel.B - bg.B) / (font.B - bg.B)) / 3

は、画像内の任意のピクセルのこれらの値を提供します。新しい背景色を使用して新しいRGB値を作成するには、この値を使用して、フォントの色と新しい背景色をブレンドします。

new_pixel.R = blend_value * font.R + (1 - blend_value) * new_bg.R
new_pixel.G = blend_value * font.G + (1 - blend_value) * new_bg.G
new_pixel.B = blend_value * font.B + (1 - blend_value) * new_bg.B
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top