📷

画像処理のための光学設計のさわりだけ

2023/12/06に公開

はじめに

この記事は みすてむず いず みすきーしすてむず (4) Advent Calendar 2023 6日目の記事です。
内容は画像処理用の光学設計(カメラ・レンズ・照明の選定、配置)の入門編となっています。

みすてむず は ITに関わる人のためのテーマフリーのMisskeyサーバです。

筆者の業務経歴をざっくり

''電気系学部卒→機械製造業の会社に入社→〇〇年勤務し現在に至る''

  • 情シス部門に配属、おひとり様開発により社内業務システム構築
  • ソフトウェア開発部門に転属。生産工場向けのオンプレ型ソフトウェアや組み込みシステムのSE兼PGを担当。
  • 所属部門が業務系の部署とFA系の部署に改変され、FA系の部署に転属。オーダーメイド機や搬送ロボットを主体に電気設計/3Dモデリング/ソフトウェア設計/現地施工を担当。
  • 今夏から社内DX推進室に転属。十ン年越しに再び社内開発を満喫中。

という感じで、転職経験はありませんが広く浅く業務を経験し、現在はなんちゃってIT系をやらさせてもらっています。

この記事で扱う画像処理とは

画像処理といっても色々ありますが、この記事では筆者がFA業界で経験してきた産業用カメラによる画像処理のうち、ロボットビジョンを例に扱います。

ロボットビジョンとは

ロボットビジョンは、産業用ロボットと組み合わせてワーク(製品)の位置座標検出や外観検査を行う、「目」の役割を担うものです。
ロボットビジョンの構成として、画像センサ(カメラ)部と画像処理システム部に分かれます。
カメラはさらに2次元ビジョンと3次元ビジョンに分かれますが、この記事では2次元ビジョンを扱います。
また、この記事では、カメラ以外に、レンズ、照明を光学機器として取り扱います。

光学設計の必要性

ソフトウェアで画像処理を行うためには元画像が必要になりますが、その元画像の品質でその後の画像処理の難易度や実現性が変わってきます。
例えばこのような画像は、一般的なソフトウェア画像処理ではどうしようもありません。

ボケ/ブレ 解像度が足りない 照明が不均一

これらをできるだけ抑えた画像を撮影するために、適切な光学設計が必要になってきます。

記事に出てくる定数の名称

  • 焦点距離(f):レンズのピントを合わせたときの、レンズからイメージセンサ(カメラの撮像素子)までの距離。
  • ワーキングディスタンス(WD):レンズから被写体までの距離。
  • 視野(FoV)
    • 水平視野幅(HFoV):あるWDにある被写体を撮影したときに写る水平距離
    • 垂直視野幅(VFoV):あるWDにある被写体を撮影したときに写る垂直距離

次の章では、光学設計の手順に沿って解説しながら、架空の生産ラインの仕様に合った光学機器を選定していきます。

光学設計の手順

  1. 生産ラインの仕様を確認する
  2. 光学仕様をまとめる
  3. 光学仕様に合った機器・レイアウトを決める

1.生産ラインの仕様を確認する

想定する生産ライン

この記事で扱う空想の生産ラインです。
製品がコンベアを流れてきて、コンベアの真上に設置したカメラで製品の座標を認識し、箱詰めロボットが製品をピッキングして箱詰めする生産ラインを考えます。

  • 製品サイズ:幅80[mm] × 奥行60[mm] × 高さ10[mm]
  • 製品上面の色:淡い水色
  • コンベア奥行:400[mm]
  • コンベア速度:250[mm/s]
  • コンベアの色:緑
  • 高さ方向カメラ設置可能スペース:約1000[mm]
  • カメラの水平(H)方向をコンベア流れ方向、カメラの垂直(V)方向をコンベア幅方向に合わせてカメラを設置するとする

2.光学仕様をまとめる

検討が必要な仕様には以下のようなものがあります。

  • 必要な視野幅
  • 必要な解像度

細かく言うと他にも次のようなものを検討する必要がありますが今回は説明を簡単にするため割愛します。

  • 暗室内の色
  • 許容される歪の大きさ
    等...

ではひとつひとつ見ていきましょう。

