リアルタイム画像処理手法の解説

特集 製品で知るリアルタイム画像処理技術
リアルタイム画像処理手法の解説
FAビジョン株式会社/浅野 裕一
リアルタイム画像処理とは、カメラに対するビデオ信号に同期させて画像を取込み、即座に処
理を行い、この操作を連続して絶え間なく処理をするということである。逆に画像処理に多く
の時間を必要とし、次の画像取込のタイミングに間に合わない、つまり画像処理がオーバーラ
ンするようでは、リアルタイム画像処理にはならなくなってしまう。よって、リアルタイム画
像処理を行うためには、カメラの連続取込の周期より短い時間で処理を終えなければならない
ということが必要条件となるので、高速画像処理を実現しなければならないということが必須
条件となる。 本稿ではリアルタイム画像処理と高速画像処理について述べることにする。
する。
1
画像取込と処理
③ A/D変換されたデータが逐次メモリに記録さ
れる。
リアルタイム画像処理を考える上で、必要不可
④ メモリへの記録終了と同時に画像処理を開始
する。
欠なのが画像取込とその処理を同時進行させるこ
とである。画像の取込みには、その専用ハードウ
⑤ 画像処理の終了後に次の画像取込指示を出す。
ェアがあり、内部ではDMA転送を用いることに
⑥ ②と同じ。以下繰り返す。
よりCPUを介在しないで画像データをメモリに格
図1において、A/D変換と画像処理の点線で書
納することができる。よって、画像を取込んでい
かれた部分については、それぞれの処理が行われ
る時間はCPUにかかる負荷が皆無であるので、取
ておらず次処理のための待ち時間、つまりアイド
込中であっても画像演算(処理)が可能となるの
ル状態である。この時間が存在するということは、
である。
CPUの処理能力を十分に発揮させていないことに
インタフェイスRS-170のカメラを例に、バッチ
なる。
リアルタイム画像処理を実現させるためには、
(逐次)処理の流れについてタイミングを示す。
① 画像の取込指示を出す。
何らかの工夫を施しこのアイドル状態をなくすこ
② 垂直同期信号のタイミングでA/D変換を開始
とによって処理能力を高める必要がある。
CCD電荷蓄積
Odd
Odd
Even
Odd
②
A/D変換
①
Even
⑥
③
画像メモリ
画像処理
Even
Odd
Even
Odd
⑬
⑩
⑦
④
⑤
⑧
⑨
結果を得る
図1 カメラから処理まで、バッチ(逐次)処理の流れ
eizojoho industrial
October 2002︱2
特集 製品で知るリアルタイム画像処理技術
本来、画像入力ボードのA/D変換からメモリ格
⑨ ⑦の処理を開始する前に次処理のための画像
取込指示を出す。
納までの機能と、CPUによる画像処理は、それぞ
れ個別に動作させることができるように設計され
⑩ ②の処理と同じ。以下繰り返す。
ている。画像入力ボードはカメラ駆動のための同
期信号生成や、画像取込のためのA/D変換が、ボ
2
ード内のハードウェアとカメラとの間で独立して
画像処理
動作している。よって、CPUはこれらのハードウ
ェアに対して「画像取込開始指令」を送るのみで
リアルタイム画像処理に限らず、画像処理では
動作させることができる。CPUは指令を送ったあ
処理に要する時間もさることながら、処理を行っ
と、拘束されるものがないので各種演算処理をす
た結果が要求仕様を満たしているかどうかが重要
ることが可能である。よって、それぞれが独立し
である。したがって、リアルタイム処理にとらわ
て動作させることが可能となるのである。
れすぎて処理時間を短縮することに注力したこと
次に、リアルタイム画像処理を行うために、そ
れぞれを個別に動作させるための手法について検
により、処理結果の検出精度や歩留まりの低下を
招くようであれば、それは本末転倒である。
ここでの歩留まりとは、開発した画像処理アル
討する。
① 画像の取込指示を出す。
ゴリズムの演算結果が開発者の意図する結果を出
② 垂直同期信号のタイミングでA/D変換を開始
力する割合を示し、この数値は高いほうが良い。
逆にいえば、いかに誤検出、未検出を減らすかと
する。
③ A/D変換されたデータが逐次画像メモリ1に記
いうことである。
上級の画像処理技術者は、開発プロジェクトに
録される。
④ 画像メモリ1への記録終了と同時に画像処理を
取り掛かる初期の段階から、画像用件、処理内容、
要求精度、CPUスピードと処理時間を念頭におい
開始する。
⑤ ④の処理を開始する前に次処理のための画像
て設計検討を進めていく。しかし、初心者ではす
べてのことを考慮して開発することは難しいの
取込指示を出す。
⑥ 垂直同期信号のタイミングでA/D変換を開始
で、まずは、処理時間のことをさておき、精度や
歩留まりが要求精度に見合っているかどうかを念
する。
⑦ A/D変換されたデータが逐次画像メモリ2に記
頭においてアルゴリズムを検討し、その上で処理
時間を検討する必要がある。
録される。
⑧ 画像メモリ2への記録終了と同時に画像処理を
開始する。
CCD電荷蓄積
Odd
Even
Odd
Even
Odd
⑩
Odd
⑭
⑱
⑮
⑦
画像メモリ2
①
Even
⑪
③
画像メモリ1
画像処理
Odd
⑥
②
A/D変換
Even
⑤
④
⑨
⑧
⑬
⑫
⑰
⑯
結果を得る
図2 リアルタイム画像処理を実現するための処理の流れ
3 ︱October 2002
eizojoho industrial
時間で処理することを可能にしたマシンである。
3
リアルタイム画像処理
しかし、このパソコンを使用するにあたっていく
かの点について考慮しなければ、最高のパフォー
画像取込と画像処理を並列に処理することによ
ってリアルタイムに画像処理が可能となることが
マンスが得られないという点に注意する必要があ
る。
わかった。しかしながら、対象画像の複雑さや処
ひとつは、開発するアプリケーションがデュア
理内容の過多により画像の取込時間内に処理を終
ルCPUを考慮して書かれているかということであ
えなくなることもある。このような場合には、処
る。デュアルCPUであっても、そこに搭載されて
理に使用するハードウェア周りを検討して高速化
いるメモリが1組である。よって、双方のCPUが1組
することを第一に考え、次に述べるステップでア
のメモリを共有しながら使用することになる。こ
ルゴリズムの再検討を図ることを勧める。
のとき双方のCPUが同時に同じデータをアクセス
することは不可能であるので、双方のCPUが同時
3.1
CPU速度の向上
に同じ画像データをアクセスするような状態に陥
近年、CPUの性能は飛躍的に向上してきた。数
ると双方のメモリアクセスがハードウェア上で調
年前までは、1年ごとにCPUのクロックスピード
停されてしまい、最高パフォーマンスが得ること
が倍々に上がってきた、しかし、最近のIntel社で
ができないことがある。
は1998年にPentiumII/450Mhz、99年にIntel
もうひとつは、市販の画像ライブラリを使用す
PentiumIII/1GHz、00年にPentium4/1.5GHz、01
る場合に、そのライブラリがデュアルCPUに対応
年にPentium4/2.0GHz、02年にPentium4/2.5GHz
して作成されているかということである。もし、
というように、毎年500MHzづつスピードアップ
シングルCPUにしか対応していないのであれば、
されてきている。
処理速度の向上はあまり望めないであろう。
CPUスピードの進化によって、画像処理の分野
でもこの恩恵を享受することができ、高速画像処
3.3
メモリアクセス速度
理が可能になってきた。CPUクロックは98年から
古くは30ピンのSIMMや72ピンのSIMMなどが
今日までの間で5倍になったことによって、単純
使われていたが、数年前から高速でアクセス可能
に処理時間は1/5に短縮された。もっと簡単にい
なメモリが現れ、PC100やPC133のメモリが廉価
えば、画像処理技術者は使用するパソコンを入れ
版のパソコンなどには搭載されている。しかし、
替えるということで何の苦労をしなくても年数を
昨年にはさらに高速なPC1600やPC2100、PC2700
経ることによって、高速画像処理が可能となって
などの高速なものが現れ、高速パソコンに使用さ
きたのである。
れることが多くなってきた。
従来では高速画像処理を実現するためには、処
画像処理でのフィルタ操作などに代表される画
理内容を簡略化し精度・歩留まりを犠牲にした
像データを頻繁にアクセスするような関数では、
り、長い処理時間を我慢して使用したりして十分
メモリ上に記録されたデータ、つまりメモリアク
な処理をすることできなかった。このような不満
セスを高速にすることによって全体の処理速度を
をこの高速CPUを使用することによって解決でき
向上させることができる。
るようになったのである。
3.4
3.2
シングルCPUとデュアルCPU
自作ライブラリと既製品ライブラリ
画像処理に関する教科書は、一般の書店で数多
最近の最高速パソコンでは前述の高速CPUを2
く売られている。これらを参考にして画像処理の
台搭載したデュアルCPUといわれる高速マシンが
ライブラリを自分で作成するということは、その
現れてきた。これは、ひとつの処理をふたつの
ライブラリの振る舞いがきめ細かく良く解るの
CPUに分散させて並列処理を行うことにより、短
で、自分の技術力を高めるという意味では良い方
eizojoho industrial
October 2002︱4
特集 製品で知るリアルタイム画像処理技術
法である。特に学生は、学生研究の一環として学
限定されてしまう。COGNEXのCVL、Matroxの
ぶには、非常に良い題材である。
MIL、などはWindowsベースで開発されており、
しかしながら、企業では今まさに製造している、
あるいは製造しようとする製品に対して即座に適
LinxのHalconはLinuxとWindowsベースで開発さ
れている。
用しなくてはならないとういう大命題がある。こ
OSは各々の画像処理ライブラリに対応するOS
のとき、すべての機能を自分で作成するとなると、
を使用しないと動作させることができないため、
非常に長い開発期間を要してしまい、アプリケー
必然的に開発するアプリケーションのOSは限定
ションができ上がったころには、生産が終了して
されてしまう。よってアプリケーション開発者は
しまったなどということになりかねない。
使用する画像処理ライブラリのためのOSを考え
画像関係のライブラリは、画像処理メーカから
市販されており、これらを使用すると効率よく目
なければならず、機器の全体構成を熟知した上で
開発を進めるということが重要な要素となる。
的のアプリケーションを作成することができる。
市販品では、その画像処理ライブラリがどのよう
3.6
記述言語
に設計され、開発されているのか、ということを
市販されている画像処理ライブラリは、C言語
十分に見極めないとならない。なぜなら、そのラ
あるいはC++言語のインタフェイスを持って書か
イブラリを核として書き上げられたアプリケーシ
れている場合がほとんどなので、その他の部分も
ョンの性能は、そのライブラリの性能によって左
必然的にC/C++言語で記述したほうが全体をまと
右されるからである。
め上げる上で容易である。また、C/C++言語で記
COGNEXなどの大手画像処理ソフトウェアの
メーカではひとつのライブラリを完成させるの
述すると、コーディングや事後のメンテナンスも
容易になりバグも発生しにくい。
に、数人のプロジェクトで1∼2年かけて開発され、
プログラミングでは、関数化しておくことによ
その動作検証には長い年月をかけて集められた画
りそのオブジェクトを再利用可能にするために、
像データベースを使って実証検証される。よって、
数多くの関数を作成する。しかしながら、関数に
その処理結果の精度や歩留まり、動作速度、安定
必要なデータを渡したり関数そのものを呼出すと
性については多くの顧客から支持され、高い信頼
きには、オーバヘッド(無駄な処理)が必要とな
性を得ているのである。
りその部分は直接の処理には関係のない余計な処
理である。特にC/C++言語ではデータの渡し方や
3.5
OSの選択
画像処理に関わらず、ソフトウェアの処理速度
関数によってオーバーヘッドが大きくなることが
ある。
はOSの動作性能が大きな影響を与える場合があ
このようなときは、関数の一部または全体を
る。以前のOSはMS-DOSに代表されるようなシ
C/C++言語のままで別な方法で書き直したり、あ
ングルタスクOSが広く使われていたが、最近の
るいはアセンブリ言語で記述すると、実行速度が
OSはマルチタスクOSが一般的になってきた。身
格段に向上することがある。
近なところではWindowsなどの汎用パソコンに使
画像処理の中で、ピクセルデータを操作するほ
用されているものが一般的であるが、リアルタイ
とんどの場合は整数データの扱いが主となる。た
ム性が保証されているのはVxWorksやQNXなど
とえば、フィルタ処理や、ラベリング処理などは
の産業用のマルチタスクOSに限られる。
すべて整数データによる演算のみで処理が完結す
画像処理ライブラリを1から自作するのなら、
る。このような場合には関数をアセンブリ言語で
どのOSを用いても開発者がそのOSの最高パフォ
記述することによって、処理時間を短縮すること
ーマンスを引き出すように設計すれば問題はな
ができる。また整数だけの扱いであれば、アセンブ
い。しかし、市販のライブラリを核として使用す
リ言語で記述するということは難しいことはない。
るとなると、そのライブラリの適用可能なOSが
私が経験したことではあるが、今から十数年前
5 ︱October 2002
eizojoho industrial
のこと、当時最速のIntel80286のCPUが搭載され
サーチによって全体の位置を特定する方法と、
たマシンで、スキャナから取込まれた1,680×
ブロブによる方法である。この場合対象物が、丸
2,376pixelの大きな画像に対して、特殊なフィル
の中心を軸にして線対称となるので、ブロブを用
タ処理を施すためアルゴリズムをC言語で記述し
いて対象物の重心を求めることによって、対象物
たところ、処理時間に約4分ほど要した。しかし
の位置として代用することができる。COGNEX
処理時間を短縮するために、アセンブリ言語に移
のCVLの場合、ブロブの処理時間はCNLサーチの
植したところ40秒ほどになり時間を1/6に短縮す
処理時間の1/10∼1/20程度で解を求めることが
ることができたという経験をした。
できる。よって、この時間だけ短縮することがで
つまり、C/C++言語で記述した独自の関数が、
きる。
処理速度が遅いために使い物にならないというの
であれば、別な方法を考えるのではなくアセンブ
リ言語に移植するというのも高速化のための手段
である。
3.7
ツールの工夫
対象物の特徴を精査して、使用するツールを厳選
することによって高速に結果を得ることもできる。
たとえば、黒い正方形が白い背景にある場合、
この位置を求めるのに2通りの方法がある。サー
サーチによる位置決め ブロブによる位置決め
図4 サーチとブロブによる位置決め
チによって全体の位置を特定する方法と、キャリ
パーによって物体の上下辺と左右辺を求め、位置
いずれの代用法を用いる場合においても、それ
を特定する方法である。COGNEXのCVLの場合、
ぞれの検出精度が確保できるかどうかの事前検証
キャリパーの処理時間はCNLサーチの処理時間の
を十分に行ってから、実際のアプリケーションに
1/20∼1/50程度で結果を得ることができる。
適用しなければならない。
この例では、キャリパーを上下辺と左右辺の対
してそれぞれ1回づつ適用するので、キャリパー
3.8
対象物の工夫
を2回使用することによってCNLサーチの処理時
画像処理において、処理時間は処理対象となる
間に対して1/10∼1/25程度の時間で解を求める
画像の面積(=画素数)の増減がそのまま処理時
ことができる。
間の増減につながるため、高速画像処理を実現す
るためには、対象物に対する配慮も必要である。
画像処理の3大ツールであるサーチ、キャリパー、
ブロブやモフォロジ、フィルタ処理では顕著に表
れる。サーチであれば対象物に検索範囲が、キャ
リパーであればプロジェクション長とサーチ長
が、ブロブやモフォロジ、フィルタでは処理面積
がそのまま時間に影響する。
たとえば、対象物に位置決めを行うときに頻繁
サーチによる位置決め キャリパーによる位置決め
図3 サーチとキャリバーによる位置決め
にサーチを使うが、このとき、対象物の位置のば
らつきを少なくするために機械的に絞り込んでお
けばサーチの検索範囲を狭めることができ、処理
次の例では、黒い丸が白い背景にある場合、や
はり2通りの方法で位置を求めることができる。
eizojoho industrial
時間を短縮することができる。
また、対象物の測定に対する要求精度と各ツー
October 2002︱6
特集 製品で知るリアルタイム画像処理技術
ルの測定精度を勘案して、対象物を撮影するとき
を工夫して、一度に大きな範囲を撮影し、処理を
の視野範囲を広く設定することによって検索範囲
することで無理にリアルタイム処理をしないでも
を狭める方法もある。
済む場合が多い。最近ではパソコンの普及により、
撮影された大きな画像を格納するためのメモリ
3.9
処理の工夫
画像処理では、その結果の成否は取込まれた画
像で確認する以外に方法がない。このため、モニ
や、大きなデータを高速で処理するための高速
CPUが安価で手に入るようになったため、大きな
画像を扱うことが容易になってきた。
タ上に撮影された画像や処理結果をテキスト表示
し、それに加えてグラフィックなども表示する。実
のところ、この表示関係の処理が思った以上に時
5
ラインカメラの活用
間を要する処理なので、本当に高速に処理を進め
るのであれば、極力表示処理を避ける必要がある。
エリアカメラを利用した回路基板の検査などで
リアルタイム画像処理では、表示処理を行って
は、カメラを高速で移動して逐次画像処理を行う
も画像取込∼処理のサイクルが早すぎて、苦労し
といった一種のリアルタイム画像処理を行ってい
て作成した美しいグラフィック表示が見えないこ
る。この方式では対象物を小さな領域に分割して
とが多いので、自動連続運転時には、あまり必要
画像取込と処理を行うため、分割した数だけの画
ないと思われる。しかし、デバッグ調整時には処
像取込とカメラ移動が生じる。
理結果の成否を確認するために必要なことが多い
たとえば、250×250mmサイズの基板を
ので、最低限のグラフィック表示を付加し、パラ
10μm/pixelの分解能で撮影すると仮定する。こ
メータの設定などで表示/非表示の切替えを設け
のとき必要画素数は25,000×25,000pixelが必要と
ておくことを勧める。
なり、この基板を640×480pixelのエリアカメラ
で撮影すると横方向に40分割、縦方向に52分割に
しなければならない。よって、40×52=2,080回
4
リアルタイム画像処理の必要性
の画像取込と、2,079回の移動が必要となる。
このとき、カメラの撮影時間が33.3msec、移動
リアルタイム画像処理が必要な場面は大きく分
時間を100msecとすると、0.0333sec×2,080回+
けて2通りある。ひとつは、製品が高速で絶え間
0.1sec×2,079回=277secの時間、つまり約4分半
なく流れつづける現場、たとえば清涼飲料水の工
の時間を要する。
場などの現場である。ここでは、ボトルの傷や汚
同じ対象物を同じ分解能でラインカメラを1台
れの検査や、ラベルの貼位置検査、キャップの検
使用して撮影することを考える。ここで、7,500
査などを全数検査しなければならない。このよう
画素、40MHzのラインカメラを使用し25,000line
な現場では高速で流れるボトルのタイミングに合
撮影したとすると、1スキャンあたり、
わせて画像を取込み、その取込中にも同時に処理
7,500pixel×25,000line=188Mpixelで4.7secで取込
をするという、まさにリアルタイム画像処理が必
完了する。設定では4回スキャンし、カメラ移動
要な現場である。
が3回必要となる。カメラ移動に500msec要する
もうひとつは、大きな対象物を高精度で処理す
る必要があるので、エリアカメラでの細かい範囲
とすると、4.7sec×4+0.5sec×3=20.3secですべ
ての取込みが完了する。
の撮影し、そのカメラが高速で移動を繰り返しな
この画像処理システムのカメラを4台直線状に
がら処理を続けなければならない場合である。具
配置し、すべてのカメラを同時にスキャンさせて
体的には、プリント基板やフィルムなどの板物を
並列処理をすることを考えた場合、250×250mm
検査するときにこの手法が使われる。
の基板を1スキャンで一括取込できる。よって、
このケースでは、カメラやレンズなどの光学系
7 ︱October 2002
4.7secで画像取込が完了し、エリアカメラを使用
eizojoho industrial
した場合の1/60の時間で画像の取込みを完了する
ことができる。
6
まとめ
よって、大きな対象物に対してエリアカメラを
使って分割撮影を繰り返すのでような機器であれ
リアルタイム画像処理は、その手法にかかる部
ば、ラインカメラを用いて撮影することによって、
分と高速画像処理との組み合わせによって実現さ
画像取込の時間を1/14以下に短縮することがで
れる。
き、ラインカメラの4台並列処理で取込時間を
リアルタイム画像処理では、画像取込と画像処
1/60に短縮することができるので、無理にリアル
理を平行して行うことによって実現することがで
タイム画像処理を構成しなくとも高速画像処理機
きる。このときの画像処理は高速で行わなければ
器を実現することができる。
ならず、画像処理では、高速化のために「ハード
これと同様の事例では、ワイヤボンダマシンが
ウェアに頼る方法」、「ソフトウェアに頼る方法」、
あり、これはワイヤボンディングするための対象
「測定対象に頼る方法」などが挙げられ、これら
物の位置決めを行うことが必須である。このとき
の方法をうまく組み合わせることによって、最高
現状のマシンでは、パッド認識や、リードフレー
のパフォーマンスを得ることができる。しかし、
ム認識などにエリアカメラを小刻みに移動させて
この組み合わせを選び、機器全体を最適化するの
分割撮影している。このようなケースでも、エリ
は、すべて開発者の手腕にかかっておりその部分
アカメラをラインカメラに置き換えて、リードフ
が各開発者自身のノウハウとなっている。
レームまで含めたチップ全体を、ラインカメラで
スキャンしながら撮影する。この方法を用いるこ
☆FAビジョン株式会社
とによって、機器全体のスループットを向上させ
TEL.048-682-4192
ることができる。そして、この方式を採用した新
http://www.fa-vision.com/
FAX.048-682-4191
型ワイヤボンダマシンも近々市場投入されるであ
ろう。
eizojoho industrial
October 2002︱8