国際画像機器展2013

2013年12月4日(水)~6日(金)にパシフィコ横浜にて

 

国際画像機器展2013

 

が開催されます。

 

画像処理に関連する、カメラ、レンズ、照明、画像入力ボード、画像処理ソフトメーカなどが一同に会します。

 

私はカラー切断法のデモを行っているので、よろしくお願い致します。

 

同時開催で

 ViEW2013 ビジョン技術の実利用ワークショップ

 第23回三次元工学シンポジウム

 ビジュアルメディアExpo2013

 ディジタルホログラフィ装置の作り方・使い方

 

および、無償の国際画像セミナーも開催されます。

 

個人的なチェックポイントは

 

 ViEW2013特別企画

 画像処理におけるCUDA・GPUの活用と性能向上実現へのポイント

 

でしょうか。

 

今年はなんだか、もろもろ面白そうです。

 

私の会社も出展し、詳細は言えませんが、私のやってる物も出展すると思われ、おそらく説明員で立っているので、お気づきの方は、声をかけて下さいね。

 

ガラスやプラスチック歪の簡易撮影

ガラスや透明のプラスチック内に生じている歪を観測するために、2枚の偏光板を直交させた状態に配置し、その間に被測定物を挿入し、バックライトで観察すると、歪のある部分が虹色となって観察する事ができます。

 

 

こちらがその結果↓

 

 

原理的には歪のある部分で光路差が生じ、このように撮影されるそうなのですが、詳しくは直交ニコル法というキーワードで調べてみて下さい。

 

しかし、この方法だと、被測定物の視野以上のバックライトと偏光板が必要となり、少し面倒くさい。

ちゃんとした物だと偏光歪計として20~30万円ぐらいで、市販の物がありますが、高くて手が出ない!

 

と、思っていたら、目の前に偏光板付きの大きなバックライトがあるじゃないですか

液晶モニタが!

 

ということで、Webカメラを液晶モニタへ向けて撮影してみます。

(モニタ上にはメモ帳のウィンドウを最大化して白く表示しています。)

 

 

上の状態で被測定物を撮影すると、このよう↓になり、何も起こりません。

 

 

そこで、カメラの前に偏光フィルタ(PLフィルタ)を無理やり取り付け、モニタを撮影した時にもっとも暗くなるように回転方向を調整します。

 

 

そして、このような状態↓

 

 

で撮影すると、最初の画像↓

 

 

のように歪のある部分が虹色になって現れます。

 

この歪があると、その部分で壊れやすくなるそうですが、単純に見えない物が見えるのは楽しい!

しかも、なんかキレイ。

と言っても、これまでキレイに見える被写体も少ないのですが...

 

これだと偏光(PL)フィルタは1000~2000円だし、Webカメラは、そこそこ良いやつでも1万円ぐらい。

 

ということで、1万円ぐらいあれば、この撮影ができます。

もう少しまじめに、まともなカメラを使って、カメラスタンドでカメラを固定するだけでも、そこそこ安くあがると思います。

 

光学系へ戻る

 

明るさは距離の2乗に反比例する

一般的に明るさは距離の2乗に反比例すると言われます。

 

なぜか???

 

光源のある点から放たれた光は放射線状に広がり、点から距離が同じ位置では明るさが等しくなります。

点から同じ位置という事は、点を中心とした球面上の明るさは等しくなります。

さらに、この球面上の明るさを全て足し合わせると、全ての光量は、どの距離でも等しくなります。

 

 

つまり、明るさは球面の面積に反比例するので、球の表面積 4πr より、

明るさは距離の2乗に反比例する

 

という事になります。

 

でも、距離が遠くても、レンズで集光すれば、明るさは明るくなるのに?!って、ひねくれ者の私はすぐに思ってしまいます。

 

 

なので、ざっくりとは

 

明るさは面積に反比例する

 

と覚えておくと、大体合ってます。

 

”大体”というのは、面積が球面上の面積であればいいのですが、平面上の面積だと、平面上の明るさは距離が短いほど均一ではなく、レンズで集光する場合にも光量のロスがあるので、厳密な意味では無いのですが、マシンビジョンにおける照明の考え方としては、明るさは面積に反比例すると思っておくと十分な場合が多いです。(ちょっと荒っぽく、現場的な感覚ですが...)

 

最初に、光源のある点から放たれた光は・・・と言いましたが、光源が点で出来ている訳ではなく、ある程度の面積を持ちますよね?

 

その場合の考え方としては、例えば豆電球のような場合では、フィラメント上の各点から光るので、点の集まりとして捉えます。

 

 

この明るさは面積に反比例するという感覚を用いると、昔、理科の実験でやった顕微鏡の理屈もなんとなく説明できます。

 

倍率が低い場合は、平面鏡を用いて観察し、倍率が高い場合は凹面鏡を用いるように教わりました。

 

【倍率が低い場合】

 

【倍率が高い場合】

 

上図を見ると分かるように低倍率の場合は、被写体の位置の面積は、あまり拡大されず、高倍率の場合は被写体の位置の面積が大きく拡大されるので、より多くの光量が必要となります。

 

そこで、高倍率の場合は凹面鏡を用いて集光し(面積を小さくし)、被写体の位置での明るさを稼いでから、拡大する事で、光量不足を補っています。

 

と、いい大人になってから思う。

小学生の頃はそれ以前に、なんでこんなに明るい場所(教室)で見てるのに、そんなに明るくする必要があるんだろう???って思ってました。

 

光学系へ戻る

【C#】グローバル変換を使ったアフィン変換

.NETで画像や線などを描画する時はGraphicsオブジェクトに対して描画を行いますが、このGraphicsオブジェクトの座標系をアフィン変換する処理をグローバル変換と言います。

 

グローバル変換された Graphicsオブジェクトに対し描画を行うと、アフィン変換された状態で、画像や線が描画されます。

 

ただ、一般的なアフィン変換では

 

 

のように表現される場合が多いかと多いと思いますが、マイクロソフトの仕様では、上記の行列を転置(行と列を反転する)した

 

 

のように表示されます。

また、アフィン変換の座標系は下図のように、左上が原点、Y軸は下方向、回転は時計周りが正の方向となります。

 

 

