車のナンバヌプレヌトの詳现な認識

画像

番号認識アルゎリズムの実装がどのように機胜するかを詳现に説明するずきが来たした。これが良い解決策であるこずが刀明したした。 そしお、Habr-usersに報告するために-結局のずころ、 Recognitor Androidアプリケヌションを䜿甚しお、撮圱方法ず撮圱方法を説明せずに、完党に公平に撮圱された数字のショットの適切なサむズのデヌタ​​ベヌスを取埗するのに圹立ちたした。 そしお、認識アルゎリズムを開発する際の画像の基盀は最も重芁です





Recognitor Androidアプリケヌションで䜕が起こったのか


Habrのナヌザヌがアプリケヌションをダりンロヌドし、詊しお、数字を送っおくれたこずはずおも嬉しかったです。



画像

プログラムのダりンロヌドず評䟡



アプリケヌションがアップロヌドされおから、モバむルアプリケヌションから3,800個の数字のスナップショットがサヌバヌに届きたした。

さらに、リンクhttp://212.116.121.70:10000/uploadimageに満足したした。2日間で、玄8,000枚のフルサむズのナンバヌプレヌト䞻にVologdaの写真が送られたした。 サヌバヌはほずんど嘘を぀いおいたした。



珟圚、12,000枚のスナップショットが手元にありたす-アルゎリズムのデバッグに関する巚倧な䜜業が埅ち受けおいたす。 すべおの楜しみはただ始たったばかりです



Androidアプリケヌションでは、以前に番号が割り圓おられおいたこずを思い出させおください。 この蚘事では、この段階に぀いおは説明したせん。 この堎合、 カスケヌドHaar怜出噚です。 フレヌム内の数倀が匷く回転しおいる堎合、この怜出噚は垞に機胜するずは限りたせん。 蚓緎されたカスケヌド怜出噚が機胜しない堎合の動䜜の分析に぀いおは、次の蚘事に進みたす。 これは本圓に面癜いです。 これはブラックボックスのようです-圌らは怜出噚を蚓緎し、䜕もしたせん。 これは実際にはそうではありたせん。



ただし、蚈算リ゜ヌスが限られおいる堎合は、カスケヌド怜出噚が適切なオプションです。 車の番号が汚れおいる堎合やフレヌムが芋えにくい堎合、Haarは他の方法に察しおも優れたパフォヌマンスを発揮したす。



番号認識



この皮の写真のテキストを認識するストヌリヌは次のずおりです。



画像

䞀般的な認識アプロヌチは、 最初の蚘事で説明されたした。



最初に、パヌスペクティブ番号によっお汚れ、郚分的に消去され、ひどく歪んだ認識をするタスクを蚭定したした。

第䞀に、それは興味深いこずであり、第二に、きれいなものは䞀般的に100のケヌスで機胜するず思われたした。 通垞、これは圓然のこずです。 しかし、うたくいきたせんでした。 ダヌティな数倀の成功率が88の堎合、クリヌンな数倀の堎合、たずえば90であるこずが刀明したした。 実際、モバむルアプリケヌションの写真から成功した回答たでの認識の確率は、もちろん、この数字よりもさらに悪いこずが刀明したした。 着信画像の50未満ナヌザヌが写真を撮ろうずしないようにするため。 ぀たり 平均しお、数字を正垞に認識するために2回撮圱する必芁がありたした。 倚くの点でこの䜎い割合は、倚くの人が実際の状況ではなく、モニタヌ画面から数字をレンタルしようずしたずいう事実によるものです。



アルゎリズム党䜓がダヌティナンバヌ甚に構築されたした。 しかし、モスクワの倏には、10宀䞭9宀が完党に枅朔であるこずが刀明したした。 そのため、戊略を倉曎し、2぀の別個のアルゎリズムを䜜成する方が適切です。 クリヌンな数倀を迅速か぀確実に認識できた堎合、この結果がナヌザヌに送信されたす。それが䞍可胜な堎合、プロセッサ時間をもう少し費やし、ダヌティな数倀に察しお2番目のアルゎリズムを実行したす。



すぐに実装する必芁がある単玔な番号認識アルゎリズム


きれいな郚屋を認識する方法は これはたったく難しいこずではありたせん。



このようなアルゎリズムには次の芁件がありたす。



1ある皋床のコヌナリング抵抗±10床

2小芏暡な倉曎に察する耐性20

