「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
画像処理について纏める。
- 高性能 & 廉価なカメラ、CPUの登場
- アルゴリズムの成熟
- OpenCV等のライブラリ
により、コンピュータビジョン(CV)開発を、
より生産的に行うことができるようになってきた。
画像処理 †
与えられた画像に対して何らかの処理を行い出力する。
コンピュータビジョン †
- コンピュータビジョン(computer vision :CV)
- 撮影対象を認識・判別して、対象の状態をデータで出力する。
- 顔検出
- 顔認証
- 検査装置
- 監視装置
- 安全装置
- ロボティクス
基礎 †
画像入力 †
デジカメ †
CCDやCMOSのイメージセンサを受光素子の平面上に配列した
エリアイメージセンサで受けた光(光子)を電気信号に変換して被写体の画像を生成。
- 単板式 : RGBのカラーフィルタを、R=4/N, G=2/N, B=4/Nの市松模様に配置。
- 3版式 : RGBをプリズムを使って別々のエリアイメージセンサで受け取る。
イメージスキャナ †
イメージセンサを受光素子の線状に配列したエリアイメージセンサで、
被写体上を走査し受けた光(光子)を電気信号に変換して被写体の画像を生成。
RDG-Dカメラ †
- 被写体のカラー情報だけでなく、被写体までの距離情報を画素単位に測定する。
- 得られる距離画像には各画素毎に深度値(Kinectでは11bit)が割り当てられる。
- 被写体までの距離を図る方式には、以下のものがある。
- パターン投影式 : 構造化されたパターンを投射しパターンのズレを計測
Kinectでは、赤外線を使用した三角測量の原理で深度値を算出。
- TOF方式 : レーザーの往復時間を光の位相差を使用して深度値を算出。
画像形式 †
- アナログ信号(RBG) ---> A/D変換(標本化・量子化)
- 標本化
- 量子化
- レベル2 : 2値画像
- レベル3 : グレースケール
- 256段階 : 8bit量子化 ---> 8bit画像
- モノクロ画像
画像がある1つの色の濃淡を表している場合
- グレースケール画像
画像が明るさの濃淡を表している場合
- RBGフォーマット
- 3版式では3枚のモノクロ画像、単板式ではRAWフォーマット形式
- これらを色変換(デモザイキング)処理する。
- YUVフォーマット
- 色情報
- 輝度信号(Y)
- 輝度信号と青色信号との差(U or Cb)
- 輝度信号と赤色信号との差(V or Cr)
- フォーマット
- YUV444 : 1pixel 24bit(Y=8, U=8, V=8).
- YUV422 : 1pixel 16bit(Y=8, U=4, V=4).
- YUV411 : 1pixel 12bit(Y=8, U=2, V=2).
compへの入力 †
- 静止画
- 画像形式
# | 形式 | 拡張子 |
1 | Windows bitmaps | BMP, DIB |
2 | JPEG files | JPEG, JPG, JPE |
3 | Potable Netwprk Graphics | PNG |
4 | Potable Image Format | PBM, PGM, PPM |
5 | Sun rasters | SR, RAS |
6 | TIFF files | TIFF, TIF |
- 動画
- カメラ
# | カメラ | 説明 |
1 | NTSCカメラ | アナログビデオ信号を出力、Bt8x8のVideo Capture Chipsetが必要 |
2 | USBカメラ | WebカメラなどUVC(USB Video Class)と言う規格でVFW or V4L driverがインストールされ、デバイス認識される。 |
3 | IEEE 1394カメラ | IEEE 1394準拠のVideo Capture Chipsetが必要、一昔主流だった。 |
4 | GigE Visionカメラ | AIAによる規格でLAN+専用ドライバで認識される。 |
- OpenCVでサポートされるAPI
# | OS | API | 説明 |
1 | Windows |
1-1 | | DirectShow? | Windows用のマルチメディア拡張API群、DirectXに含まれる |
1-2 | | Video For Windows(VFW) | Windows3.1でリリースされた動画再生用 |
1-3 | | CMU 1394 Digital Camera Driver | IEEE 1394カメラ制御用 |
1-4 | | Matrox Imaging Library(MIL) | Matrox社の画像処理ライブラリ |
1-5 | | OpenNI Camera Driver | Kinect、Xtion操作用 |
2 | Linux |
2-1 | | libdc1394 | IEEE 1394カメラ制御用 |
2-2 | | GigE Vision Camera Driver | GigE Visionカメラ制御用 |
2-3 | | unicap | 異なる種類のキャプチャデバイスにアクセスするためのライブラリ |
2-4 | | Video For Linux(V4L) | Linux用ビデオキャプチャ・ライブラリ |
2-5 | | OpenNI Camera Driver | Kinect、Xtion操作用 |
3 | OS X |
3-1 | | QuickTime? | OS X用のマルチメディア拡張API群 |
3-2 | | OpenNI Camera Driver | Kinect、Xtion操作用 |
- 読み込み
- APIをサポートしている場合、カメラ番号を指定して読み込む。
- ファイルの場合、パスを指定して読み込む。
- WiFi?カメラの場合、URL(HTTPプロトコル)を使用して読み込む。
画像のデジタル化 †
空間のデジタル化 †
- 元画像を標本化間隔で縦横に分割(width個 * height個 = 解像度)して、
- 画素、ピクセル化する(width個 * height個 の整数の集合になる)。
- x=width, y=height, 画像の左上が(x=0, y=0)になる。
画素値のデジタル化 †
- 各画素の輝度を整数値に変換する処理を量子化という。
- 量子化後の値を画素値(pixel value)という。
- 各画素のbit数をbit深度(bit depth)、色深度(color depth)という。
- bpp(bit per pixel)という単位で表現する。
- 通常8bit(0-255)だが、暗所と発光体が混在する画像取得が困難(高階調→18bit)。
- チャンネル
- グレースケース画像:1チャンネル
- RBGフォーマット:RBGの3チャンネル
ライブラリ †
オープンソース †
LTI-Lib †
LGPL
VXL †
BSD
プロダクト †
PPI(Integrated Performance Primitives) †
Intel社、商用。
- Intelプロセッサ上でのさらなる自動最適化を行う。
- OpenCV 3.0にて、Intel IPPのサブセットがIPPCVとして寄贈
HALCON †
MVTec社、商用、産業用
PatMax? †
Cognex社、商用、産業用
MIL(Matrox Imaging Library) †
Matrox社、商用、産業用
メディアドライブ †
アプリケーション †
CamDictionary? †
カメラで撮影した文字をリアルタイム認識・翻訳する。
Zaim †
レシートを撮影すると店舗、品目、価格を自動認識する。
Corel Paint it! Now †
写真を風景画に変換する。
ゾンビブース2 †
撮影した顔をゾンビ風に変換する。
顔認識 †
まだまだ、精度は低いもよう。
スマホネイティブ組込 †
まだ、笑顔情報程度しか取得できないもよう。
Google Face API †
正確な名称が不明だが、Google Play servicesの、
Face Detection とか、Face API などと呼ばれている。
画像内の顔が笑顔であるかどうかを0から1の数値で取得できるもよう。
APIとしてはこちら。
Swift Core Image(iOS) †
hasSmileプロパティで true or false のデータとして取得するもよう。
APIとしてはこちら。
Windows.Media.FaceAnalysis?(Windows) †
クラウドサービス型 †
AIと連動しており、もう少々、高度なことができるもよう(年齢・性別の推定など)。
Microsoft Cognitive Services - Face API and Emotion API †
- Microsoft Cognitive Services
IBM Bluemix の AlchemyAPI Face Detection †
IBM に統合された AlchemyAPI 社の人工知能 API が IBM Bluemix で公開されている。