私は、ユーザーが画像の色の一部、たとえばティーカップを触れることで変更できるiOSアプリケーションを開発しています。色を塗りつぶすためにFloodfillアルゴリズムを使用しているため、ユーザーは色を変更するためにティーカップをタップする必要があります。それはうまくいきます。しかし、最終的な色は置換色とは少し異なって見えます。私はオブジェクトの(ティーカップ)の色を選択した色に変換するより良いロジックを見つけるためにいくつかの問題があります。その彩度は明るさ&です。イメージカラーリングロジック/アルゴリズムの改善
次のロジックを使用して結果の色を取得しています。私は色を(色相、彩度、値)と表現しています。
touchedColor = (tchd_h, tchd_s, tchd_v); // I am not using this now
pixelColor = (old_h, old_s, old_v);
replacementColor = (new_h, new_s, new_v);
resultColor = (new_h, new_s, old_v);
pixelColor = resultColor;
カップ塗装前(赤色で丸で囲みました)。
選択replacementColor。
カップreplacementColor(赤い色で丸で囲んだ)を塗装後。
上記最終画像を参照してください。私はちょうどのみ色相&彩度、およびない値の pixelColorを変更していますと、適用されるカラーは、選択replacementColorに似ていません。イメージの明度は変更されません。
私は値を変更した場合色相&彩度このようなとともに、その後
resultColor = (new_h, new_s, new_v);
pixelColor = resultColor;
カップになっフラット色、ライトにこのような&色合い、
を逃します
上記のロジックを調整して、ピクセルの色を一致する置換色に変更する考えが必要です。 飽和度&値を導き出す式があります。
あなたが間違っていると思われる例を表示することはありますか?基本的な前提に問題は見られません。 –
@マークランソム、はい、私は画像で私の質問を更新しました。 – EmptyStack