そのため、平行移動や拡大縮小、回転の変換行列も一般的な変換行列を転置した表現となります。

 

X軸方向へTx、Y軸方向へTyだけ移動する平行移動の変換行列は、

 

X軸方向へSx倍、Y軸方向へSy倍だけ拡大する変換行列は、

 

原点まわりにθ°回転移動する変換行列は

 

となります。

少し紛らわしいので、一般的なアフィン変換と混同しないように注意して下さい。

このように表現するのは、私の経験的にはマイクロソフトだけ?だと思います。

(参考)

http://msdn.microsoft.com/ja-jp/library/vstudio/c499ats3.aspx

http://msdn.microsoft.com/ja-jp/library/vstudio/8667dchf.aspx

 

しかし、.NET Frameworkでは特に変換行列を知らなくても、アフィン変換用のメソッドが用意されているので、それらを使うと間違いが少ないでしょう。

 

平行移動は TranslateTransform
拡大縮小は ScaleTransform
回転移動は RotateTransform

 

(参考)Graphicsメソッド

http://msdn.microsoft.com/ja-jp/library/system.drawing.graphics_methods%28v=vs.80%29.aspx

 

逆に、行列を使ってアフィン変換する事も可能なので、スキュー変換のような変換も行う事ができます。

(参考)

http://msdn.microsoft.com/ja-jp/library/system.drawing.drawing2d.matrix_methods%28v=vs.80%29.aspx

 

また、アフィン変換を行うと、変換後の座標から、変換前の座標を計算したい場合がありますが、System.Drawing.Graphics.TransformPointsというメソッドがあるので、これを使うと簡単に座標が求められます。

 

これらのメソッドを使って、アフィン変換のサンプルプログラムを作成しました。

 

(ダウンロード)GlobalTransformations.zip(Visual Studio 2008 Exress C#)

 

このサンプルでは見た目上では一般的に用いられる行列の表現に合わせています。
また、エラー処理などは行っていないので、ご了承下さい。

アフィン変換の勉強の手助けになれば...

 

C#へ戻る

【参考書籍】Interface7月号はカメラx画像処理特集

Interface 2013年4月号に引き続き、7月号でも画像処理の特集を扱っています。

 

 

個人的には第1章の位置・角度を測る部分が、ちょっとマニアックな感じが好きかも。

 

第2章のKinectの説明は、MFCな部分が、ちょっと、とっつきにくい。(MFCやった事ないもので。)

しかし、みなさんの関心は、もうすでに新しいKinectの方へ向かっているでしょうね。

(参考)

Xbox Oneの新Kinectは大幅進化、表情や心拍も認識。6人同時に全身キャプチャ

http://japanese.engadget.com/2013/05/21/xbox-one-kinect-6/

 

第7章はタイトル的に、いわゆる「形状マッチング」を期待したところだったのですが、輪郭の抽出と、特徴点のマッチングと、テンプレートマッチングだったのが、ちょっと残念。

 

目次

第1章 実験研究!符号パターンをカメラで撮影して位置・角度を測る

第2章 背骨のゆがみ検出にも!奥行きカメラKinectx画像処理ライブラリOpenCV

第3章 スゴイ画像処理が身近になった理由・・・ハードの進化

第4章 画像処理を試すためのハードウェア

第5章 定番 画像処理ライブラリOpenCVの準備

第6章 実験!色と輝度を整える

第7章 実験!形状認識&マッチング

第8章 実験!動きの検出

 

他、第2特集として、Cコンパイラ&最適化入門 という項目もあります。

こちらはハード寄りな内容なので、苦手だわ~

 

 

参考文献へ戻る

Interface 2013年04月号は画像技術特集

私自身、初となる雑誌への記事の投稿です。

 

 

ブログとは違って、記事を書く緊張感がまるで違いました。誤記は修正できないし、間違った事は言えないし。

と思いながら、慎重に記事を書いていたのですが、結局、誤記が~~~~。大変申し訳ありません。

私の分の誤記内容は、本記事の最後の方にまとめました。

もし、他にもお気づきの点がありましたら、このページにコメント頂けると助かります。

 

私が担当した内容は画像処理の基礎部分ですが、全般的に、これから工業用カメラを使う人の新人教育に丁度良さそうな内容だと思います。

この手の雑誌の場合、著者の会社の宣伝色が強くなりがちなのですが、今回はみなさん割と純粋に技術的な内容で書かれているので、参考になると思います。一部、宣伝色のある部分もあったり。(私の会社の...)

 

目次

第1章 知っておきたい!ディジタル画像

第2章 知っておきたい!画像処理

第3章 知っておきたい!画像変形

Appendix1 知っておきたい!画像合成

第4章 知っておきたい!ディスプレイ表示

Appendix2 知っておきたい!テレビ放送

第5章 知っておきたい!画像ファイル

第6章 知っておきたい!画像圧縮

Appendix3 知っておきたい!動画圧縮

第7章 知っておきたい!画像転送

第8章 知っておきたい!画像処理ライブラリ

Appendix4 知っておきたい!動画圧縮

(参考)

http://www.kumikomi.net/interface/contents/201304.php

 

誤記訂正

●P41 図6 誤)Q → 正)θ

●P48 図8 誤)ー → 正)+   下図、赤字部分

大変申し訳ありませんでした。

 

 

参考文献へ戻る

国際画像機器展2012/View2012が開催されます

今年もいよいよ画像機器展の時期がやってまいりました。

 

2012年12月5日(水)~7日(金)まで、パシフィコ横浜で国際画像機器展2012(無償)が開催されます。

 

画像処理関連の展示会としては夏に開催される画像センシング展と並ぶ大きな展示会です。

無償ですので、画像処理ので行う検査ソフトやカメラ、照明、レンズ、画像入力ボードなどをご検討の方は是非とも参加されると良いと思います。

 

また、何気に画像処理業界への就職を希望されている学生さんにもおススメです。

画像処理業界は、おそらく学生にとっては無名であっても、実力のある、この業界では有名な会社って、結構たくさんあるものです。

 

国際画像機器展2012 

http://www.adcom-media.co.jp/ite/

 

同時にView2012 および 三次元工学シンポジウム という学会発表のようなものも開催されています。