3フレヌムの境界線たたは単玔に衚珟が䞍十分な境界線で数字の境界線を切り萜ずすこずは、すべおを台無しにするべきではありたせん汚れた数字の堎合、数字の境界線に頌らなければならないため、これは基本的に重芁です。数字がきれいな堎合、数字/文字よりも優れおいるこずはありたせん番号。



したがっお、きれいで読みやすい数字では、すべおの数字ず文字が互いに分離可胜であるため、画像を二倀化し、関連する領域を圢態孊的に遞択するか、よく知られおいる茪郭関数を䜿甚できたす。



フレヌムを二倀化する



ここでは、ミッドレンゞフィルタヌを調べお画像を正芏化する䟡倀がありたす。

画像

画像は、明確にするために最初は䜎コントラストのフレヌムを瀺しおいたす。



次に、固定のしきい倀で2倀化したす画像は正芏化されおいるため、しきい倀を修正できたす。



フレヌム回転仮説



画像のいく぀かの可胜な回転角床を想定したす。 たずえば、+ 10、0、-10床



画像



将来的には、この方法は数字や文字の回転角床に察する抵抗がほずんどなくなるため、10床の角床でこのような十分に倧きなステップが遞択されたした。

将来的には、各フレヌムを個別に凊理したす。 最適な結果が埗られる回転仮説が勝ちたす。



そしお、すべおの関連゚リアを収集したす。 ここでは、OpenCVの暙準のfindContours関数を䜿甚したした。 接続された領域茪郭のピクセル単䜍の高さがH1からH2で、幅ず高さがK1からK2の比率で関連付けられおいる堎合は、フレヌム内に残しお、この領域にサむンがあるこずに泚意しおください。 ほが確実に、この段階では数字ず文字のみが残り、残りのゎミはフレヌムを離れたす。 茪郭を囲む長方圢を取り、それらを同じスケヌルに合わせおから、各文字/数字を個別に凊理したす。



以䞋は、芁件を満たす茪郭の境界矩圢です。

画像



文字/数字



画質は良奜で、すべおの文字ず数字は完党に分離可胜です。そうでなければ、このステップには到達したせんでした。

すべおの文字を同じサむズ20x30ピクセルなどにスケヌリングしたす。 ここにありたす

画像

ちなみに、Resizeを実行するず20x30に瞮小した堎合、2倀化された画像は補間のためにグラデヌションに倉わりたす。 二倀化を繰り返す必芁がありたす。



そしお今、既知の暙識画像ず比范する最も簡単な方法は、XORHamming Normalized Distanceを䜿甚するこずです。 たずえば、次のように



距離= 1.0-|サンプルXOR画像| / |サンプル|



距離がしきい倀よりも倧きい堎合は、兆候が芋぀かったず考えられたすが、それよりも少なくなりたす。



文字番号番号番号番号文字



はい、この圢匏でロシア連邊の自動車暙識を探しおいたす。 ここでは、数字の0ず文字「o」、数字の8ず文字「c」はたったく区別できないこずを考慮に入れる必芁がありたす。 すべおの蚘号を巊から右に䞊べお、それぞれ6文字ず぀入力したす。

時間の基準-文字-数字-数字-数字-文字-文字0 / o、8 / inに぀いお忘れないでください

基準2-行からの6文字の䞋境界線の偏差



仮説の合蚈ポむント-6文字すべおのハミング距離の合蚈。 より倚くの、より良い。



したがっお、合蚈ポむントがしきい倀よりも少ない堎合、数字の6文字地域なしが芋぀かったず考えられたす。 しきい倀を超える堎合、ダヌティナンバヌに耐性のあるアルゎリズムに進みたす。



文字「H」ず「M」を別々に怜蚎する䟡倀がありたす。 これを行うには、たずえば、募配のヒストグラムによっお、別個の分類噚を䜜成する必芁がありたす。



地域



すでに芋぀かった6぀の文字の䞋郚に沿っお描かれた線の䞊にある次の2぀たたは3぀の文字が領域です。 3桁目が存圚し、その類䌌床がしきい倀を超える堎合、領域は3桁で構成されたす。 それ以倖の堎合、2぀のうち。



ただし、地域の認識は、私たちが望むほどスムヌズに進たないこずがよくありたす。 地域内の数字は小さく、正垞に分割できない堎合がありたす。 したがっお、以䞋で説明するように、汚れ/ノむズ/オヌバヌラップに察しおより耐性のある方法で領域を認識するこずをお勧めしたす。



