12

自然画像内のテキスト検出に関するエプシュテインの論文(ストローク幅変換を使用した自然シーン内のテキストの検出 (2010) ) を実装しようとしています。最初のステップはエッジ検出です。

テキスト内に余分なエッジがいくつかあります。それらをどのように削除すればよいですか?

元の画像:

ここに画像の説明を入力 私のエッジ検出: ここに画像の説明を入力

この例では、テキスト「WHY HURRY」に余分なエッジが表示されています。

Matlabで次の手順を試しました:

% contrast enhancement
I_adjust = imadjust(I);

% dilation & erosion
se = strel(ones(3,3));
I_dilate = imdilate(I_adjust, se);
I_final = imerode(I_dilate, se);

% gaussian smoothing
h_mask = fspecial('gaussian');
I_final = imfilter(I_final,h_mask);
figure; imshow(I_final);

BW_canny = edge(I_final,'canny');
figure; imshow(BW_canny);

問題#2:

ベリサリウスの提案によると、平均シフト フィルターはテキスト領域のセグメンテーションに非常に適していることがわかりました。今、ストローク幅変換の実装で別の問題に直面しています (エプシュテインの論文を見てください)。

Stroke Width は、'S' の場合でも 'H''Y' のような文字でうまく機能します。これは、グラデーションの方向に進むと、対応するエッジが通常一定の距離にあるためです。

問題は「W」のような文字で表示されます。1 番目のアップストロークの左端の一部に対して、対応するエッジとして2 番目のアップストロークの右端を取得します。一方、別の部分については、最初のアップストロークの右端を取得します。これにより、「W」の領域のストローク幅に大きなばらつきが生じ、論文によればこれを非テキスト領域と呼ぶことになります。

誰でも解決策を提案できますか?

4

2 に答える 2

10

Mean Shift Filterエッジ検出の前にを使用します。Mathematicaの例:

i = Import["http://img839.imageshack.us/img839/28/whyhurry.jpg"];
iM = MeanShiftFilter[i, 2, .15, MaxIterations -> 10]
EdgeDetect[iM]

出力:

ここに画像の説明を入力してくださいここに画像の説明を入力してください

于 2011-10-15T19:01:18.227 に答える
0

キャニー アルゴリズムに関するMatlab のドキュメントウィキペディアの記事を参照してedgeください。

edge(I, 'canny', thresh, sigma)より多くの制御を求めることができます。エッジの低しきい値と高しきい値をいじってみましょう。最初に高しきい値を下げてみます。内側のエッジは文字のエッジに接続されていないため、グラデーションの大きさは文字内の高しきい値を超える必要があります。

sigmaエッジ検出の前に画像をぼかすために値を大きくすることもできます。(ガウスぼかしは冗長edgeです。画像をぼかすためです。)

于 2011-10-15T19:36:45.550 に答える