こちらは有償なのですが、最新の画像処理技術に触れることができると思います。

View2012の特別講演では、あのハンマー投げで有名な室伏さんが登場!?

 

View2012

http://view.itlab.org/2012/

三次元工学シンポジウム

http://www.adcom-media.co.jp/ite/sanjigen/

 

さらに同時開催でビジュアルメディアExpo2012(無償)というのも開催されます。

セミナーなどの内容を見ると、AR、プロジェクションマッピングなどのキーワードがちらほらあって、個人的には魅力的です。

 

ビジュアルメディアExpo2012

http://www.adcom-media.co.jp/vme/

 

あと、画像機器展の展示会場の入り口付近?で技術相談コーナーという一角があります。

私は前回の画像センシング展で初めて相談員として参加したのですが、このコーナーの相談員として参加されている方は私以外、画像処理業界のつわ者揃いでした。

画像処理でお困りの方は是非、立ち寄られると良いと思います。

その際には、検査するワークなどを持ち込めるのであるのなら、話が早いかも?しれません。

(今回も参加する事になるのかな~???
もし、私のお気づきの方がいらっしゃったらお声をかけて下さい。少なくとも展示会には行っていると思います。)

 

技術相談コーナー

http://www.adcom-media.co.jp/ite/tech/

 

画像処理へ戻る

TDI(Time Delay Integration)センサカメラ

TDIとは?

TDIとはTime Delay Integrationの略で時間差積分と言いましょうか?時間をズラしながら光量を積算していくセンサです。

 

通常のラインセンサカメラではエリアセンサとラインセンサとの比較でも紹介しているように、センサの露光時間が短くなり、どうしても撮影した画像が暗くなりがちです。

そのため、照明も高輝度の物が必要になったりと、欠点もあるのですが、その欠点を解消しようとしたのがこのTDIセンサです。

 

見た目では、ラインセンサの縦方向に少し画素数(64画素や96画素など)のある、横長のエリアセンサのような形状をしています。

ラインセンサ TDIセンサ

 

動作的には被写体を少しずつズラしながら、被写体の移動に合わせて、輝度値を積算(合計)していくので、光量が大きくなるうえ、積算することで平滑化効果もあるので、ノイズが低減されます。

 

ラインセンサ(左側)とTDIセンサ(右側)の動作イメージでは、こんな感じ↓

 

 

カメラの横方向から見ると、下図のように、被写体の移動に合わせてセンサの積算タイミングも同期しながら撮影されます。

 

 

 

TDIセンサカメラの撮影システム

TDIセンサは、被写体の移動に合わせて同期しながら撮影する必要があるため、一般的にエンコーダ信号を用いて同期しながら撮影されます。

 

ステージに取り付けられたエンコーダ信号を画像入力ボードで受け、画像入力ボードは、エンコーダ信号に合わせてカメラへ同期信号を送ります。

カメラは、この同期信号に合わせて撮影し、画像入力ボードへと撮影データが送られます。

 

撮影システムの概要については下図のようになります。

 

 

カメラ、画像入力ボードについては 光学部品/カメラバイヤーズガイド を参照下さい。

 

注意点

まず最初にTDIセンサは、ラインセンサに比べて格段に取扱いが難しく、カメラ自身も比較的高価な物となります。

そのため、一度ラインセンサで撮影してみたものの、どうしても輝度値がかせげない場合などにご検討下さい。

 

また、TDIセンサは撮影する場所を少しずつズラしながら積算するので、被写体の移動と完全に同期していないと、画像の縦方向がボヤけた画像になってしまいます。

また、積算方向(カメラの上から下か?、下から上か?)の設定(カメラの設定)があるので、ご注意下さい。

これが合っていないと、いくらレンズのピントを合わせても、縦方向にボケた感じの画像となってしまいます。

 

そのため、レンズのピントを合わせるのが難しいのですが、まずは画像の縦方向にエッジの出るような被写体を撮影して、画像の横方向のピントが合うように調整して行きます。

 

次にスキャンレート(撮影をズラすタイミング)を設定して行くのですが、これは画像の横方向の視野幅とエンコーダの送り方向の分解能から、エンコーダの何パルス毎に撮影すればよいか?ある程度計算できますが、このパルス数を調整することで、縦方向のピントが合ってきます。(”ピントが合う”という表現はちょっと意味が違うのですが...)

 

また、TDIセンサは輝度値を積算していくので、撮影した画像の最初の数ライン分(TDIの縦方向の画素数)は、輝度値が不安定な物になるので、その分だけ画像データを除外する事がよくあります。

この画像データを除外する機能は画像入力ボードの役目なので、ボード側の設定を行って下さい。

 

その他

最近ではTDIセンサはやはり高価なので、縦方向に2画素だけあるような、デュアルラインセンサという物が出て来ていますが、基本的な考えとしてはTDIセンサと同じなので、取扱いにはご注意下さい。

 

マシンビジョンへ戻る

ラインセンサカメラとエンコーダとの同期撮影方法

ラインセンサカメラはラインセンサカメラ撮影システムでも紹介しているように、一般的にエンコーダを用いて同期撮影する事が多くあります。

 

フォトセンサ等の外部トリガから各種ディレーの設定を行い、ラインごとのスキャンタイミングをエンコーダと同期撮影する場合は以下のようになります。

(タイミングを制御するのはキャプチャボードの役目なので、各ボードメーカにより多少異なるかも?しれません。)

 

 

ラインセンサではエンコーダパルスの指定パルス毎(上図:指定パルス数2)に撮影していきますが、外部トリガが入力されてから、実際に撮影を開始するまでの微調整をエンコーダパルス数(上図:指定パルス数1)で行い、粗調整をライン数(上図:指定ライン数)で行います。

 

つまり、外部トリガが入力されてから、ラインセンサがスキャン開始するまでのエンコーダのパルス数(ディレイパルス数)は

 

ディレイパルス数=指定パルス数+指定パルス数2×指定ライン数

 

となります。

このことからも分かるように、ラインセンサで画像を撮影した時の縦横比の調整代は上図の指定パルス数2の値で決まります。

この事を考慮した上でエンコーダの分解能を選定下さい。

