5

私はいくつかの適応二値化方法を実装しました。それらは小さなウィンドウを使用し、各ピクセルでしきい値が計算されます。これらの方法には問題があります。選択したウィンドウ サイズが小さすぎると、この効果が得られます (理由は、ウィンドウ サイズが小さいためだと思います) (ソース: piccy.info )代替テキスト

左上隅には元の画像があり、右上隅にはグローバルしきい値の結果があります。左下 - 画像をいくつかの部分に分割する例 (ただし、サイズ 10X10 のウィンドウなど、画像の小さな周囲のピクセルを分析することについて話している)。このようなアルゴリズムの結果を右下の写真で見ることができます。黒い領域がありますが、それは白いに違いありません。この問題を解決するためにアルゴリズムを改善する方法を知っている人はいますか?

4

4 に答える 4

2

適応しきい値処理が間違っているようです。画像は、画像を小さなブロックに分割し、各ブロックのしきい値を計算して、そのしきい値をブロック全体に適用したかのように見えます。それは「ボックス」アーティファクトを説明するでしょう。通常、適応しきい値処理とは、各ピクセルのしきい値を個別に見つけ、そのピクセルを中心に別のウィンドウを配置することを意味します。

別の提案は、照明のグローバル モデルを構築することです。サンプル画像では、最小二乗法を使用して平面 (X/Y/明るさ空間) を画像に適合させ、ピクセルを次のように分割できると確信しています。ピクセルが明るく (前景)、その平面よりも暗い (背景)。次に、別々の平面を背景ピクセルと前景ピクセルに合わせ、これらの平面間の平均を使用して再度しきい値を設定し、セグメンテーションを繰り返し改善できます。それが実際にどれだけうまく機能するかは、線形モデルで稲妻をどれだけうまくモデル化できるかにかかっています。

セグメント化しようとしている実際のオブジェクトが「より薄い」場合 (コメントでバーコードについて何か言った場合)、照明モデルを取得するための簡単な開閉操作を試すことができます。(つまり、画像を閉じて前景ピクセルを削除し、[閉じた画像 + X] をしきい値として使用します)。

または、平均シフト フィルタリングを試して、前景と背景のピクセルを同じ明るさにすることもできます。(個人的には、最初にそれを試してみたい)

于 2010-02-20T08:49:23.313 に答える
2

この分野ではかなり多くの研究が行われているはずですが、残念ながら私には良いリンクがありません。

うまくいくかもしれませんが、私はテストしていませんが、照明の変動を推定してから、しきい値処理の前にそれを削除しようとすることです (これは「二値化」よりも適切な用語です)。次に、問題は適応しきい値処理から適切な照明モデルの検索に移されます。

光源について何か知っていれば、もちろんそこからモデルを作成できます。

それ以外の場合は、非常に重いローパス フィルターを画像に適用して (ぼかして)、それを照明モデルとして使用します。次に、元の画像とぼかしたバージョンの差分画像を作成し、それをしきい値処理します。

編集:簡単なテストの後、私の「クイックハック」は実際にはまったく機能しないようです。それについて考えた後、私もあまり驚かない:)

I = someImage
Ib = blur(I, 'a lot!')
Idiff = I - Idiff
It = threshold(Idiff, 'some global threshold')

EDIT 2 画像の生成方法に応じて機能する可能性のある別のアイデアを1つ得ました。画像の最初の数行から照明モデルを推定してみてください。

  1. 画像の最初の N 行を取る
  2. 収集された N 行から平均行を作成します。バックグラウンド モデルとして 1 つの行があることがわかります。
  3. 画像の行ごとに、背景モデル行 (平均行) を減算します。
  4. 結果の画像をしきい値処理します。

残念ながら、私は家にいて、これをテストするための優れたツールがありません。

于 2010-02-17T19:31:48.003 に答える
1

次の手順を使用して、ローカルの適応しきい値を適用してみてください。

  1. 平均または中央値フィルターで画像をたたみ込む
  2. 畳み込み画像から元の画像を差し引く
  3. 差分画像のしきい値

ローカル適応しきい値法では、各ピクセルの個々のしきい値が選択されます。

私はこのアプローチを広範囲に使用していますが、背景が均一でない画像でも問題なく機能しています。

于 2010-10-01T12:07:11.890 に答える
1

非常に不均一な照明とかなり大きなオブジェクトがあります (したがって、背景を抽出して不均一性を修正する普遍的な簡単な方法はありません)。これは基本的に、グローバルしきい値をまったく使用できないことを意味し、適応しきい値が必要です。

Niblack の 2 値化を試してみたい。Matlab コードは、 http: //www.uio.no/studier/emner/matnat/ifi/INF3300/h06/undervisningsmateriale/week-36-2006-solution.pdf (4 ページ) から入手できます。手動で調整する必要がある 2 つのパラメーターがあります。ウィンドウ サイズ (上記のコードでは N) と重みです。

于 2010-02-25T17:10:00.777 に答える