必要な視野幅

垂直方向の視野幅は、コンベア奥行以上あればよいので、400[mm]以上となります。
水平方向の視野幅は、カメラの撮影から次の撮影までの時間にコンベアが動く距離を考慮し、撮りこぼしがないような値を設定する必要があります。

画像処理の内容や画像処理装置(PCや専用コントローラ)の処理速度にもよりますが、仮に撮影あたり500[ms]かかるとした場合、撮影から撮影までにコンベアが動く距離は
250[mm/s] × 500[ms] = 125[mm]となります。
ここで、画像処理の成功率を上げたいため、同じ製品を最低3回は撮影したいとします。
そうすると、3回撮影する間に動く距離は 125[mm] × 3回 = 375[mm] となります。
さらに、画像処理をするためには製品が視野内に完全に映っている必要があるため、製品のサイズを足すと、
375[mm] + 80[mm] = 455[mm] となります。
以上をまとめると、必要な視野幅は次の通りです。

  • HFoV : 455[mm]以上
  • VFoV : 400[mm]以上

必要な解像度

画像処理に必要な解像度を検討します。
画像処理対象の大きさや形状の複雑さにより、必要な解像度が変わってきます。

低解像度の例 高解像度の例

今回扱う製品は、平面サイズが80[mm] × 60[mm]、形状は四角形・模様は無しと単純なものなので、解像度は0.5[mm/pixel]程度以下であればよいとします。

3.光学仕様に合った機器・レイアウトを決める

カメラを決める

まず、カメラを決めていきましょう。
確認すべき仕様は大きく2つ。

  • カラーカメラ or モノクロカメラ
  • 画素数
カラーカメラ or モノクロカメラ

大前提として、産業用画像処理においてはモノクロカメラを使える場合はモノクロカメラを使用します。理由は以下の通りです。

  • モノクロカメラ
    • メリット
      • 照明の色を変えることにより、特定の色の被写体をよく映るように調整ができる。
      • カラーカメラより画質が良く、処理速度も速い。
    • デメリット
      • 同じような明度で、複数の色を持った被写体の色を分別することが難しい。
      • 同一色で明度が変化するような被写体を抽出することが難しい。
  • カラーカメラ
    • メリット
      • いろんな色の被写体を同時に扱うことができる。
      • 色相でフィルタをかけることができるので、明度の変化に比較的強い。
    • デメリット
      • カラーフィルタを通して撮影するため、モノクロカメラより画質が悪い傾向がある。処理速度も遅い。
      • 色収差により像がにじむ。
      • モノクロカメラより高価。

今回は、製品は単色で、色違いもないため、モノクロカメラを採用します。

画素数

必要な視野幅と必要な解像度から必要な画素数を求めます。
視野幅と解像度と画素数には以下の式が当てはまります。
解像度=視野幅÷画素数
この式を変形し、水平方向、垂直方向の必要な画素数を求めると次のようになります。

  • H画素数:455[mm] ÷ 0.5[mm/pixel] = 910[pixel]以上
  • V画素数:400[mm] ÷ 0.5[mm/pixel] = 800[pixel]以上
選定

これらの要求仕様からカメラを選定してみました。
以下はK社の500万画素モノクロカメラの仕様です。

ユニットセル 有効画素数
3.45μm 2432(H)×2040(V)

画素数が要求通りですね。
(ユニットセルの値は次のレンズ選定で使用します)

レンズを決める

レンズを決めるうえで必要な仕様は大きく1つ

  • 焦点距離(f)
    • 焦点距離が短いと、広角で撮影できますが、歪みが大きくなります。
    • 焦点距離が長くなると、視野角が狭くなりますが、歪みは小さいです。

言い換えれば、同じ視野幅を得るには、焦点距離が短いレンズではWDを短くできますが、焦点距離が長いレンズではWDを長くする必要があります。
設置スペースが許す限り焦点距離の長いレンズを選定し、WDを長くすることで、歪みの小さい画像を撮影することができます。

選定

それではレンズを選定してみます。

まず、カメラの仕様からイメージセンサのサイズを求めます。
イメージセンサのサイズ=有効画素数×ユニットセルサイズ

  • H方向;2432×3.45[μm]=8.39[mm]
  • V方向:2040×3.45[μm]=7.04[mm]