ただし、エンコーダのパルス数は画像入力ボード側でエンコーダのカウント数をA相の立上りと立下りをカウントし、パルス数を2倍にする(2逓倍)ものや、A相の立上り、B相の立上り、A相の立下り、B相の立下りをカウントしパルス数を4倍にする(4逓倍)ものもあります。

 

注意事項

■露光時間の設定について
ラインスキャンの露光時間については、ラインのスキャン間隔(ライントリガ間隔)で決まるものと、スキャン間隔とは別に露光時間を設定できるものとがあり、露光時間を設定できるか、できないかは、使用するラインセンサカメラに依存します。

 

■ラインセンサカメラの同期撮影設定について
ラインセンサカメラとエンコーダとを同期させるには、画像入力ボードからラインセンサカメラに同期信号を入力させる必要があります。そのためには、画像入力ボードとラインセンサカメラの両方の同期撮影設定が必要となります。

同期撮影には外部同期内部同期という言葉があり、カメラを基準にしてカメラ外の信号に同期して撮影するのが外部同期、カメラ内で生成した信号に同期して撮影するのが内部同期と言います。

外部同期は外部トリガ、内部同期はフリーラン自走モードなどとも言われる場合があります。

※ここでの外部トリガというのは、最初の図のフォトセンサからのトリガ信号ではなく、ラインスキャンの同期信号(ライントリガ)の事を差すので、混同しないようにご注意下さい。

 

■エンコーダのパルス選定について
エンコーダのパルス分解能が高い程、ラインセンサカメラで撮影した時の画像の縦横比の調整がより微調整が可能となりますが、画像入力ボードに接続できるエンコーダ信号に最高周波数の制限がある場合が多いので、特に高速で撮影する場合などはご注意下さい。

 

■スキャンレートの設定について
スキャンレート(ラインスキャンする間隔)は上図の指定パルス数2で設定する事ができますが、当然ながらカメラの最速スキャンレートよりも速い設定をする事はできません。
特に高速でスキャンする場合、スキャンレートの設定は、画像の分解能のみならず、スキャン速度(時間)も考慮した上で設定して下さい。

 

■エンコーダパルスの安定性に関して
エンコーダとラインセンサカメラを同期させて撮影するときは、できるだけエンコーダのパルスが安定(定速)した状態で撮影して下さい。モータの定速区間での撮影をオススメします。

 

■駆動モータにステッピングモータを用いる場合の注意点!
駆動モータにステッピングモータを用いる場合、さらに注意が必要です。
ステッピングモータの移動量を横軸に時間、縦軸に移動量(回転角度)を取ると下図のようになります。

 

 

上図の丸の部分をパルスレベルで細かく見ると、下図のように階段状に回転角度が変化しています。
これは、モータがステップ駆動なので、このようになるのですが、ステージの慣性モーメントや回転速度によっても、フラツキ具合は異なるので、一概には言えませんが、台形駆動の定速駆動であっても、パルスレベルでみると一定では無いという事に注意して下さい。

 

さらに、これを踏まえた上で、エンコーダを使ってステージとラインセンサを同期させて撮影する事を考えます。
エンコーダと同期してラインセンサで撮影するという事は、一定間隔の角度で1ラインごと撮影するという事となります。
そこで、例えば下図のように赤の横線の間隔で撮影すると、青い線との交点の間隔(時間)でラインセンサ1ラインごとに撮影されるので、下図の縦線(オレンジの線)の間隔がラインセンサのスキャン間隔という事になります。

 

ここで注意しないといけないのが、上図のようにスキャン間隔がバラついてしまうと、場合によってはラインセンサカメラの最速のスキャンレートよりもエンコーダ同期信号の間隔(時間)の方が短くなってしまう場合があり、撮影できないラインが発生してしまう場合があります。

 

ラインセンサで撮影する場合、

 

最速のスキャンレート(時間)<エンコーダ同期信号の間隔(時間)

 

の条件を満たす事が必要です。

 

 

そうならないためにも、ステッピングモータでの移動(回転)分解能に対して、ラインセンサの撮影分解能(スキャン間隔)は余裕を持ってラインセンサ(最速スキャンレート)、モータ、ステージ(移動分解能)を選定して下さい。

 

このばらつき量はいろいろな条件が絡むので、一概には良く分かりませんが、経験値的にはモータ1パルスの±50%程度、ばらつく事を覚悟しておいた方が無難だと思います。

 

この、ステッピングモータがカクカク動く現象はモータ業界では、振動や騒音という用語で表現されます。
(参考)オリエンタルモータの技術資料 この↓資料のH-37ページを参照下さい。
http://www.orientalmotor.co.jp/knowledge/technical/pdf/SteppingMotor_Tech.pdf

振動が原因によりラインセンサで撮影できない現象が発生した場合、スキャン間隔(送り方向の撮影分解能、スキャンレート)は装置や検査の要求仕様などで決まってくるため、変えられないと思うので、マイクロステップ対応のモータドライバなどの低振動タイプのドライバの選定をするなどして、ステッピングモータの移動分解能に対してエンコーダ同期信号の分解能が大きくなるように設計して下さい。

 

関連記事

画像入力ボードとは?設定の勘所、CC信号とは?

ラインセンサカメラ撮影システム

ラインセンサカメラは1ラインの画素数が現在では最大16384画素のカメラがあるなど、高解像度で撮影できるという魅力があるものの、被写体を動かす必要があり、エリアセンサを使うよりも、どうしても撮影システムが複雑になってしまいます。

 

また、エリアセンサと比べると露光時間が高速(短くなる)になるがゆえの問題も発生しがちです。

 

今後、それらの問題等についても、まとめていこうと思いますが、まずは一般的な撮影システムは下図のようなイメージとなります。

 

ラインセンサカメラの選定方法

ラインセンサカメラを選定するには、おおむね以下の仕様を決める必要があります。

 

画素数 512, 1024, 2048, 4096, 6144, 7450, 8192, 12288, 16384など
画素サイズ 4.7, 5, 7, 14 μmなど
データレート 20,40,50,60,80,120,160,320,640Mhzなど
カメラ出力 CoaXPress,CameraLink,デジタル,アナログなど
レンズマウント Cマウント, Fマウント,M42,M72 など
その他 露光制御、シェーディング補正、アンチブルーミングの有無、
本体寸法など

 

