0

現在取り組んでいるプロジェクトにフラッドフィルアルゴリズムを実装しています。私は通常の目的である画像編集に使用しています。基本的なアルゴリズムには問題はありませんが、見栄えの良い塗りつぶしが欲しいです。

多くの場合、私の画像の領域には、ほとんどが1色の領域がありますが、それらの領域は、わずかに明るいまたは暗いピクセルで縁取られています。これらの境界ピクセルを残さない「ファジー」フラッドフィルのアルゴリズムを知りたいのですが。すべてのピクセルを、元のピクセルの2つの異なる単純な距離メトリックで埋めようとしました。

  1. 赤、緑、青の3つの色成分すべてのマンハッタン距離
  2. カラーコンポーネント間の距離の最大値。

これらはどちらもうまくいきません。多くの場合、境界線を残し、視覚的に区別できるが「近い」色の隣接する領域を塗りつぶします。

私の問題を解決するための特効薬はないと思いますが、より良い結果を得るために試みる可能性のあるアルゴリズム、またはそのようなアルゴリズムを見つけるのに役立つ可能性がある場所を知りたいと思います。ネットを見回して、「ファジーフラッドフィル平均シフトアルゴリム」と呼ばれるものへの言及を見つけましたが、それが同じことでさえあるかどうかはわかりません。

4

3 に答える 3

0

元のピクセルではなく、ローカル ピクセルの品質を使用してみてください。異方性拡散フィルターのような効果を得ることができます。現在のピクセル (塗りつぶし内) と隣接ピクセルの間の勾配が十分に低い場合は、隣接ピクセルをキューに入れます。

于 2011-02-04T03:14:33.760 に答える
0

実際の距離を使用するのは当然のようです: D = Sqrt(R^2 + G^2 + B^2)

次に、テスト ピクセルが可能な元のピクセル (色空間内) からの最大距離を指定する許容値パラメーターを定義します。その値よりも大きい場合、そのピクセルから外側にあふれません。

許容範囲を 0 から Sqrt(255^2 + 255^2 + 255^2) まで微調整して、目的の効果が得られるようにします。

于 2011-02-04T02:20:09.423 に答える
0

単一の数値ではなく、範囲で許容値を設定する必要があります。たとえば、20% から 50% に変更すると、色の差が 20% になると、このピクセルの色が完全に変更されます。50% を超えると、このピクセルは塗りつぶされません。差が 20% から 50% の範囲にある場合、(d-t_min)/(t_max-t_min) の比率で古い色と新しい色をブレンドします。ここで、d は色差、t_max と t_min は許容範囲です。 (0...1 で表されます)。そのようなアルゴリズムが実装されたのを見たことがありません。多分私はそれを発明しただけです。

于 2013-07-01T10:37:26.057 に答える