58

バックグラウンド

大学での最後のプロジェクトとして、車のナンバー プレート検出アプリケーションを開発しています。私は自分自身を中級プログラマーだと思っていますが、私の数学の知識は中等学校以上のものではなく、正しい数式を作成するのがおそらく必要以上に難しくなっています。

私は、次のような学術論文を調べるのにかなりの時間を費やしてきました。

数学になると、私は道に迷います。このテストにより、さまざまなグラフィック画像が生産的であることが証明されました。たとえば、次のとおりです。

代替テキスト

代替テキスト

ただし、このアプローチはその特定の画像に対してのみ機能し、この手法を別の画像に適用すると、変換が不十分になると確信しています。「ボトムハット形態変換」と呼ばれる式について読んだことがあります。これは次のことを行います。

基本的に、変換は画像のすべての暗い詳細を保持し、他のすべて (より大きな暗い領域と明るい領域を含む) を排除します。

これに関する多くの情報を見つけることはできませんが、レポートの最後近くにある文書内の画像はその有効性を示しています。

その他の制約

  • C# での開発
  • プロジェクトを英国の登録プレートのみに限定する
  • デモンストレーションとして変換する画像を選択できます

質問

どの変換技術の開発に注力すべきか、どのアルゴリズムが役立つかについてアドバイスが必要です。

編集:続きに存在する新しい情報 - 車両のナンバー プレートの検出

4

8 に答える 8

15

いくつかのアプローチがありますが、最初に頭に浮かぶ戦略は次のとおりです。

  • 発見/調査: 特定する必要がある色とフォントのセットを特定します。あなたのサンプル写真がほとんどのイギリスのプレートを代表しているなら、あなたの仕事はより簡単になります. 例: シンプルで特異なフォントと白地に黒の文字
  • コード: 色が主に白と黒である画像の四角形の領域を識別しようとします。これはそれほど数学的な問題ではなく、集中すべきナンバー プレートの領域が得られるはずです。
  • コード: 純粋な白黒 (モノクロ) への変換や、きれいなタイトな四角形へのスケーリング/シフトなど、部分領域のクリーンアップを行います。
  • API を使用する: 次に、サブ選択した画像領域で既存の OCR (光学式文字認識) アルゴリズムを使用して、テキストを読み取れるかどうかを確認します。

私が言ったように、これは多くの戦略の 1 つですが、重い数学を必要としない戦略の 1 つとして思い浮かびます。

于 2011-01-16T19:54:38.310 に答える
3

数年前に Java で同様のプロジェクトを行いました。最初にSobel オペレーターを適用し、次にプレートのイメージですべてのイメージをマスクしました (Sobel オペレーターも適用されました)。最大の一致領域は、プレートがある場所です。次に、選択した領域に OCR を適用して番号を取得します。

于 2011-01-16T20:01:16.520 に答える
3

このタスクを実行する方法をお勧めします。ここで私の詳細な回答を読んでください。

  1. グレースケールに変換します。
  2. 3x3 または 5x5 フィルターを使用したガウスぼかし。
  3. ソーベル フィルターを適用して、垂直方向のエッジを見つけます。

    Sobel(gray, dst, -1, 1, 0)

  4. 結果のイメージをしきい値処理して、バイナリ イメージを取得します。
  5. 適切な構造化要素を使用してモルフォロジー クローズ操作を適用します。
  6. 結果の画像の輪郭を見つけます。
  7. minAreaRect各輪郭を検索します。縦横比と最小および最大面積に基づいて長方形を選択します。
  8. 選択した輪郭ごとに、エッジ密度を見つけます。エッジ密度のしきい値を設定し、そのしきい値に違反する長方形を可能なプレート領域として選択します。
  9. この後、いくつかの長方形が残ります。方向または適切と思われる基準に基づいてそれらをフィルタリングできます。
  10. これらの検出された長方形部分をadaptiveThreshold元の (グレースケール) 画像の後の画像から切り取り、OCR を適用します。
于 2016-05-30T10:38:33.410 に答える
1

英国にはすでにそれを行うシステムがあります。彼らがロンドン内で10分以内に車を見つけることができることを示したテレビ番組を見たのを覚えています(彼らが番号を知っていて、車が走り回っていると仮定します)Wikipediaを読むだけで、問題について考え始めるために必要な指針が得られます: http ://en.wikipedia.org/wiki/Automatic_number_plate_recognition

于 2011-01-16T21:58:18.523 に答える
1

それは、ボトムハット変換を計算する方法を正確に教えてくれます(逆の段階的なしきい値変換のように見えます)。

最初に行うことは、2 つの形態関数 dilation と erosion を実装することです。

これを行うには、 f と b が必要です。次に、画像の小さな領域で、見つかった最大値を維持するポイントで関数を計算します。

(f ⊕ b)(s, t) = max{f (s − x, t − y) + b(x, y)
|(s − x), (t − y) ∈ Df ; (x, y)∈Db}

これが言うことは、ドメイン領域内のすべてのポイント(ポイント(s、t)を中心とする小さな長方形など)で式の最大値を取るということです。

単純な擬似コードは

max = -infinity // for the point (s,t) on the image, must compute this for all points
for(x = -5 to 5)
for(y = -5 to 5)
max = Max(max, f(s - x, t - y) + b(x,y))

事実上、最大値の新しいイメージができました。

これは実際には非常に単純なので、これ以上難しくしないでください (領域内の各ポイントに b(x,y) を追加し、どれが最大値を与えるかを見つけるだけです)。

侵食についても同じことを行います(上記と非常に似ています)

今はオープニングとクロージングが二人の構図

最初に膨張を実行し、次に開口部の浸食を実行すると考えることができます。

最終的に元の画像からクロージングを差し引くと、変換が必要になります。

于 2011-01-16T19:56:47.700 に答える
1

ナンバー プレートの存在を (認識するのではなく) 検出する問題に関心がある場合は、画像内のテキスト検出を確認する必要があります。

この質問はあなたに関連しています:画像上のテキストの存在を検出するアルゴリズム

于 2011-01-18T00:59:24.333 に答える
1

これには、サービスまたはサードパーティを使用することをお勧めします。Open ALPR は、このサービスに対して非常に正確なオープン ソース パッケージを提供します。

オープン ALPR - https://www.openalpr.com/

Video Open ALPR のデモ

https://www.youtube.com/watch?v=E-U_H9EbW60

または、APIを使用できます-

マクガイバー コンピューター ビジョン API

https://askmacgyver.com/explore/program/license-plate-recognition/3X5D3d2k

この API では、単純にポスト リクエストを作成して -

https://macgyver.services

ペイロードの例

{
id: "3X5D3d2k",
key: "free",
data: {
    "image_url": "https://storage.googleapis.com/marketing-files/program-markdown-assets/license-detection/license-plate.jpg",
    "country": "us",
    "numberCandidates": 2
  }
}

ここに画像の説明を入力

上の画像は次を返します-

"plate": "284FH8"
"confidence": 90.601013
于 2018-11-27T01:09:28.270 に答える