1

最初に、私は画像処理、NN、dllについて自分でほんの数週間学んだので、私は本当にプロにはほど遠いです。n私の悪い英語でごめんなさい。

私の絵の画像や写真があります。オブジェクト/形状(黒い点)の座標をその周りの数字で取得したいと思います。数字はドットのシーケンス番号を示します。

画像

どうやって入手するの?ドットを検出する方法は?ドットの形状認識?数字の手書き認識?次に、位置を取得するためのセグメンテーション?または、テンプレートマッチングを使用しますか?しかし、手描きのため、すべてのドットの形は少し異なります。ニューラルネットワークを使用しますか?NNでは、ニューロンは通常、文字を認識するためにすべてのピクセルを含んでいますよね?各ニューロンに含まれる文字または描画ドットの画像を使用して、画像全体を認識できますか?

私はとても新しいので、本当にあなたのアドバイスが必要です、私が間違っているなら私を訂正してください!何を学ばなければならないか、何をしなければならないか、何を使わなければならないかを教えてください。どうもありがとうございます。:'D

4

1 に答える 1

2

これは難しい問題であり、迅速な解決策では解決できません。

これが私がそれにアプローチする方法です:

  1. より良い画像を取得します。画像は非常にノイズが多く、暗い場所で高ISOで撮影されています。より良いカメラとより良い照明条件を使用して、背景をできるだけ白にし、ドットをできるだけ黒にすることができます。コントラストを最大化してみてください。
  2. すべての背景が白になり、ドットと数字が黒になるように、画像のしきい値を設定します。たぶん、あなたはいくつかの侵食および/または拡張を適用して、暗いエッジを一緒に接続するのを助けることができます。
  3. なんらかの方法で長方形を検出し、作業領域を長方形の内側に設定します(長方形の内側の領域が残るように、画像の残りの部分をトリミングします)。これを行うには、画像内の輪郭を検出します。次に、最大の面積を持つ輪郭が長方形になります(画像内で最大のオブジェクトであるため)。もちろん、これが唯一の方法ではありません。これを参照してください:OpenCVは輪郭を見つけます
  4. ドット、円、数字だけが残ったら、それらを検出して区別する方法を見つける必要があります。再びすべての輪郭を見つけることができます(または、前の手順ですべてを見つけた可能性があります)。特定の輪郭が円、塗りつぶされた円(ドット)、または数字であるかどうかを確認する方法を理解する必要があります。これはそれ自体が問題です。輪郭のバウンディングボックスの白/黒のピクセルを数えることができるかもしれません。ドットには、円や数字よりも多くの黒いピクセルがあります。また、ドットにつながる数字についても何かをする必要があります(画像の数字5など)
  5. ドット、円、または数字がわかったら、OCRライブラリ(Tesseractまたはその他のOCR lib)を使用して数字を認識しようとします。ニューラルネットワークライブラリ(おそらくMNISTデータセットでトレーニングされている)を使用して数字を認識することもできます。良いものは、LeNet-5に似た畳み込みニューラルネットワークです。

ご覧のとおり、これは解決するために多くの異なるステップを必要とする問題であり、多くの異なるコンポーネントが関係しています。私が提案した手順は最善ではないかもしれませんが、いくつかの作業で解決できると思います。

于 2013-03-23T09:07:00.500 に答える