它可以與反走樣有關。消除鋸齒的本質是越靠近邊緣(某物的邊界)越多的像素顏色與背景顏色混合(或者我們可以說它更「透明」)。 所以問題可能在於,您不僅需要將源顏色替換爲目標顏色,還需要將源顏色與背景顏色混合的像素。 要實現這一點,您需要:
1)某種運行邊緣檢測算法 - 它可能是simple或高級,只要你想。
2)如果像素是鄰近邊緣和像素附近的源顏色的其它像素,然後計算它的不透明度(1-透明度)因子,這將是
opacity = (pixel_color-background_color)/(source_color-background_color)
3)現在計算您的顏色您必須替換當前抗鋸齒像素:
new_color = background_color * (1-opacity) + opacity * target_color
,並把這個對new_color而不是抗鋸齒像素。
總結: 您需要檢測抗鋸齒像素並將其替換爲您的抗鋸齒像素版本。
算法最難的部分是檢測反鋸齒像素 - 因爲您無法確定是否以100%的概率發現所有邊緣像素。你也不能確定是像素抗鋸齒還是剛開始製造這種顏色)。正因爲如此,您可能會在最終產品中產生一些色彩噪音。但在任何情況下,它應該比坐下來等待:)
好運