アンチエイリアシングに関連している可能性があります。アンチエイリアシングの本質は、より多くのピクセルがエッジ (何かの境界) に近づくほど、より多くのピクセルの色が背景色とブレンドされることです (または、より「透明」であると言えます)。したがって、問題は、元の色を目的の色に置き換えるだけでなく、元の色から背景色にブレンドされたピクセルも置き換える必要があることです。これを達成するには、次のものが必要です。
1) ある種のエッジ検出アルゴリズムを実行します -必要に応じて、単純なものでも高度なものでもかまいません。
2) ピクセルがエッジの近くにあり、ピクセルがソース カラーの他のピクセルの近くにある場合、その不透明度 (1-透明度) 係数を計算します。
不透明度 = (pixel_color-background_color)/(source_color-background_color)
3) 現在のアンチエイリアス処理されたピクセルを置き換える必要がある色を計算します。
new_color = background_color * (1-不透明度) + opacity * target_color
そして、アンチエイリアス処理されたピクセルの代わりに、この new_color を配置します。
要約すると、アンチエイリアス処理されたピクセルを検出し、それらをアンチエイリアス処理されたピクセルのバージョンに置き換える必要があります。
アルゴリズムの最も難しい部分は、アンチエイリアス処理されたピクセルの検出です。これは、100% の確率ですべてのエッジ ピクセルを見つけたと確信できないためです。また、ピクセルがアンチエイリアス処理されているか、最初にそのような色で作成されたかどうかもわかりません)。このため、最終製品に色ノイズが発生する場合があります。しかし、いずれにせよ、ただ座って待つよりは良いはずです:)
幸運を