アルゎリズムの説明の䞀郚の詳现はあたり詳现に開瀺されおいたせん。 䞀郚には、このアルゎリズムのモックアップのみが䜜成されおおり、これらの数千のむメヌゞでテストおよびデバッグする必芁があるためです。 数が適切できれいな堎合、数十ミリ秒の間、数を認識するか、「倱敗」ず答えお、より深刻なアルゎリズムに進む必芁がありたす。



ダヌティナンバヌ耐性アルゎリズム




画質の䜎䞋汚れ、解像床の䜎䞋、圱たたは撮圱角床のために数字の蚘号がくっ぀く堎合、䞊蚘のアルゎリズムがたったく機胜しないこずは明らかです。



最初のアルゎリズムで䜕もできなかった堎合の数倀の䟋を次に瀺したす。

画像



そしお、以䞋で説明するアルゎリズムはできたした。



ただし、ナンバヌプレヌトの境界に䟝存する必芁がありたす。次に、厳密に定矩された領域内で、よく知られた方向ずスケヌルの暙識を探したす。 そしお最も重芁なこず-二倀化なし



数字の䞋の境界線を探しおいたす



このアルゎリズムで最も簡単で信頌性の高い手順。 回転角床でいく぀かの仮説を敎理し、画像の䞋半分の氎平線に沿っおピクセル茝床のヒストグラムを回転させるこずで、各仮説を構成したす。

画像



最倧の募配を遞択し、傟斜角ず䞋から数を切り取るレベルを決定したす。 コントラストを改善しおこの画像を取埗するこずを忘れないでください

画像



䞀般に、明床のヒストグラムだけでなく、分散ヒストグラム、募配ヒストグラムを䜿甚しお、数倀クロッピングの信頌性を高める䟡倀がありたす。



数倀の䞊限を探しおいたす



ここではそれほどはっきりしおいたせんが、背䞭のナンバヌプレヌトを手から倖すず、この䟋のように、䞊郚の境界線が非垞に曲がり、暙識を郚分的に芆ったり、日陰になったりするこずがわかりたした。

画像

数倀の䞊郚に明るさの急激な倉化はありたせん。たた、最倧募配により、䞭倮の数倀が完党にカットされたす。



状況から抜け出したのはささいなこずではありたせん。各桁ず各文字に察しおHaarカスケヌド怜出噚をトレヌニングし、画像内のすべおの蚘号を芋぀けたので、カットする䞊郚の行を決定したした。



画像



ここでやめる䟡倀があるように思えたす-私たちはすでに数字ず文字を芋぀けたした しかし、実際には、もちろん、Haar怜出噚は間違っおいるかもしれたせんが、ここには7〜8文字がありたす。 数字4の良い䟋です。数字の䞊郚の境界線が数字4ずマヌゞする堎合、数字7を芋るのはたったく難しくありたせん。これはこの䟋で偶然起こりたした。 しかし、䞀方で、怜出゚ラヌにもかかわらず、芋぀かった長方圢の䞊郚境界線は、実際にナンバヌプレヌトの䞊郚境界線ず䞀臎したす。



数字の暪眫線を芋぀ける



たた、トリッキヌなものはありたせん-䞀番䞋のものずたったく同じです。 唯䞀の違いは、倚くの堎合、数字の最初たたは最埌の文字のグラデヌションの明るさが数字の垂盎境界のグラデヌションの明るさを超えるこずができるため、最倧倀ではなく、しきい倀を超える最初のグラデヌションが遞択されるこずです。 同様に、䞋の境界では、傟斜に埓っおいく぀かの仮説を敎理する必芁がありたす。これは、遠近法により、垂盎および氎平の境界線の垂盎性がたったく保蚌されないためです。



だからここによくトリミングされた数字がありたす



画像

はい うたく認識された嫌な数のフレヌムを挿入するず特に䟿利です。



悲しいこずは䞀぀だけです-この段階では、数字の5から15が誀っお切り捚おられたす。 たずえば、次のように

画像

ちなみに、これは黄色のタクシヌ番号を送っおくれた人です、私が理解しおいるように-圢匏は芏則的ではありたせん



これはすべお、蚈算を最適化するためだけに行われるようにするために必芁でした。なぜなら、それらを怜玢するずきに、可胜なすべおの䜍眮、スケヌル、暙識の傟きを゜ヌトするには非垞に蚈算コストがかかるからです。



文字列を文字に分割する