さて、レンズを決めるパラメータとして、上の焦点距離の図の通り
視野幅:イメージセンサのサイズ=WD:fの比例関係があります。
この式を変形し、HFoV、VFoVそれぞれの場合のfの値を求めます。

仮にf=8[mm]のレンズで計算してみましょう。

  • HFoVで計算:WDh=8[mm]×445[mm]÷8.39[mm]=424.3[mm]
  • VFoVで計算:WDv=8[mm]×400[mm]÷7.04[mm]=454.5[mm]

WDが大きいほど視野は広く取れるので、WDhとWDvの大きいほうを採用します。
WD=454.5[mm]が求まりました。

生産ラインの仕様を見ると、

高さ方向カメラ設置可能スペース:約1000[mm]

となっているので、カメラ+レンズの大きさを勘案しても問題ないでしょう。
これでf=8[mm]が確定しました。

照明を決める

照明で、決めるべき項目は大きく2つです。

  • 照明の色
  • 照らし方
照明の色

照明の色によって物体の色をキャンセルしたり、目立たせたりすることができます。
背景と被写体の色や明度の兼ね合いで画像がうまく撮影できない場合でも、照明の色を変えると被写体を撮影できるようになることがあります。

白い照明 赤い照明 青い照明

今回の生産ラインでは製品の色が淡い水色、コンベアの色が濃い緑で、明度に差があるため白い照明でも特に問題なく撮影できそうです。

照らし方

照明を製品に対してどう照らすかは、いくつか方法があります。
照らし方だけでご飯3杯はいけるくらいの記事が書けてしまうのですが、
この記事では説明を簡単にするために2つに大別します。

  • 上から照らす
    • 通常はこの方式を使用します。
       被写体に直接光を当てる方法や、間接光で撮影する方法など、さらにいろんな方式に分かれます。
  • バックライト照明
    • 被写体表面に模様や複数の色があり、画像処理の邪魔になる場合は、バックライト照明を使用することで表面の像を消すことができます。
上から照らす バックライト照明

今回の生産ラインでは製品の色が淡い水色で単色のため、上から照らす方式を採用しましょう。

シャッター速度 / レンズ絞り(F値) / 照明の照度の関係

レンズには絞りがついています。(F値と呼びます。焦点距離のfと混同しないように注意。)
絞りを開放すると画像が明るくなりますが、ピントの合う範囲が狭くなります。(画像の中心にはピントが合っているのに、画像の周囲がピンボケしているようにりやすい)
逆に、絞りを絞っていくと画像が暗くなりますが、ピントの合う範囲が広くなります。

では、絞りをできるだけ絞って、なおかつ画像を明るくするには、シャッター速度を下げれば明るくなります。しかし、今回のラインのようにコンベアが動いている場合、シャッター速度を下げると製品がコンベアに引きずられながら撮影されるため、画像がブレてしまいます。

では、シャッター速度を上げたまま画像を明るくするには、照明の照度上げるしかありません。
このように、実は照明も撮影にとってはとっても大事な要素なのです。

まとめ

  • カメラ:2432(H)×2040(V)画素 ユニットセル 3.45[μm] モノクロカメラ
  • レンズ:f=8[mm]
  • 照明:白
  • WD:454.5[mm]

この仕様で機器を設置すれば画像処理に適した画像が撮影できることができます。

くコ:彡

わかりにくいところがあれば、コメントを頂けると加筆・修正するかもしれません。

アドカレに参加するにあたり、テーマ選定にとても頭を悩ませました。
実は、当初は画像処理のソフトウェア寄りの記事を書く予定でした。
しかし、Zennの内容を見てみるとソフトウェア寄りの記事はとても詳しく書かれたものがすでにたくさん有り、ハードウェア寄りの記事がなかったので、Zennにこんな誰が興味あんねんニッチな記事を載せていいのかしらとは思いつつ方針転換しました。

今後、「ソフト設計者なのになぜか画像処理を全部任される」ようなことになった方々にこの記事が少しでもお役に立てれば幸いです。

Discussion