上記の組み合わせは、それぞれ任意に組み合わせる事が出来る訳ではありませんが、ある程度意識する必要があります。

例えば、入手しやすいニコンの一眼レフ用のレンズ(Fマウント)を用いたい場合は、最大の画素数は7450画素ぐらいまでとなります。センサ長(画素サイズ×画素数)が43mmを超える場合はご注意下さい。

それ以上の画素数を使用する場合は、レンズマウントもM42、M72となり、レンズも高価なものとなります。

 

画素数、画素サイズ

画素数を決めるには、撮影する視野幅、撮影分解能(mm/pix)を決める必要があります。
例えば、

 

 視野幅     300mm
 最小欠陥サイズ 0.2mm

 

だとすると、まずは最小の欠陥を検出するのに何画素必要か?が重要になります。
何画素必要かは画像処理担当者と相談するなり、実際には実験しながら決める場合も多いと思いますが、ここでは4画素必要だとすると、

 

 画素分解能 = (最小欠陥サイズ) / (必要画素数) 
         = 0.2 / 4 
         = 0.05(mm/pix)

 

となります。

あとは視野幅より

 必要画素数 = 視野幅 / 画素分解能 
        = 300 / 0.05 
        = 6000画素

これより、6000画素以上のカメラ6144画素を選定します。

 

ただし、経験的には必要な画像分解能が約10μm以下となる場合は、レンズの限界でクッキリと10μmの物が撮影できなくなってくるので、ご注意下さい。

また、この如何にクッキリと撮影できるか?という問題ですが、カメラの中心付近で撮影するのと、量端部分で撮影するのとでは、性能が異なり量端に近いほど不利となります。

 

ここで重要な事は大は小を兼ねないということ。
同じデータレートの場合、画素数が少ない方がより高速にスキャンすることができます。
また、画素数が少ない方がラインセンサの画素サイズの大きいカメラを選定できる可能性が
あるので、画素サイズの大きい方が一般的に明るく撮影する事が出来ます。

 

データレート、スキャンレート

データレートは画像のデータを吐き出すための同期信号の周波数を表し、320MHz、640MHzというような表現をします。

 

スキャンレートは1ライン分のデータを1秒間あたり何ライン取得するか?の値で、40kHzや70kHzというように表現します。一般にカメラの性能を表す場合は最速のスキャンレートで表す場合が多いです。

また、スキャンレートはHzの逆数を取って、25μSec、14μSecと表現する場合もあります。

 

 

スキャンレートが遅い(スキャン間隔の時間が長い)と縦方向につぶれた画像となり、
スキャンレートが速い(スキャン間隔の時間が短い)と縦方向にまのびした画像となります。

 

スキャンレートが遅い スキャンレートが最適 スキャンレートが速い

 

スキャンレートが速いと必然的に露光時間も短くなってしまうので、画像が暗くなってしまいます。
スキャンレートが遅いと露光時間を長く取る事ができるので、明るく撮影する事が出来るのですが、
露光時間に関しては露光時間≒スキャンレートとなるカメラや、露光時間をスキャンレートとは別に
設定できるカメラがあります。(当然、スキャンレートよりも長い露光時間の設定はできません。)
露光時間を設定できないカメラの場合は、カメラのゲイン設定やレンズの絞りなどで画像の明るさを
調整します。

 

[計算例]
 ワークの送り速度  200mm/sec
 送り方向の分解能  0.05mm/pix

 

の場合、

 

 スキャンレート = (送り速度) / (分解能) = 200 / 0.05 = 4kHz
          = (分解能) / (送り速度) = 0.05 / 200 = 250μsec

 

となるので、最速スキャンレートの4kHz以上のラインセンサカメラを選定します。

スキャンレートは検査処理能力に直結するので、速くしがちですが、スキャンレートが速いと露光時間も短くなり、その分、明るい照明が必要となります。また、スキャンレートが速いと、カメラのケーブル長も長くするとノイズの影響を受けやすく、あまり長くする事ができません。最悪、1Mでないとダメなケースもあるので、ご注意下さい。最近では、この問題を解決するため、ケーブルの中間部分を光ファイバーに変換しケーブル長を延ばしたり、高速のスキャンレートが可能でありながら、ケーブル長を延ばす事のできるCoaXPressという規格も登場しています。

 

カメラ出力

カメラのデータ出力にはCoaXPRess、CameraLinkとデジタル、アナログとがあります。
現状では低速低分解能のカメラではアナログ、高速高分解能のカメラではCameraLinkが多くなっていますが、カメラリンクケーブルは規格品ですので、ケーブル長が1、2、5、7、10、15mのいづれかになります。
また、高速データレートのラインセンサカメラとなると、使用できるケーブル長も制限される場合が
ありますのでご注意下さい。

 

レンズマウント

ラインセンサカメラの場合、センサ長が比較的長いので、
ニコンのFマウント もしくは
ペンタックスのKマウント
を使うのが一般的です。(Fマウントの方が多い)

 

これらは35mmフィルムレンズ用のレンズですので、センサ長が43mmまでのカメラで使用が可能です。
他にも、よりガタの無いようにレンズを固定するため、M42のねじマウントを使ったり、
センサ長が43mmを超える場合は、M42、M72のねじマウントを使う場合があります。
レンズメーカについては光学部品/カメラバイヤーズガイドのページを参照下さい。
レンズの選定についてはレンズ選定(視野、撮影距離など)のページを参照下さい。

 

ただし、経験的には、Fマウントのレンズを使う場合には、視野やワーキングディスタンスなどから、レンズの焦点距離を計算して、レンズを選定するよりもニコンのマイクロニッコール55mmのレンズを用いてワーキングディスタンスを調整し、撮影したい視野幅に合わせこむ方が綺麗な画像を撮影できる場合が多いです。

 

まとめ

カメラの選定については照明や画像処理なども考慮し選定を行って下さい。
むやみに撮影分解能やスキャンレートを上げてしまうと、高価なカメラ、レンズ、照明、画像入力ボードが必要となってしまうので、トータルバランスが重要です。

 

