WEBマガジン詳細

Webマガジン Vol.38- Aug., 2020

Column: イメージセンサーのカメラモジュール化

初めに

Teledyne e2vのイメージセンサーは、汎用・高性能な産業用イメージセンサーとして、ご好評をいただいております。

イメージセンサーから、jpgやmp4などの画像データを出力する一連のハードウエアを、カメラモジュールと呼びます。カメラモジュールの作製には、レンズなどの光学部品や、画像処理プロセッサー、各種のコントローラーやインターフェースなどのハードウエア設計と、ファームウエアなどソフトウエアの適切な実装が必要です。
産業用カメラモジュールには目的に応じた開発が不可欠ですが、開発工数は増加の一途であり、当初から汎用カメラモジュールのご要望を頂くケースも増えています。そこで、今回、ミニマルなユースケースとして、VGAサイズのTe2vイメージセンサーを用いたUVCカメラモジュールを作製しました。

本稿では、イメージセンサーをモジュール化する際の手順と、その応用例について紹介します。

 

イメージセンサの概要

イメージセンサーの本体は、専用のプロセスで製造されたSiダイです。他のLSIと異なるのは、通常のICではSiダイはパッケージ内部に封入されますが、イメージセンサーは光を取り込むため、ダイを直接目視できる構造になっています。
イメージセンサーのパッケージには幾つかの種類があります。例えば、今回使用したTeledyne e2v Sapphire WVGAでは、リッドガラスつきのCLCC (Ceramic Leadless Chip Carrier) と、簡易的なWLCSP (Wafer Level Chip Size Package) の2種をお選びいただけます。

図1 イメージセンサーのパッケージ例(左:CLCC 右:WLCSP)

図1 イメージセンサーのパッケージ例(左:CLCC 右:WLCSP)

イメージセンサーの代表的なピン構成は、以下のようなものです。

  • 入力 : 電源(複数) クロック トリガ など
  • 入出力 : 設定ピン(インターフェースはI2C SPIなど)
  • 出力 : ストロボ フレーム信号 画像データ(パラレル LVDS MIPIなど)

まず、これらのピンに、適切な配線/接続を行うことで、イメージセンサー基板を作製します。

※ Sapphire WVGAの概要はメーカーサイトをご参照下さい。⇒こちら
※ より詳細は、ページ下部のWEBマガジンからのお問い合わせフォームより、お問い合わせください。

イメージセンサーの基板化

図2 イメージセンサー周辺回路リファレンスデザイン例

図2 イメージセンサー周辺回路リファレンスデザイン例

 

イメージセンサーの周辺回路のリファレンスデザインは、Teledyne e2vから公開されています。電源周りのパスコンや、ADCゲイン調整用の抵抗といった周辺素子が、具体的なスペックと共に示されています。これに従って、基板への実装を行うことで、イメージセンサーを安定的に動作させることができます。

イメージセンサーに特徴的な基板設計の手順として、光学設計があります。通常の電子基板は、光の入射にさらされたり、光学部品が直接マウントされたりすることは稀ですが、イメージセンサー基板の場合は、設計の当初から、これらを考慮しておくことが必要です。 まず、撮像物の距離や大きさと、イメージセンサーのサイズから、焦点距離やF値などのレンズのスペックが決まります。市販の光学部品から、それに応じたレンズを選ぶと、付随するレンズマウント/ホルダーなどの寸法も決まります。レンズとイメージセンサーの中心線を合致させてレンズマウントを配置すれば、基板上のフットプリントがわかりますので、パスコンや抵抗などの周辺素子を、これを避けて配置します。この際、周囲の環境光の入射はもとより、基板に実装されたLEDの発光や、電子部品の表面での光の反射などの悪影響を避けるよう、レンズホルダーの遮光にも注意が必要です。

図3 イメージセンサーとレンズホルダーの配置の例

図3 イメージセンサーとレンズホルダーの配置の例


イメージセンサーの出力

イメージセンサーを基板に実装することで、出力をモニターできるようになります。
イメージセンサーの出力仕様を、今回使用のTeledyne e2v Sapphire WVGAを例に説明します。

図4 イメージセンサー上のpixel配置例

図4 イメージセンサー上のpixel配置例

イメージセンサーのセンシングの単位回路をpixelと呼びます。カラーセンサーでは、検知用pixelはRGBベイヤーフィルタと共に配置され、周囲部をダミーpixelで囲われています。Sapphire WVGAの画素数は、752×480で、上図のように配置されています。
イメージセンサーは、各pixelで検知した輝度の値を、順番に出力します。
Sapphire WVGAの輝度出力は、以下のピンで構成されます。
  FEN:フレームイネーブル
  LEN:ラインイネーブル
  DATA<9:0>:輝度データ(10bitバス)

輝度データの出力刻みは、最大でバス幅と同じ10bit(1024段階)です。

次に、イメージセンサーの出力を、波形に従って説明します。

図5 イメージセンサーの画像データ出力フォーマット/タイミング

図5 イメージセンサーの画像データ出力フォーマット/タイミング

