監視および検査に使用するビデオ・デコーダの基本

Witold Kaczurba(コメントは英語でお願いいたします)

ビデオ検査システムは、さまざまな商業・産業プロセスで使用されています。低価格で低解像度のモノクロの閉回路テレビ(CCTV)システムから最先端の高解像度デジタル・ビデオ・システムまで多種多様なカメラが、製品の検査、交通の監視、リアルタイムの顔認識に至るまで多方面で利用されています。

ビデオは大量のデータを扱うものですが、そのために信号処理やデータ保存のタスクが複雑になることがあります。ビデオ検査は、不要な情報を除去し、画像の必要な部分だけを処理するよう簡略化することによって、メモリと演算のサイクルの両方を軽減することができます。図1に、代表的なシステムの構成要素を示します。

図1. 簡略化したビデオ検査のデータフロー

図1. 簡略化したビデオ検査のデータフロー

この記事では、必要なデータの抽出によって信号処理、メモリ容量、DSPの利用を少なくすることができる方法をいくつかご紹介します。また、アナログ・デバイセズのビデオ・デコーダの特長を利用することによってビデオ・アルゴリズムを簡単にし、ビデオ検査システムを迅速に開発する方法を説明します。

ページの先頭へ



例1. 物体の計数と検査
多数の製品を高速で搬送する幅の広いコンベア・ベルトを考えてみましょう。製品が大量であるため、マニュアル計数では大変です。カメラを使用することによって、計数を自動化するとともに、製品の品質を監視することができます。そのために単純な計数アルゴリズムを修正し、特定の細部とアーチファクトに注目します。

ビデオ・データをすべて保存するには大量のメモリが必要になり、この大量のデータを処理するにはハードウェアの面でも電力の面でもコストがかかります。コンベア・ベルト上の製品を検査するとき、すべての画像を収集してメモリに保存するのでなく、大量のデータの中から必要な細部のデータのみを検出し、不要なデータをできるだけ廃棄することができます。

ほとんどの場合、グレイスケール画像で十分な情報を得ることができます。したがって、RGB信号をY(輝度のみ)に変換することによってクロミナンス情報を捨てることができます。さらに「エッジ検出」によって変換後のモノクロ画像の内容を調べ、コンベア・ベルト上の製品を検出し、その形状をテンプレートと比較して、製品に問題がないかどうか判別します。

エッジ検出アルゴリズムは、数ラインのアクティブ・ビデオを使用するだけで、メモリもわずかな量で十分です。アクティブ画像の1番目と2番目の導関数を計算することによって、隣接するピクセルの輝度の不連続性を検出します。これについては、 Bernd Jähne著の『デジタル画像処理』に解説があります。 ソーベル・マトリクス演算子などのマトリクス計算を用いて情報を抽出することによって、エッジ検出を実際に実装することができます。FPGA(フィールド・プログラマブル・ゲート・アレイ)実装では、ピクセル・ベースでエッジ検出を行うことで満足できる結果が得られます。単純なFPGA実装は、Tanvir A. Abbasi、Mohm. Usaid Abbasi共著 「A proposed FPGA Based Architecture for Sobel Edge Detection Operator」で紹介されています。また、Mathukumar Venkatesan、Daggu Venkateshwar Rao共著 「Hardware Acceleration of Edge Detection Algorithm on FPGAs」に記述されているように、2Dガウス・フィルタを追加してノイズを除去できます。この資料には、 キャニー・エッジ検出器と同じような検出器をうまく実装できることが述べられています。

その他の最適化アルゴリズムでも画質が向上しますが、いずれもFPGA設計でかなりの実装スペースが必要です。集積回路(IC)ビデオ・デコーダの中には役に立つ前処理アルゴリズムやフィルタが実装されているものがあるため、その中から選べばFPGAの実装スペースを節約することができます。たとえば、 ADV7802ビデオ・デコーダには、ルマ・トランジェント改善(LTI)ブロックとクロマ・トランジェント改善(CTI)ブロックがあります。これらのブロックはルマおよびクロマ遷移の急峻性を改善することによって画質を向上しますが、アダプティブ・ピーキング方式と非直線性方式を利用するため、ノイズを増大させず、またアーチファクトも生じません。エッジ検出のプロセスにおいて非常に役に立つはずです。さらに、ルマ・シェーピング・フィルタやその他の内蔵入力フィルタがビデオ信号源から高周波数ノイズを除去するため、信号のみに注目し、偶発的なノイズを無視することができます。