ラインセンサカメラのメーカについては、カメラ接続リストとカメラメーカーリンクのページのPDFファイルが参考になると思います。

(※私の会社のページですが、うちのボードを選択して頂けると嬉しいです。)

 

他にもマビックというマシンビジョンの方法をまとめたホームページに産業用CCD/CMOSカメラ検索CameraChoiceというページがあるので、こちらも参考になると思います。

カラーエリアCCDセンサのしくみ(単板式、三板式)

カラーのエリアセンサのカメラでは3CCD方式(三板式)単板式というのがあります。
工業用のカラーのCCDカメラでは、単板式のカメラの方が多く採用されています。
他にも富士フィルムが採用したハニカム方式やシグマのカメラで採用されている三層方式などがあります。

 

3CCDセンサ(三板式)

ホームビデオカメラでもおなじみの3CCD方式。
ダイクロイックプリズムでR,G,Bに分光して、各色用のエリアセンサで撮影します。

 

 

CCDを3つ使うので、カメラ本体が大きくなりやすく、価格も高価になってしまいますが、色の再現性の面では単板式に比べて有利となります。

 

単板式

通常のモノクロエリアCCDの各画素の上にR,G,Bそれぞれの色のみを通す光学フィルタを下図のような配置で装着し、画像を撮影後、各画素ともR,G,Bの輝度値を演算処理しカラーの画像に変換します。

 

 

 

この並びをベイヤ(Bayer)配列と言います。

 

カラー画像への変換は下図のように各R,G,Bの撮影出来ていない画素については周辺の画素の輝度値を用いで補間し、カラーへと変換します。

 

ほとんどの工業用のCCDカメラではカメラ内部でカラーに変換されますが、画素数の大きなカメラや高速のカメラでは、カラーに変換することで、データ容量が1画素8ビットから24ビットに容量が3倍となってしまうため、下図のようにモノクロのまま出力される場合もあるので、ご注意下さい。

 

 

高価なデジタルカメラなどでは、カラーの変換をカメラ任せにはしないでソフトで処理る場合もあり、変換する前の画像データをRAWデータ、変換する処理のことをRAW現像と呼びます。(たぶん、デジカメ用語)
RAW現像は他にもベイヤ演算デモザイキングなどと呼びます。

 

もっとも基本的な補間方法としては、たとえば赤の画素では上下左右の輝度値を平均し緑の輝度値を求め、斜め方向の輝度値を平均して青の輝度値を求めます。
同じ用に緑や青の画素についても処理を行うと、カラーの画像へと変換することができます。

 

比較的有名な変換方法には適応型カラープレーン補間法ACPI:Advanced Color Plane Interpolation)というのがあるので、上記キーワードで検索してみて下さい。

 

しかし実際にベイヤ演算を行ってみると、擬色と呼ばれる本来の色とは異なる色が出たり、通称ラーメンノイズと呼ばれる渦巻き状のパターンが発生したりと、なかなかうまくいきません。

 

これらのノイズを如何に防ぐかが各カメラメーカーやRAW現像ソフトメーカの腕の見せ所で、各社のノウハウとなっているため、私は実際にどうのような処理を行っているのか?よく分かっていません...

 

RAW現像については、現像ソフトで比較的有名な市川ラボラトリーのSILKPIXというソフトがあるので、下記ページを見て頂くと参考になると思います。

http://www.isl.co.jp/SILKYPIX/japanese/special/movie/

 

このように単板のカラーカメラはR,G,Bの足りない画素を補間してカラー画像を撮影しているので、画像の輪郭などが重要な場合、モノクロカメラの方が性能は良くなります。

 

以前は、カラー画像を使えば、モノクロにも変換できるし、カラーカメラはモノクロカメラを兼ねる!と思っていたのですが、モノクロカメラの方が有利な場合もあるので、特に色情報を必要としない場合はモノクロカメラを使う方がオススメです。(データ容量も少なくてすみますし...)

 

このへんの話は、少し古いですが、トランジスタ技術の2009年7月号に書いてあるので、ご興味のある方は、参照してみて下さい。

バイラテラルフィルタ

ガウシアンフィルタなどのフィルタでは、ノイズをできるだけ除去しようとすると、輪郭もボケてしまうという欠点がありました。
この欠点を解決しようとした処理アルゴリズムがバイラテラルフィルタ(bilateral filter)です。

 

バイラテラルフィルタは処理前の画像データの配列をf(i, j)、処理後の画像データの配列をg(i, j)とすると

 

 

となります。

 

ただし、がカーネルのサイズ、σがガウシアンフィルタを制御、σが輝度差を制御しています。

と言われても、何だか式が難しくて良く分かりません。

 

でも、分母分子に出てくる最初のexpの部分はガウシアンフィルタで見たことがあるな~

という事に気が付けば、突破口が開けます。

 

2つ目のexpの部分が良く分からないので、とりあえず取っちゃってみて、

 

 

とすると、分母の部分がガウシアンフィルタと少し違うけど、Σの範囲が-W~Wなので、(2W+1)×(2W+1)のカーネルサイズのガウシアンフィルタになっています。

 

結局、分母はカーネルの値の合計なので、やっぱりガウシアンフィルタそのものだという事に気が付きます。

 

ここで、ガウシアンフィルタを使って、どうやれば輪郭をぼやかさず、ノイズだけを除去できるか?を考えると、カーネルの中心の輝度値と差の少ないところだけをガウシアンフィルタで平滑化すればいいのではないか?という発想が浮かびます。

 

例えば次のような画像において、

 

四角で囲まれた部分を拡大し注目すると、5x5のガウシアンフィルタの場合、中心の輝度値に近い部分を重み「1」、輝度差が大きい部分は重みが「0」になるようにして、

 

 

一般的な5x5のガウシアンフィルタの係数↓、

 

 

に重みをかけると、それぞれのカーネルの値は

 

カーネルの合計の169で割る カーネルの合計の209で割る

 

となります。

このようにして、場所、場所のカーネルの値を画像に合わせて変えて行くと、輪郭を残しつつノイズだけを除去できそうな感じがします。

 

しかし、輪郭付近の重みは「1」にするべきか?「0」にするべきか?少し悩みます。