イメージセンサーは、露光、読み出し、待機(Wait時間、ない場合もあります)の動作を繰り返します。
イメージセンサーの出力は、読み出しの期間に行われますが、その期間は、フレームイネーブル信号で示されます。上図では、FEN=Lの期間が、フレームイネーブルです。
各フレームイネーブルの間に、各ラインのデータ出力期間を示すラインイネーブルが遷移します。上図では、LEN=Lがラインイネーブルです。ラインイネーブルは、フレーム期間内に、検出を行うpixelアレイの行と同じ回数、遷移します。
そして、各ラインイネーブル期間に、イメージセンサーのデータが順番に出力されます。出力は、クロック信号に同期して、検出を行うpixelアレイの列と同じ回数、行われます。

以上の動作を繰り返すことで、各フレームの輝度データが、ひとまとめに出力されます。
出力されたデータは、クロック信号を同期したISP(後述)に供されます。pixelの位置情報は、FENやLENに同期して識別されます。

※ データの出力仕様は、イメージセンサーにより異なります。詳細は、ご使用のイメージセンサーのデータシートをご確認下さい。
※ センサー入力(各種設定など)の詳細は煩雑なので、本稿では説明を割愛します。

 

 

センサー出力のプロセッシング

イメージセンサーの出力は、画像処理プロセッシングにより、JPG(静止画)やMP4(動画)などのデータ形式に変換されます。
イメージセンサーの出力は、RGB輝度データの羅列(RAWデータ)です。これを画像データに変換するには、数値処理(RAW現像)を行います。同時に、以下のような様々な処理を行うことで、画質の向上や、各種の情報の抽出を行います。

  • 露光量、色彩、明るさなどの補整
  • 画素情報の欠落やエラー、ノイズキャンセルなどの補正
  • HDR合成や、輪郭抽出、AI分析などの画像/数値処理

最後に、出力データを、所望のインターフェース規格に従って出力します。

これら一連の処理を行うLSIとして、ISP(Image Signal Processor)があります。各種のISPが市販されており、目的に応じて選択できます。多くは、センサーへの設定信号を出力する機能を持ち、センサーとのコミュニケーションを行いながら、ファームウエアによる設定/制御に従って、所望の動作を行います。
ISPは、特定の目的に特化/最適化したものが多く、用途が合えば高性能が期待できますが、コストパフォーマンスや、後々の仕様変更の際の機能拡張性に、考慮を要する場合があります。
また、OpenCVなどの各種のフリーライブラリや、AIを始めとした高次元の処理スキームも流通しており、FPGAやマイコン上に、自力で構成することも可能です。こちらは、拡張性を含めた高次元の設計自由度を確保できる一方、開発や検証にさらに工数が必要になります。
ISPメーカーの多くが、実装のリファレンスデザインを公開しています。パスコンや、不揮発メモリ、フレームメモリなどの周辺素子を、リファレンスデザインに準じて基板に配置することで、安定した動作が期待できます。
また、小型のISPであれば、両面実装などでセンサー基板と同一化することで、カメラモジュール全体の小型化や、コストダウンを行うことができます。

図6 システム構成の概要

図6 システム構成の概要

今回、当社で作成したカメラモジュールは、小型のセンサーサイズに最適で使い勝手が良好なR5U8710(リコー電子デバイス)を採用しました。

  • UVC出力に特化しており用途に適合
  • AE、AG、AWBなど機能が充実
  • 低照度撮影、高速fps出力などファームウエアで対応可能
  • 小型でシステムサイズを圧迫しない
  • 色味調整ツールなどのサポートがある

 

Sapphire WVGAカメラモジュールの特徴

小型センサーの機動性を生かした、あらゆる場面に使い勝手の良い、小型カメラモジュールを実現しました。

図7 カメラモジュール外観

図7 カメラモジュール外観

表:カメラモジュール仕様一覧
イメージセンサー TELEDYNE e2v
SAPPHIRE WVGA
1/4″サイズ 4.5umピッチ36万画素
シャッター形式 グローバル/ローリングシャッター選択可能
ダイナミックレンジ > 52dB
SNR ≦ 39dB
画像処理チップ リコー電子デバイス(株) R5U8710
動作温度 ー40~85℃(0~65℃推奨)
保存温度 ー40~85℃
動作電圧 3.3V±5%
コネクタ FFC 0.5mmピッチ 10ピン(USBコネクタへ変更可能)
インターフェース USB2.0
出力形式 UVC
出力画像サイズ WVGA、VGA、QVGAなど選択可能
圧縮形式 YUY2、MJPEG
フレームレート ・標準30fps
・MJPEGの場合、最大120fpsが可能
・27.5fps、55fpsへの設定も可能
レンズ 固定焦点 F=2.68mm f=2.8 Distortion~-4.0% 
(レンズ変更可能:ホルダーや基板の設計変更を要する場合があります。)
レンズマウント M12 x p0.5
画角 VFOV=44° HFOV=64° DFOV=73°
モジュールサイズ 31(W)x28(D)x19(H) mm
固定穴 センター位置26×23 Φ2.1 mm
ファームウエア設定 AE、AWBなど。
  • IFはUVC規格なので、USB端子に接続することで自動的にUSBカメラとして認識されます。
  • 暗い環境に特化したAE機能のオプションを選択可能です。(照度に応じてAEを広範囲に自動制御します。)
  • linux環境からV4L2コマンドによる制御が可能です。
  • インターフェースはFFC 10ピンです。
  • 電源は3.3V単一です。
  • PCなどのUSB端子に直接接続するには、5V→3.3VのDC-DC回路と変換コネクタが必要です。
