「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
画像処理とコンピュータビジョンについて纏める。
により、コンピュータビジョン(CV)開発を、
より生産的に行うことができるようになってきた。
与えられた画像に対して何らかの処理を行い出力する。
CCDやCMOSのイメージセンサを受光素子の平面上に配列した
エリアイメージセンサで受けた光(光子)を電気信号に変換して被写体の画像を生成。
イメージセンサを受光素子の線状に配列したエリアイメージセンサで、
被写体上を走査し受けた光(光子)を電気信号に変換して被写体の画像を生成。
# | 形式 | 拡張子 |
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+専用ドライバで認識される。 |
# | 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操作用 |
内容¥形式 | BMP | PNG | JPEG | GIF |
色数 | モノクロ2階調 24bitフルカラー | 24bitフルカラー 48bitカラー | 24bitフルカラー | モノクロ2階調 8bitカラー |
色空間 | RGB | RGB グレースケール | RGB CMYK YCbCr? グレースケール | RGB |
透過 | ✕ | ◯ | ✕ | ◯ |
アニメーション | ✕ | △ | ✕ | ◯ |
画質劣化 | なし | なし | あり | (式数変更が無いなら)なし |
データサイズ | 非常に大きい | 中 | 非常に小さい | 非常に小さい |
可逆的な形式(loss less)と、非可逆な形式(lossy)がある。
白と黒の2階調画像
R(5bit), G(5bit), B(6bit) の16bit
R(8bit), G(8bit), B(8bit) の24bit = 16,777,216色
略
/ / / / /
コントラスト調整
─ / / / / ─
コントラスト調整により、自然な輝度、色彩に調整される。
┌ x ┐1/γ f(x) = 255 * │── │ └ 255 ┘
濃淡値が反転する。
f(x) = 255-x
ネガ画像、ポジ画像混在のような画像が生成される。
出力画素値が数段回に制限される。
┌─ ┌┘ ┌┘ ┌┘ ─┘
グレースケールに色付けする。
── / / / / ──
─ / \ / \ / \ / \ / \
── \ \ \ \ ──
拡大・縮小、回転、並進などの処理を行う。
┌x'┐ ┌a b┐┌x┐ └y'┘ = └c d┘└y┘
x' = A x
┌2.0 0.0┐ A = └0.0 2.0┘
┌0.5 0.0┐ A = └0.0 0.5┘
┌0.5 0.0┐ A = └0.0 1.0┘
原点を中心に、時計回りに、θだけ回転する。
┌x'┐ ┌cosθ -sinθ┐┌x┐ └y'┘ = └sinθ cosθ┘└y┘
┌x'┐ ┌ -1 0 ┐┌x┐ └y'┘ = └ 0 1 ┘└y┘
┌x'┐ ┌ 1 0 ┐┌x┐ └y'┘ = └ 0 -1 ┘└y┘
┌x'┐ ┌ conθ ┐ └y'┘ = t└ sinθ ┘
┌x'┐ ┌cos2θ sin2θ┐┌x┐ └y'┘ = └sin2θ -cos2θ┘└y┘
正方形・長方形を平行四辺形に歪ませる。
┌x'┐ ┌ 1 tanθ ┐┌x┐ └y'┘ = └ 0 1 ┘└y┘
┌x'┐ ┌ 1 0 ┐┌x┐ └y'┘ = └ tanφ 1 ┘└y┘
整数値となる画素の中心があるのもとし、
線形変換の変換先に画素値を与える方法。
画素の中心が、変換元から、どの変換先の画素に移動するか?
を確認し、変換先の画素値を決定する。
変換先の画素に、変換元の画素の中心が無い場合、
変換先を逆変換し、変換先から、どの変換元の画素に移動するか?
を確認し、変換先の画素値を決定する。
用いた重み付き平均を線形補間により計算する。
┌f11 f21┐┌dx1┐ I(x, y) = (dy1, dy2)└f12 f22┘└dx2┘
用いた重み付き平均を線形補間により計算する。
┌f11 f21 f32 f41┐┌wx1┐ │f12 f22 f32 f42││wx2│ │f13 f23 f33 f43││wx3│ I(x, y) = (wy1, wy2, wy3, wy4 )└f14 f24 f34 f44┘└wx4┘
┌ 3 2 │ |t| - 2|t| + 1 ( |t| ≦ 1 ) │ 3 2 h(t)=│-|t| + 5|t| - 8|t| + 4 ( 1 < |t| ≦ 2 ) │ └ 0 ( 2 < |t| )
並行移動や透視変換などは2*2行列では表現できないので、
同次座標 ( homogeneous coordinates ) を導入する。
┌x'┐ u=│y'│ └1 ┘
┌x'┐ ┌1 0 tx┐┌x┐ │y'│=│0 1 ty││y│ └1 ┘ └0 0 1 ┘└1┘
u' = A u
同次座標を用いた一般的な線形変換
┌x'┐ ┌a b 0┐┌x┐ │y'│=│c d 0││y│ └1 ┘ └0 0 1┘└1┘
u' = L u
アフィン変換とは、線形変換 + 平行移動変換
u' = TL u = Au
┌x'┐ ┌1 0 tx┐┌a b 0┐┌x┐ ┌a b tx┐┌x┐ │y'│=│0 1 ty││c d 0││y│=│c d ty││y│ └1 ┘ └0 0 1 ┘└0 0 1┘└1┘ └0 0 1 ┘└1┘
で、一般的なアフィン変換の変換行列は、以下のようになる。
┌a b tx┐ A = │c d ty│ └0 0 1 ┘
透視変換は、三次元空間に配置された二次元画像を様々な視点から見るような変換。
BSDライセンス
LGPLライセンス
BSDライセンス
Intel社、商用。
MVTec社、商用、産業用
Cognex社、商用、産業用
Matrox社、商用、産業用
カメラで撮影した文字をリアルタイム認識・翻訳する。
レシートを撮影すると店舗、品目、価格を自動認識する。
写真を風景画に変換する。
撮影した顔をゾンビ風に変換する。
まだまだ、精度は低いもよう。
まだ、笑顔情報程度しか取得できないもよう。
正確な名称が不明だが、Google Play servicesの、
Face Detection とか、Face API などと呼ばれている。
画像内の顔が笑顔であるかどうかを0から1の数値で取得できるもよう。
APIとしてはこちら。
hasSmileプロパティで true or false のデータとして取得するもよう。
APIとしてはこちら。
AIと連動しており、もう少々、高度なことができるもよう(年齢・性別の推定など)。
IBM に統合された AlchemyAPI 社の人工知能 API が IBM Bluemix で公開されている。