そこで、カーネルの中心の輝度値との差に基づいて、重みを「0.3」や「0.8」のようなグレーゾーンを設けるために、輝度差を横軸にした正規分布を用いてみます。

 

正規分布のグラフはこんな感じ↓

 

になっていて、中心の0付近ほど値が大きく、外側(+方向、-方向)へ行くに従って値が小さくなります。

この性質を使ってカーネルの中心の輝度値との差「f(i, j)- f(i + m, j + n) 」を横軸にとった正規分布の式は

 

 

となり、これを重みに使うと、「1」「0」だった重みが、輝度差が小さいと重みが大きく、輝度差が大きいと重みが小さくなるように、なだらかに変化します。

 

この正規分布を重みとしたのが、まさにバイラテラルフィルタなのです。

つまりバイラテラルフィルタは

 

正規分布の重み付きガウシアンフィルタ

 

なのです。

 

ここで、最初に示したバイラテラルフィルタの式を見てみると、

分子は(2W+1)×(2W+1)サイズのカーネルの範囲内の輝度値に、ガウシアンフィルタの係数をかけ、さらにカーネルの中心との輝度差を用いた正規分布の値を掛け合わせた値、

分母はカーネルの合計値で、カーネルの合計値が1になるように調整しています。

 

Wはカーネルの大きさ、σは通常のガウシアンフィルタの係数と同じ。

σの値が、カーネルの中心の輝度値との差をどの程度許容するか?を制御している事が分かります。

そのため、σの値を大きくしていくと、ただのガウシアンフィルタの処理に近づき、輪郭もぼやけてしまいます。逆にσの値を小さくし過ぎると、ノイズ除去効果が弱くなります。

 

そこで、実際にはエッジを保持しつつノイズをできるだけ除去したい場合は、1回のバイラテラルフィルタでσ1、σの値を調整しようとするよりも、バイラテラルフィルタを何回か繰り返した方が効果的です。

 

原画 1回目 2回目
3回目 4回目 5回目

 

このように、バイラテラルフィルタはガウシアンフィルタのカーネルに輝度差に基づいて重みを付けている訳ですが、この、×××に基づいて重みを付ける処理という考え方は、処理を安定させるポイントになったりします。

 

例えばロバスト推定法なんかも近い感じ。

 

画像処理アルゴリズムへ戻る

フラットフィールドコレクション(FFC)

フラットフィールドコレクションとは?

フラットフィールドコレクション(Flat Field Correction【略: FFC】)とは、撮影した画像の輝度値を均一にする補正で、比較的高価な工業用のカメラに搭載され、主にラインセンサカメラには、このフラットフィールドコレクションの機能が搭載されています。

 

そもそも、真っ白な被写体を撮影した時に、なぜ撮影した画像の輝度値が均一にならないのか?と言うと、考えられる要因として

 

  • レンズのシェーディングによる影響
  • 照明の明るさのムラ
  • CCD素子1つ1つの感度のばらつき

 

などが挙げられます。

 

フラットフィールドコレクションを行うと、これらの要因をまとめて補正する事が可能となります。

 

   
フラットフィールドコレクション前 フラットフィールドコレクション後

 

このフラットフィールドコレクションは、カメラのアナログオフセット(足し算/引き算)、アナログゲイン(掛け算/割り算)、デジタルオフセット(足し算/引き算)、デジタルゲイン(掛け算/割り算)を駆使して輝度値が均一になるように補正されます。
多少、実際の補正手順が面倒なので敬遠されがちですが、補正アルゴリズムを理解すると、ある程度、納得できると思います。

 

補正アルゴリズム

カメラにより実際の処理は異なる部分があると思いますが、おおむね以下の流れでフラットフィールドコレクションは行われます。

 

まず、最初にフラットフィールドコレクションによる輝度値の補正により、輝度値が飽和しない(輝度値が255を超えない)ようにするため、画像の最大輝度値が、おおむね255の80%程度(204ぐらい)になるように、実際の撮影する環境(照明、露光時間など)においてアナログゲインを調整します。

 

 

上図を見ても分かるように、画素のよっては入力光量が小さい場合(暗い場合)、出力輝度値が0になってしまう画素がある可能性があります。

 

これを補正するため、入力光量を0にして(レンズにキャプをする)、アナログオフセットで画像の最小輝度値が0にならないように調整します。

 

 

この状態で、カメラの黒レベル補正(FPN)の機能を実行すると、カメラ内部では、黒レベル(輝度値0)において、各画素の輝度値が0になるようデジタルオフセットの値が調整されます。

 

 

次に実際の撮影状態(照明、露光時間など)にして、できるだけ反射や汚れ、ムラの少ない白の被写体を撮影し、カメラの白レベル補正(PRNU)の機能を実行します。

 

すると、上記の撮影状態で全画素が指定した目標輝度値(輝度値を指定できないカメラもある)になるように、カメラ内部では全画素のデジタルゲインの値が調整されます。

 

 

この一連の処理を行う事で、最初に紹介したように、画像全体が均一な輝度値となる画像を得る事が可能となります。

 

また、上記の説明は、以下の順序でゲイン/オフセットの補正が行われる事を前提に説明しています。

 

CCDの電気信号アナログオフセットアナログオゲインデジタルオフセットデジタルゲイン

 

この機能は、主に二値化処理を用いた処理による画像検査などにおいては、効果を発揮します。

エリアセンサとラインセンサとの比較

センサの比較

エリアセンサ ラインセンサ
センサ形状
CCD素子が縦横方向に並び、二次元的に
画像の撮影ができる。
CCD素子が横一列に並び、一次元的
な画像の撮影しかできない。
画素数 画素数 30万画素(640×480画素)
~500万画素程度(2456×2058画素)がメイン
最大2000万画素(5344×4008画素)
1024画素 ~7450画素程度がメイン
最大16384画素

 

ラインセンサはあまりなじみが無いかもしれませんが、身近なラインセンサにはコピー機などがあります。
コピー機は2組の鏡を絶妙に動かしながら、光学的な撮影距離を変えずにスキャン(移動撮影)しているので、興味があれば動作を覗いて見ると良いでしょう。

 