図8 機器への接続図

図8 機器への接続図

※ FFC→USBコネクタへの変更など、各種のカスタマイゼーションも賜ります。ページ下部のWEBマガジンからのお問い合わせフォームより、お問い合わせください。
※本カメラモジュールの作製は、テラテクノス株式会社に依頼し、開発上のご協力を頂きました。
テラテクノス株式会社: https://www.terratechnos.com/

カメラモジュール応用例:手の平ネットワークカメラ

今回、本カメラモジュールと、小型のシングルボードコンピューター(SBC)を使って、画像のネットワーク配信環境を作製したので、応用事例として紹介します。
使用したSBCはNanoPi Neo2。手のひらサイズの小型サイズに、高速のLANポートと、複数のUSBポートを備えています。USBポートは、通常のコネクタだけでなく、ボードピン上にも出ており、3.3V電源も供給されているので、本カメラモジュールをそのまま接続できます。

図9 NanoPi Neo2のピン構成と接続ポート例(ピンクの追記部)

図9 NanoPi Neo2のピン構成と接続ポート例(ピンクの追記部)

※ 図はhttp://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2より引用

接続に関する設定は不要で、本カメラモジュールを有線接続するだけで、Video deviceとして認識されます。

 

 

前のページ

初めに

次のページ

カメラ接続確認の例:
$ sudo apt install v4l-utils
$v4l2-ctl ––list-devices
USB2.0 Camera: USB2.0 Camera (usb-1c1b000.usb-1):
                     /dev/video0  ← video0として認識している。

 

NanoPi Neo2には多数のポートがあり、複数のカメラモジュールを接続することも可能です。その場合は、一つのUSBポートにシリアル接続するのではなく、各々別のUSBポートに接続します。

NanoPi Neo2 のLANポートをWiFiルータに接続して、ネット環境を構築します。WiFiに接続したPCなどの端末から、所定のURLを通して、カメラ出力をモニターできます。この際、WiFiへのログイン設定により、ある程度のセキュリティを確保できます。

図10 システム構成の概要

図10 システム構成の概要

画像の配信には、RTSPを用いました。RTSP(Real Time Streaming Protocol)は、メディアのストリーミング配信用のプロトコルで、システム上にRTSPサーバを構築することで利用できます。
RTSPサーバ用のライブラリとして、今回はv4l2rtspserverを使用しました。大まかには、以下のような手順で環境をビルドできます。

$ sudo apt install -y v4l-utils subversion liblivemedia-dev
$ git clone   https://github.com/mpromonet/h264_v4l2_rtspserver.git
$ cd h264_v4l2_rtspserver
$ sudo cmake .
$ sudo make install

 

RTSPサーバは、次のコマンドで起動されます。
・ユニキャストの場合
-P はポート番号です。

$ sudo v4l2rtspserver -P 8554 /dev/video0 &

 

・マルチキャストの場合
-P はポート番号です。-mはマルチキャストの引数で、「multi」はURLに反映されます。

$ sudo v4l2rtspserver -P 8554 -m multi /dev/video0 &

 

なお、コマンドの詳細は、以下のヘルプで参照できます。

$ sudo v4l2rtspserver -h

 

配信URLは、モニター画面のLog中にも表示されますが、以下のようになります。
rtsp://195.826.0.21:8554/multi
ポート番号より前の 195.826.0.21は、NanoPi Neo2のIP addressです。

画像の受信は、RTSP対応ソフトから、このURLにアクセスすることで行います。 例えば、Windows PCでは、汎用ツールのVLC media playerが使用できます。

図11 メディア → ネットワークストリームを開く → 「ネットワーク」タブを選択 → RTSP URLを入力

図11 メディア → ネットワークストリームを開く → 「ネットワーク」タブを選択→RTSP URLを入力

マルチキャストの場合、複数のPCから同時モニターすることも可能です。

NanoPi に複数のカメラを接続している場合は、各々にURLを設定することで、同時配信が可能です。受信側では、アクセスするURLを切り替えることで、カメラの切り替えができます。インターフェースにカメラ切り替えのハードを構築する必要がないのも利点です。

以上の方法で、複数のカメラの画像を、任意のデバイスで同時にモニターすることができます。煩雑なカメラインターフェースの構築も、カメラ切替えの機構も不要です。

Appendix

Teledyne e2vでは、センサーとレンズを基板に装着、入出力をFFCコネクタにまとめた、簡易モジュールのお取り扱いがございます。

※イメージセンサーはSnappy 2Mです。詳細は、メーカーサイトをご参照ください。
※ センサー出力を処理するためのISP基板が別途必要です。
※本モジュールに関する詳細は、ページ下部のWEBマガジンからのお問い合わせフォームより、お問い合わせください。

123
ページトップへ戻る