図2. LTI/CTIの動作図

図2. LTI/CTIの動作図

エッジ検出は、対象の全画像ではなく、エッジ変化に関する情報を提供します。ピクセル当たり3×8ビット(bpp)から1bppに低減することによって、大量のメモリを節約できます。

  1. 640ピクセル×480ピクセル=307,200ビット/1bpp
  2. 800ピクセル×600ピクセル=480,000ビット/1bpp
  3. 1024ピクセル×768ピクセル=786,432ビット/1bpp
  4. 1280ピクセル×720ピクセル=921,600ビット/1bpp
  5. RGBをYに変換し、メモリに保存するのは数ラインのアクティブ・ビデオとし、FPGAアルゴリズムを利用することによって、物体を検出し、その形状を判別することができます。移動するベルト上にある対象の位置がわかっていれば、その動きを計算し、次のフレームで色やその他の情報を収集することによって、使用するメモリの容量を最小にすることができます。このプロセスには、以下の手順が含まれます。

    1. エッジ検出
    2. 情報の保存
    3. 次の位置xn+1の予測
    4. 製品が存在することが予測される場所での情報の抽出



    例2. 動きと品質の検出
    ロボットは、一定の距離にある特定の範囲の物体を探します。アプリケーションによっては超音波が利用されますが、超音波が表面に吸収されたり、対象とするものがガラスに隔てられている場合などは、ビデオを利用できます。カメラをすぐ近くの被検査物に焦点を合わせて設定します。近い範囲の対象はそのエッジが鮮明ですが、範囲外にある背景のものはエッジが不明瞭になります(図3)。

    Focus—narrow depth of field.

    Focus—narrow depth of field.

    ターゲット範囲内にあるものだけが鮮明なエッジをもつことから、エッジ検出を利用することによって対象を識別することができます。背景にあるものはエッジが不鮮明であるために、エッジ検出テストに通りません。信号処理によってバイナリ・ビットマップを生成し、1はエッジが検出されたこと、0はエッジが検出されなかったことを意味することにします。検出された各エッジ・ピクセルの位置(x、y)を使用して、式1から、抽出した物体の中心位置の近似値を求めることができます。

    ここで、xnはエッジ・ピクセルnのx位置、ynはエッジ・ピクセルnのy位置、Nは検出されたエッジ・ピクセルの数です。

    対象とそのエッジの位置が既知であれば、その後を追うことができます。ここで重要な点は、画像から1つの対象を正確に抽出し、その物体がカメラの方向に移動しているかどうかを判断できるアウトラインにそのエッジを変換することです。これには、式2(下を参照)に示すように、その物体の中心位置からのピクセルの平均距離を確認して、物体の大きさが変化しているかどうかを調べます。

    NはFRAME内のエッジ・ピクセルの数、MはFRAME-1内のエッジ・ピクセルの数です。

    水平軸に注目すると、式3(下を参照)が得られます。

    この式の中で、対象がカメラの方向に移動している(ピクセルが対称の中心から広がっている)場合は値が正になります。負の値は、図4に示すようにその物体がカメラから遠ざかっていることを意味します。

    図4. 移動する物体のフレーム変化

    図4. 移動する物体のフレーム変化

    なお、対象はカメラの焦点範囲内に入っていなければなりません。アルゴリズムを修正することによって、もっと広い範囲を調べることができるように 焦点位置をアクティブに変更する変化させることができます。物体が検出されれれば、それをセグメント化したり、処理したり、追跡することができます。

    表面がざらざらしている物体や高速で移動しているために鮮明さを失っている物体の場合には、ビデオが複雑になり、物体の追跡が困難になります。追跡アルゴリズムについては、Jianbo Shi著 「Good Features to Track」にいくつか紹介されています。物体が鮮明でなくなると、エッジ検出ができなくなります。ただし、それでも追跡は可能です。これには、動きの計算に使用されるブロック・マッチングなどの複素相関技術や、Yao Wang、Jörn Ostermann、Ya-Qin Zhang共著 「Video Processing and Communications」に詳しく述べられているその他の方法などを使用することができます。

    カメラからの連続的なデータフローのおかげで、物体を追跡し、加速度などのパラメータを求めることができます。しかし、適切なビデオ解析結果を得るには、高品質のビデオ・シーケンスを使用しなければなりません。隣接するピクセルを解析してエッジを検出する場合は、低品質のインターレースPALやNTSC信号ではなく、プログレッシブ走査方式のビデオを利用したほうが解像度が高くなります。ADV7401および ADV7403ビデオ・デコーダは、プログレッシブ・モードなど各種ビデオ規格に対応しています。最大140MHzのビデオ信号のデジタル化が可能であり、SD、ED、HDの各コンポーネント信号、CVBS、グラフィックス信号を処理できます。さらに、標準外のビデオ・モードにも対応しており、STANAGなどのあまり一般的ではない規格を利用することもできます。柔軟性の高いピクセル出力バスで、4:2:2、4:4:4のYCbCr、または4:4:4のRGBのフォーマットによるデータ処理が可能です。 AN-0978「Component Processor Nonstandard Video Formats」で説明しているように、標準外のビデオ・フォーマットをオーバーサンプリングまたはアンダーサンプリングして、所定の水平幅を得ることができます。

    図5に示す内蔵のカラースペース・コンバータ(CSC)は、ユーザの条件に合うようにカラースペースを変換します(下の式4を参照。ここでA1~A4、B1~B4、C1~C4は調整可能なCSCパラメータです)。設定可能なマトリクス変換を用いて、YPrPbまたはRGB入力信号を他のフォーマットに変換することができます。たとえば、RGBをYCbCrに変換することによって、クロマ情報(Cb、Cr)を廃棄できるため、モノクロ画像のエッジ検出を簡素化することができます。

    図5. シングルCSCチャンネル(ADV7403)

    図5. シングルCSCチャンネル(ADV7403)

    式2、式3、式4

    式2、式3、式4

    CSCは非常に便利です。RGBまたはYCbCrの入力の場合は、カラースペース・マトリクスを使用して色情報を簡単に変換できます。図6には、YCbCrに似ているYUVカラースペースを示します。

    図6. 製品の品質検査でYUVカラースペースを使用することによって、(たとえば)焦げたりかびがついた製品を検出できます。Y(ルマ)は一定です。

    図6. 製品の品質検査でYUVカラースペースを使用することによって、(たとえば)焦げたりかびがついた製品を検出できます。Y(ルマ)は一定です。

    図6に示すように、色(またはYPrPbの数値)によって、たとえば焦げたりかびがついているかなど、製品の品質を検査することができます。ビデオ処理や、ほかの規格を使用するICとのインターフェースのためにはカラースペース変換が必要です。ADV7401/ADV7403には、ビデオ・ソースを簡単に切り替えられる入力マルチプレクサが内蔵されています。これは、停止しているコンベア・ベルトから動作中のベルトに切り替えるときに便利な機能です。

    ページの先頭へ



    例3. ビデオ検査のためのホワイト・バランスとカラー・バランスの調整
    光の角度や強度が変化するだけで検査の結果が影響されるため、画像から物体を抽出するビデオ・システムの開発には、多大な努力が必要です。ADV7401/ADV7403のゲインとオフセットの調整を利用すれば、ビデオ・エンジニアは2つの小さい基準ストライプ(1つは暗い色、もう1つは明るい色)をコンベア・ベルトに追加することによって輝度とコントラストを調整できます。ADV7401/ADV7403のゲインとオフセットを調整することによって比較可能な値が得られ、光、色、角度、強度の変化をシステムで補正することができます。

    図7. 小さい基準ストライプを可視領域に追加

    図7. 小さい基準ストライプを可視領域に追加

    適切なホワイト・バランスを調整するためのアルゴリズムは、非常に簡単です。最初に、ストライプの基準RGB(またはYCbCr)値を取得します。次に、光を補正するために、基準値と同じ値が得られるようにオフセットとゲインを変更します。このアルゴリズムは、以下の手順で利用できます。

    1. 暗い色のストライプのRGB(またはYCbCr)値を取得します。
    2. 暗い色のストライプの所望のRGB(またはYCbCr)値と一致するようにオフセットを調整します。
    3. 明るい色のストライプのRGB(またはYCbCr)値を取得します。
    4. 明るい色のストライプの所望のRGB(またはYCbCr)値と一致するようにゲインを調整します。
    5. 精度を高めるために、ステップ2と4を繰り返します。
    6. 図8に示すように、光が極端に強いか弱い場合であっても、この手順によって正しいオフセット(輝度)とゲイン(コントラスト)が維持されるため、システム開発の際に特に便利です。I2Cバスからオフセット・レジスタとゲイン・レジスタを利用できるので、すぐに調整ができます。

      図8. オフセットとゲインの調整によって周囲照明の変化を補正します。

      図8. オフセットとゲインの調整によって周囲照明の変化を補正します。

      色も基準ストライプに利用できます。この補正は、広く行われているホワイト・バランスに似ていますが、ホワイト・バランスが人間の知覚に合わせるのに対して、色補正は照明の違いによる変化を補償します。アルゴリズムは似ていますが、追加したオフセットによって暗い色が不自然に見えます。ADV7401/ADV7403のカラースペース変換、柔軟性の高い出力ピクセル・ポート、オフセット調整とゲイン調整のレジスタにより、エンジニアは処理用にすでに用意されているデータを使用してアルゴリズムを迅速に開発できます。すでに述べたように、ビデオ処理に必要なデータの量を少なくし、単純なビデオに必要がなければ高度なアルゴリズムを使用しないようにすることが重要です。簡単にアクセスできるピクセル・ポート付きのADV7401/ADV7403評価用ボードを利用すれば、新しい設計にすぐに着手することができます。この評価用ボードのピクセル・ポートにビデオ・キャプチャ・ボードを接続し、ビデオ・データを取り込むだけでオーケーです(図9)。

      図9. ADV7401/ADV7403評価用ボード上のピクセル・バス

      図9. ADV7401/ADV7403評価用ボード上のピクセル・バス

      ビデオ・エンコーダ、ビデオDAC、 AD9889B HDMIトランスミッタが同じピクセル・バスに接続されているため、2番目の出力で最新の画像を見ることができます。アナログ・デバイセズのビデオ・デコーダには、ビデオ信号処理に必要なブロックが備わっており、信頼性の高い性能と安定した画像が得られます。



      結論
      ビデオ・カメラは、産業用アプリケーションに数多くのメリットをもたらしています。移動するものを分類したり、追跡したり、記録しなければならない場合に、ビデオ・カメラは特に重要です。高度に集積化されたビデオ・デコーダによるビデオ技術やリアルタイム信号処理を活用することにより、動作中のコンベア・ベルトに載っている物体を効率的に解析したり、多種多様な品物を分類することができます。



      参考資料

      1. http://www.analog.com/jp/industrial-solutions/machine-vision/applications/index.html
      2. http://www.analog.com/jp/audiovideo-products/video-decoders/products/index.html
      3. http://www.amazon.co.jp/Digital-Image-Processing-CD-ROMBernd/dp/3540677542
      4. http://en.wikipedia.org/wiki/Sobel_operator
      5. http://www.oldcitypublishing.com/FullText/JAPEDfulltext/JAPED2.4fulltext/Abbasi.pdf
      6. http://www.uweb.ucsb.edu/~shahnam/HAoEDAoF.pdf
      7. http://en.wikipedia.org/wiki/Canny_edge_detector
      8. http://www.analog.com/jp/adv7802
      9. http://en.wikipedia.org/wiki/Autofocus
      10. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=323794
      11. http://www.amazon.com/Video-Processing-Communications-Prentice-Hall-Signal/dp/0130175471
      12. http://www.analog.com/jp/analog-to-digital-converters/video-decoders/adv7403/products/product.html
      13. http://www.analog.com/static/imported-files/application_notes/AN-0978.pdf
      14. http://en.wikipedia.org/wiki/White_balance
      15. http://www.analog.com/jp/audiovideo-products/analoghdmidvi-interfaces/ad9889b/products/product.html

      著者
      Witold (Vito) Kaczurba (witold.kaczurba@analog.com)は、アイルランドのリメリックにある当社の次世代TVグループのアプリケーション・エンジニアで、デコーダやHDMI製品のサポートを担当しています。ポーランドのブロツラフ工科大学で電子工学の学士号を取得して卒業した後、2007年にアナログ・デバイセズに入社しました。学生時代に電子関係やIT関係の小さい会社で働きながら経験を積み、その後インターンシップの学生としてアイルランドのアナログ・デバイセズ社に入り、引き続きアプリケーション・エンジニアになりました。余暇にはアイルランドの観光を楽しみ、友人とギネス・ビールを飲んだり、読書をしています。



       

      ご質問、コメントなどございましたら、Analog Diablog™へ英語にてお寄せ下さい。




      ページの先頭へ        Analog Dialogue ホームへ

沪ICP备09046653号
感想、意見を送る X
content here.
content here.

感想、意見を送る

閉じる