自然画像内のテキスト検出に関するエプシュテインの論文(ストローク幅変換を使用した自然シーン内のテキストの検出 (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」の領域のストローク幅に大きなばらつきが生じ、論文によればこれを非テキスト領域と呼ぶことになります。
誰でも解決策を提案できますか?