ラインセンサは何と言っても高解像度の画像を撮影できるので、魅力があるのですが、ワークを移動しながら撮影しないといけないため、エリアセンサに比べどうしても撮影システムが複雑になってしまいます。

 

また、エリアセンサのフレームレートは30~100fps程度、ラインセンサは3kHz程度、露光時間にするとエリアセンサは10~30mSec、ラインセンサは300μSec程度。

 

もちろん例外はあるのですが、ここで大事なのは露光時間(フレームレート、スキャンレート)は実に100倍!近く異なるということ。
その分だけラインセンサでは明るくちらつきの無い照明が必要となります。

 

このように↓

ラインセンサで撮影した画像がしましまになってしまう場合は、蛍光灯のチラつきの影響の場合が多いです。

 

センサの種類にはCCDCMOSタイプがありますが、高解像度で高速フレームレートのエリアセンサとなるとCMOSタイプのカメラが多くなってきています。が、CMOSタイプでは欠陥画素(明らかに感度の悪い画素)があるのがつきものです。
カメラによってはカメラの内部でこの欠陥画素を補正してしまうものもあるので分かりづらい場合もありますが、、欠陥検査などにCMOSのカメラを使おうとすると、どうしてもこの欠陥画素が邪魔をするので、ご注意下さい。というよりは使わない方が良いと思います。

 

【欠陥画素の例】

周りより白い部分や黒い部分が欠陥画素(画像を拡大表示しています)

 

 

また、CMOSにはグローバルシャッタローリングシャッタというのがあり、グローバルシャッタは全画素を同時に露光するのに対し、ローリングシャッタでは横1ラインごとに順次露光していくので、動いている被写体を撮影すると被写体が歪んでしまいます。安いCMOSカメラでは、このローリングシャッタのカメラが多いのでご注意下さい。

 

エリアセンサ向きな撮影方法

エリアセンサは撮影システムが簡単に組めるので、まずはオススメなのですが、ラインセンサでは撮影が困難なものには、製造ラインから流れてくるワークの撮影などがあります。

 

 

ラインセンサ向きな撮影方法

ラインセンサは1度に1ライン分しか撮影できないのですが、それを逆手に取ると、円筒物の撮影には向いています。
ラインセンサの場合(下図、右側)、円筒の影の影響を受ける事なく撮影する事が出来ます。

 

 

また、ワークの送り方向には画素数をいくらでも取れるので、フィルムやシート、ガラス、鉄板などの長尺物の撮影には最適です。

 

 

ガラスやフィルムの検査などにおいては、1台のカメラだけでは解像度が不足する場合があるので、ラインセンサを横1列に並べて撮影する場合もあります。

 

 

まとめ

エリアセンサやラインセンサ、CCDやCMOSにはそれぞれ特徴があるので、撮影の要求に合わせてお選び下さい。
また、デジカメの世界では画素数が多い程、良いカメラのようになっていますが、画素数が多いほどフレームレートやスキャンレートが遅くなったり、画素数が多いと画素サイズも小さくなりがちで、一般に感度も悪くなるので、ご注意下さい。
ようは、適材適所なのです。

 

関連記事

光学部品/カメラバイヤーズガイド

 


ロータリーエンコーダのしくみ

ロータリーエンコーダには大きく分けて、出力するパルスの種類の違いにより

 

  • インクリメンタルエンコーダ
  • アブソリュートエンコーダ

 

の2種類があります。
また、今回は回転用のロータリーエンコーダについて解説していますが、直線的な移動量を制御するための、リニアエンコーダというのもあります。
身近なロータリーエンコーダとしてはマウスのホイール部分もロータリーエンコーダの一種です。

 

インクリメンタルエンコーダ

特徴

エンコーダの軸が1回転するごとにエンコーダ分解能分のパルスが出力されます。
アブソリュートエンコーダに比べて安価。
A相、AB相、ABZ相出力タイプがあります。
出力信号にはオープンコレクタ、ラインドライバ(RS-422)出力などがあります。
エンコーダ呼称のパルス数[パルス/回転]は1相あたりのパルス数をさします。
高分解能のパルス数が必要な場合、A相、B相の各立上り、立下り信号をカウントし、パルス数を通常の4倍カウントする場合があります。この手法を
4逓倍と言います。
ラインセンサカメラと組合せてエンコーダを使う場合は一般に、このインクリメンタルエンコーダが用いられます。

※上図は模式図です。実際のエンコーダではAB相用のスリットは共通のスリットを用いて、パルスの90°位相をずらした位置に受光センサが配置されます。

 

エンコーダの回転方向

エンコーダを軸側から見て、時計回りをCWClock Wise)、反時計回りをCCWCounter Clock Wise)と言います。

 AB相、ABZ相のエンコーダであれば、エンコーダの回転方向を認識する事ができます。

逆にA相のみのエンコーダだと、回転方向は認識できません。

 

エンコーダがCW方向に回転しているとき、B相のパルスはA相よりも1パルスの波長の1/4だけ遅れて出力されます。

 

これにより、A相立上り→B相立上り→A相立下り→B相立下り→A相立上り・・・という順番でパルスが出力されます。

 

 

エンコーダがCCW方向に回転しているとき、A相のパルスはB相よりも1パルスの波長の1/4だけ遅れて出力されます。これにより、B相立上り→A相立上り→B相立下り→A相立下り→B相立上り・・・という順番でパルスが出力されます。

 

 

このように、回転方向がCW方向、CCW方向と異なると、出力されるA相、B相のパルスの立上り、立下りの順番が異なることから、回転方向が判断できます。
Z相は1回転につき、1パルスだけ出力され、回転角度の基準(原点)や回転数のカウントに使用されます。
ただし、Z相の位置は見た目分かりづらい物が多く、Zの位置を調整するのは困難な場合が多いので、
Z相を原点復帰(イニシャライズ)用に使うことはまれで、別途、フォトセンサを付けるのが一般的です。

 

アブソリュートエンコーダ

特徴

エンコーダの回転角度に合わせて、回転角度を取得することができます。
電源投入時でもイニシャライズ(原点復帰)処理を必要としません。
回転角度は2進数で取得でき、たとえば1回転を256分解能の出力のときは8ビット出力となります。
主にサーボモータなどに使われています。

 

主なエンコーダメーカ