1

tess4Jを使用して、画像から7 セグメントのデジタルテキストを認識しようとしています。

私の入力はここにあります

ここに画像の説明を入力

次のようにいくつかの正規化を行いました

1] 画像はトリミングされています。

ここに画像の説明を入力

2 ]バイナリに変換しました

ここに画像の説明を入力

画像からテキストのギザギザのエッジを削除したいのですが、どうすればそれを達成できますか?

GitHub から別の訓練されたデータを試しました。しかし、私が望むように何も機能しません。

トレーニング済みデータを手動で作成するには? .

私はあなたの素晴らしい提案を待っています & 事前に感謝します. . . .

4

1 に答える 1

3

ソーベル フィルター (エッジを細くする) とガウス フィルター (画像をぼかす) の組み合わせを試すことができます。

Java での画像操作に使用している API を指定していませんでした。私はTess4Jに慣れていないので、Python から何ができるかを示します (Java での画像操作に好みのライブラリを使用できます。プロセスは同じであること):

import scipy
import scipy.misc
import scipy.ndimage.filters
import numpy

def save_image(img_data, counter):
    img_fn = "img_{}.jpg".format(counter)
    scipy.misc.imsave(img_fn, img_data)


if __name__ == "__main__":
    # This loads the second image of your post
    img_0 = scipy.misc.imread("TqO53.jpg")
    img_0 = scipy.average(img_0, -1) 
    #save_image(img_0, 0)

    # Obtain edges
    img_x = scipy.ndimage.filters.sobel(img_0, 0)
    img_y = scipy.ndimage.filters.sobel(img_0, 1)
    img_1 = numpy.hypot(img_x, img_y)
    #save_image(img_1, 1)

    # Remove edges from original image (i.e. thinning edges)
    img_2 = img_0 - img_1
    img_2[img_2 < 10] = 0 
    save_image(img_2, 2)

    # Blur image if you want to get rid of the sketchy borders
    img_3 = scipy.ndimage.gaussian_filter(img_2, sigma=1)
    save_image(img_3, 3)

これにより、次の画像が生成されます。

img_2.jpg

エッジを薄くした状態

img_3.jpg

ぼやけた

両方のタイプの画像を試して、どちらがTess4Jで良い結果をもたらすかを判断できます。数字がより簡単に認識できるため、エッジを細くした後に画像をぼかす必要がない可能性があります。

その後、必要に応じて、1 ピクセルの厚さになるまで整数を間引いてみることができます。多分それはTess4Jでうまくいくでしょう。

于 2015-03-09T04:53:04.873 に答える