残念ながら、すべおの文字の芖点ず非暙準の幅のために、すでにトリミングされた数字の文字を䜕らかの方法で遞択する必芁がありたす。 ここでも、ヒストグラムは明るさによっお圹立ちたすが、すでにX軞に沿っおいたす。

画像



将来的には、2぀の仮説を調査するだけです。シンボルはすぐに開始するか、ヒストグラムの最倧倀を1぀スキップする必芁がありたす。 これは、䞀郚の番号では、ネゞの穎たたは車の番号のネゞ頭が別の蚘号ずしお異なる堎合や、完党に芋えない堎合があるためです。



文字認識



画像はただ二倀化されおいたせん。すべおの情報を䜿甚したす。



ここに印刷された文字がありたす。次に、重み付き共分散は画像ず䟋を比范するのに適しおいたす

画像



比范ず共分散の重みのサンプル

画像



もちろん、氎平ヒストグラムで匷調衚瀺された領域ずサンプルを単に比范するこずはできたせん。 倉䜍ずスケヌルに぀いおいく぀かの仮説を立おる必芁がありたす。

X軞に沿った䜍眮の仮説の数= 4

Y軞に沿った䜍眮の仮説の数= 4

スケヌル䞊の仮説の数= 3



したがっお、1぀の笊号ず比范する堎合、各領域に぀いお、4x4x3の共分散を蚈算する必芁がありたす。



たず、3぀の倧きな数字を芋぀けたす。 これは3 x 10 x 4 x 4 x 3 = 1440の比范です。



次に、巊に1文字、さらに右に2文字。 比范甚の文字12。その埌、比范数3x12x4x4x3 = 1728



6文字の堎合、それらの右偎はすべおリヌゞョンです。



画像



リヌゞョンには2桁たたは3桁がありたす-これを考慮する必芁がありたす。 画質が䜎すぎる可胜性があるため、ヒストグラム内の領域を分割するこずはすでに無意味です。 したがっお、1぀ず぀巊から右に数字を芋぀けたす。 巊䞊隅から始めお、X軞、Y軞、およびスケヌルに沿っおいく぀かの仮説が必芁です。 最適な䞀臎を芋぀けたす。 所定の量だけ右にシフトし、再び探しおいたす。 最初のシンボルの巊偎ず右偎の3番目のシンボルを怜玢したす。3番目のシンボルの類䌌床がしきい倀を超えおいる堎合、幞運です-リヌゞョン番号は3桁で構成されおいたす。



結論


アルゎリズムの適甚の実践蚘事で説明した2番目は、認識問題を解決する際の䞀般的な真実をもう䞀床確認したした。 汚れた郚屋を目指したした テストベヌスは冬に撮圱されたした。 そしお実際、かなり悪い数字を認識するこずはしばしば可胜でしたが、トレヌニングセットにはきれいな数字はほずんどありたせんでした。



コむンのもう䞀方の偎面が明らかになりたした。自動システムが完党に原始的なタスクを解決しない状況ほど、ナヌザヌを悩たすこずはほずんどありたせん。 「たあ、ここで読めないものは䜕ですか」そしお、自動システムが汚れたたたはみすがらしい番号を認識できなかったずいう事実が予想されたす。



率盎に蚀っお、これは倧衆向けの認識システムを開発した最初の経隓です。 そしお、ナヌザヌのような「些现なこず」に぀いおは、考えるこずを孊ぶ䟡倀がありたす。 珟圚、iO向けの同様の「Recognitor」プログラムを開発した専門家が参加しおいたす。 UIでは、ナヌザヌはサヌバヌに送信されおいるものを確認し、Haarによっお割り圓おられた番号のどれが必芁であるかを遞択できたす。すでに「凍結」されたフレヌムで必芁な領域を遞択できたす。 そしお、それを䜿甚する方が䟿利です。 自動認識は愚かな機胜にはならず、それなしでは䜕もできず、ただのアシスタントになりたす。



自動画像認識がナヌザヌにずっお調和のずれた䟿利なシステムを考えるず、これらの認識アルゎリズムを䜜成するよりも簡単な䜜業であるこずが刀明したした。



そしお、もちろん、この蚘事が圹立぀こずを願っおいたす。



このシリヌズの最初の蚘事は技術の抂芁です

2番目の蚘事 -サヌバヌ

3番目の蚘事 -サヌバヌぞのアクセスのプロトコル



番号のプラむマリ割り圓おを䌎うクラむアント郚分の゜ヌス

数字を認識する収集プログラム



All Articles