画像処理とコンピュータビジョン
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>要素技術]]
--[[言語処理]]
--[[音声処理]]
--画像処理
---[[画像処理(AI)>画像処理とコンピュータビジョン(AI)]]
*目次 [#n8a04463]
#contents
*概要 [#nae13cbd]
画像処理とコンピュータビジョンについて纏める。
-高性能 & 廉価なカメラ、CPUの登場
-アルゴリズムの成熟
-[[OpenCV>#y547db71]]等のライブラリ
により、コンピュータビジョン(CV)開発を、~
より生産的に行うことができるようになってきた。
**画像処理 [#le3f36af]
与えられた画像に対して何らかの処理を行い出力する。
**コンピュータビジョン [#u1b05ef9]
-コンピュータビジョン(computer vision :CV)
-撮影対象を認識・判別して、対象の状態をデータで出力する。
--顔検出
--顔認証
--検査装置
--監視装置
--安全装置
--ロボティクス
*基礎 [#z1e7eaef]
**画像入力 [#haf5942d]
***デジカメ [#u5fb4c44]
-ピンホールではなくレンズを使う(=カメラ)、ピントがずれ...
-CCDやCMOSのイメージセンサを受光素子の平面上に配列したエ...
レンズで集光した光(光子)を受けて、電気信号に変換して被...
--単板式 : RGBのカラーフィルタを、R=4/N, G=2/N, B=4/Nの市...
--3版式 : RGBをプリズムを使って別々のエリアイメージセンサ...
-ピンホールカメラモデル
--撮像物との距離は焦点距離に対して3ケタ以上~
大きいことが多くピンホールカメラモデルと一致する。
--カメラのキャリブレーション~
[[透視変換>#ge47c1c7]]で世界座標系からイメージ座標系へ変換
---外部パラメーター:3D世界座標系から3Dカメラ座標系への剛...
---内部パラメーター:3Dカメラ座標系から2Dイメージ座標系へ...
***イメージスキャナ [#q87b772a]
イメージセンサを受光素子の線状に配列したエリアイメージセ...
被写体上を走査し受けた光(光子)を電気信号に変換して被写...
***画像形式 [#u91984c2]
-アナログ信号(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への入力 [#g3205bf6]
-静止画
--画像形式
|#|形式|拡張子|h
|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|
--読み込み~
ファイルパスを指定して読み込む。
-動画
--カメラ
|#|カメラ|説明|h
|1|NTSCカメラ|アナログビデオ信号を出力、Bt8x8のVideo Capt...
|2|USBカメラ|WebカメラなどUVC(USB Video Class)と言う規...
|3|IEEE 1394カメラ|IEEE 1394準拠のVideo Capture Chipsetが...
|4|GigE Visionカメラ|AIAによる規格でLAN+専用ドライバで認...
--OpenCVでサポートされるAPI
|#|OS|API|説明|h
|1|>|>|Windows|
|1-1||DirectShow|Windows用のマルチメディア拡張API群、Dire...
|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をサポートしている場合、カメラ番号を指定して読み込...
---ファイルの場合、パスを指定して読み込む。
---Wi-Fiカメラの場合、URL(HTTPプロトコル)を使用して読み...
**ロボット・ビジョンのカメラ・センサ [#fa4c0da5]
***2Dカメラ [#l5aed636]
≒ [[デジカメ>#u5fb4c44]]
***3Dセンサ [#g606d9ca]
3Dなのでカメラではなくセンサ
-データ~
アプリケーション毎に使い分ける。
--2D
---RDG-D(2D深度画像~
・2D画像の各画素に紐付いた奥行き情報を記述~
・シンプルでセンサとの相性が良い~
・2D CNNのテクニックが使い易い。~
・全周形状が扱い難い。
---MultiView画像~
・多点カメラ画像によって3D形状を記述~
・2D CNNのテクニックが使い易い。~
・全周形状が扱える。~
・実環境で計測し難い。~
・実スケール性を活用し難い。
--直接3Dを記述
---3D Voxel~
・2DのPixelに対し3DのVoxelで3D形状を記述~
・シンプルなデータ形式~
・3D CNNで処理し易い。~
・データ量が多くなるので扱える解像度は低い。
---メッシュ~
・頂点、辺、面によって3D形状を記述~
・省データで高解像度、レンダリングとの相性が良い。~
・頂点、辺、面を上手く扱うのが難しい。辺、面はセンサから...
---点群~
・点群によって3D形状を記述~
・シンプルでセンサとの相性が良い。~
・接続情報がなく深層学習で処理し難い。
-種類
--ステレオ法~
[[2Dカメラ>#l5aed636]]を組み合わせる手法
---パッシブステレオ法~
・三角測量の原理、見え方の差(視差)から距離を計測する手法~
・対象にテクスチャが無い場合、ランダムなパタンを投影する...
---アクティブステレオ法~
・パッシブステレオ法の片方のカメラを投光機に置き換えたモ...
・スリット光、近赤外線の歪みやズレから距離を計測する。~
・Kinect(1.0)では、赤外線を使用した三角測量の原理で深度...
--ToF方式~
光の到達時間を利用した手法
---Direct TOF方式~
照射したレーザパルスの光が返ってくるまでの時間を計測する...
---Indirect TOF方式~
・照射した周期的レーザ光と反射光の位相差を計測する方式~
・遠距離の測定には向かない、外乱光に弱い。低価格。~
・Kinect2.0で採用され空間分解能が約2倍になった。
***その他カメラ [#k3ad6ebf]
-偏光カメラ~
金属光沢、凍った路面の認識など
-イベントカメラ~
--生物の網膜から発想を得たセンサ
--フレームの各点における輝度を出力するという発想~
ではなく、輝度の変化を検知して出力するという発想
**画像のデジタル化 [#k7ebd4c2]
***空間のデジタル化 [#f82606bb]
-元画像を標本化間隔で縦横に分割(width個 * height個 = 解...
-画素、ピクセル化する(width個 * height個 の整数の集合に...
-x=width, y=height, 画像の左上が(x=0, y=0)になる。
***画素値のデジタル化 [#u49b2656]
-各画素の輝度を整数値に変換する処理を量子化という。
-量子化後の値を画素値(pixel value)という。
-各画素のbit数をbit深度(bit depth)、色深度(color depth...
-bpp(bit per pixel)という単位で表現する。
-通常8bit(0-255)だが、暗所と発光体が混在する画像取得が...
-チャンネル
--グレースケール画像:1チャンネル
--RBGフォーマット:RBGの3チャンネル
*カラー画像、グレースケール画像 [#b12a34b0]
**フォーマット [#xbe4c173]
|内容¥形式|BMP|PNG|JPEG|GIF|h
|色数|モノクロ2階調&br;24bitフルカラー|24bitフルカラー&br...
|色空間|RGB|RGB&br;グレースケール|RGB&br;CMYK&br;YCbCr&br...
|透過|✕|◯|✕|◯|
|アニメーション|✕|△|✕|◯|
|画質劣化|なし|なし|あり|(式数変更が無いなら)なし|
|データサイズ|非常に大きい|中|非常に小さい|非常に小さい|
可逆的な形式(loss less)と、非可逆な形式(lossy)がある。
***BMPファイル・フォーマット [#j9e39436]
-Windowsの標準
-拡張子は*.bmp
-各画素の色・濃度を量子化した値のリスト
-圧縮が無いためファイルサイズが大きくなる。
-圧縮する場合は、RLE(ランレングス)を使用する。
***PICTファイル・フォーマット [#w1ef6a5c]
-Macintoshの標準
-拡張子は*.pct
-ベクトル画像とビットマップ画像を保持
***TIFFファイル・フォーマット [#off3bea3]
-TIFF : Tagged Image File Format
-多くのOSでサポートされている。
-拡張子は*.tif
-高密度のビットマップ画像を保存
-圧縮は可逆的で他の形式に変換可能
***PNGファイル・フォーマット [#e8886008]
-PNG : Portable Network Graphics
-GIFの特許問題で、代替として開発、広まった。
-拡張子は*.tif
-透過属性を表現できる。
-圧縮は可逆的で他の形式に変換可能
***JPEGファイル・フォーマット [#nf26e4d4]
-JPEG : Joint Photographic Experts Group
-デジカメの多くは、JPEGを標準形式とする。
-拡張子は*.jpg
-圧縮は非可逆的なので
--繰り返し編集すると劣化する。
--色数の少ない画像はレm化が大きい。
--シャープネスの強い画像はファイルサイズが大きくなる傾向...
※ シャープネス : 写真の輪郭や境界線を検出して強調する機能
***GIFファイル・フォーマット [#k9d42fdc]
-GIF : Graphics Interchange Format
-Internetの帯域負荷を軽減する画像形式
-拡張子は*.tif
-bit深度は8bitで256色までに制限される。
-透明を表現可(半透明は表現不可)。
-アニメーションを表現できる。
-LZW圧縮アルゴリズムが採用されている。
**bit深度 [#w6ccc40c]
***1 bit 画像 [#td0faed6]
白と黒の2階調画像
***8 bit 画像 [#d40176f5]
-8 bitの256階調画像
-通常はグレースケール画像
***インデックス・カラー画像 [#a42bc5b6]
-8 bitの256階調画像
-GIFなどで使用されている。
-24bit色から8bit色(256色)を~
選択したカラーマップを使用する。
***16 bit (ハイ)カラー画像 [#j7462704]
R(5bit), G(5bit), B(6bit) の16bit
***24 bit カラー画像 [#s12dec9b]
R(8bit), G(8bit), B(8bit) の24bit = 16,777,216色
**色空間 [#a1b1cc44]
***RGB色空間 [#p046b5d5]
-赤(red), 緑(green), 青(blue)の3色の組み合わせで色彩を表...
-混ぜると白色になるので加法混色(additive mixture)と呼ば...
-印刷物はcyan, magenta, yellowの減法混色(subtractive mix...
-立方体モデル。
***YUV(YCbCr)色空間 [#wec2baa7]
-輝度信号 : Y
-色差信号~
色差とはRBG色からYの輝度成分を引いた信号
--U(Cb)
--V(Cr)
-特徴
--人の視覚特性を利用している。
--YUV : アナログビデオ用
--YCbCr : デジタルビデオ用
***HSV色空間 [#qaa0c5d6]
-色相(hue), 彩度(saturation), 明度(value)の組み合わせで色...
-明るさの変動を受け難く、特定の色、色合いを返るなどの画像...
-また、特定の色領域を画像中から抽出する処理に利用される。
-六角錐モデル。
***色空間の変換 [#l2b50c61]
略
**画像処理 [#sdfb2596]
***RBGからグレースケール変換 [#edb97291]
-RGB → YUV変換する。
-Y(輝度信号)を用いる。
***トーンカーブ [#yf071227]
-補正前・後の対応関係を表した校正曲線。
-階調変換関数(プログラム)では、ルックアップテーブルを用...
-y=f(x)
--x=補正前のデータ値(入力データ)
--y=補正後のデータ値(出力データ)
/
/
/
/
/
***折れ線トーンカーブ [#g81dea1f]
コントラスト調整
-明るい部分は、さらに明るく、
-暗い部分は、さらに暗く。
─
/
/
/
/
─
***ガンマ変換 [#ud198346]
コントラスト調整により、自然な輝度、色彩に調整される。
┌ x ┐1/γ
f(x) = 255 * │── │
└ 255 ┘
***ネガポジ反転 [#mcb6b75d]
濃淡値が反転する。
f(x) = 255-x
***ソラリゼーション [#ld5a11e4]
ネガ画像、ポジ画像混在のような画像が生成される。
***ポスタリゼーション [#c5f83133]
出力画素値が数段回に制限される。
┌─
┌┘
┌┘
┌┘
─┘
***疑似カラー処理 [#gf73c02a]
グレースケールに色付けする。
-R
──
/
/
/
/
──
-G
─
/ \
/ \
/ \
/ \
/ \
-B
──
\
\
\
\
──
*幾何変換 [#y0050cf7]
拡大・縮小、回転、並進などの処理を行う。
**線形変換 [#z05f753b]
- x' = ax + by
- y' = cx + dy
┌x'┐ ┌a b┐┌x┐
└y'┘ = └c d┘└y┘
x' = A x
***拡大・縮小 [#ef7ccce1]
-拡大
┌2.0 0.0┐
A = └0.0 2.0┘
-縮小
┌0.5 0.0┐
A = └0.0 0.5┘
-x軸のみ縮小, y軸は据置
┌0.5 0.0┐
A = └0.0 1.0┘
***回転 [#w44e4df3]
原点を中心に、時計回りに、θだけ回転する。
┌x'┐ ┌cosθ -sinθ┐┌x┐
└y'┘ = └sinθ cosθ┘└y┘
***鏡映変換 [#rf55e091]
-y軸に対する鏡映変換
┌x'┐ ┌ -1 0 ┐┌x┐
└y'┘ = └ 0 1 ┘└y┘
-x軸に対する鏡映変換
┌x'┐ ┌ 1 0 ┐┌x┐
└y'┘ = └ 0 -1 ┘└y┘
-以下の軸に対する鏡映変換
--軸
┌x'┐ ┌ conθ ┐
└y'┘ = t└ sinθ ┘
--鏡映変換
┌x'┐ ┌cos2θ sin2θ┐┌x┐
└y'┘ = └sin2θ -cos2θ┘└y┘
***せん断変形 [#i2a06ac4]
正方形・長方形を平行四辺形に歪ませる。
-x軸に対する鏡映変換
┌x'┐ ┌ 1 tanθ ┐┌x┐
└y'┘ = └ 0 1 ┘└y┘
-y軸に対する鏡映変換
┌x'┐ ┌ 1 0 ┐┌x┐
└y'┘ = └ tanφ 1 ┘└y┘
**再標本化と補間 [#c7e51248]
整数値となる画素の中心があるのもとし、~
線形変換の変換先に画素値を与える方法。
画素の中心が、変換元から、どの変換先の画素に移動するか?~
を確認し、変換先の画素値を決定する。
***再標本化 [#la3383c7]
変換先の画素に、変換元の画素の中心が無い場合、
変換先を逆変換し、変換先から、どの変換元の画素に移動する...
を確認し、変換先の画素値を決定する。
***補間 [#f2d484a1]
-再標本化で座標が正の整数にならない場合、~
周辺の画素値を使用して保管を行う。
--変換元の位置 : (x, y)
--変換先の画素値 : I(x, y)
-最近傍法
--最も近い画素の中心 (x, y) を、四捨五入により求める。
--最も近い画素の画素値 I(x, y) を、そのまま変換先の画素値...
--計算が単純で高速だが、拡大率を高くするとジャギーが発生...
-双一次補間法~
ジャギーは発生しないが、エッジがぼやける。
--周囲の
---4座標 ( (1, 1), (1, 2), (2, 1), (2, 2) ) の
---画素値 ( f11, f12, f21, f22 ) を~
>
>用いた重み付き平均を線形補間により計算する。
┌f11 f21┐┌dx1┐
I(x, y) = (dy1, dy2)└f12 f22┘└dx2┘
--fは画素値
--dx~
x座標の距離
---dx1 : 1との差
---dx2 : 2との差
--dy~
y座標の距離
---dy1 : 1との差
---dy2 : 2との差
-双三次補間法~
双一次補間法の強化版だが計算量が増える。
--周囲の
---16座標 ( (1, 1), - (4, 4) )の
---画素値 ( f11, ..., f44 )を~
>
>用いた重み付き平均を線形補間により計算する。
┌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┘
--fは画素値
--dx, dy~
x座標, y座標の距離
---dx1 : 1との差
---dx2 : 2との差
---dx3 : 3との差
---dx4 : 4との差
---dy1 : 1との差
---dy2 : 2との差
---dy3 : 3との差
---dy4 : 4との差
--wx, wy~
重み。以下のように計算する。
---wxn=h(dxn)
---wyn=h(dyn)
--関数h
---sinc関数を3次多項式で近似
┌ 3 2
│ |t| - 2|t| + 1 ( |t| ≦ 1 )
│ 3 2
h(t)=│-|t| + 5|t| - 8|t| + 4 ( 1 < |t| ≦ 2 )
│
└ 0 ( 2 < |t| )
**アフィン変換と透視変換 [#ab491e5b]
***同次座標の導入 [#p3f7df10]
並行移動や透視変換などは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
***アフィン変換 [#m493eca6]
アフィン変換とは、[[線形変換>#z05f753b]] + 平行移動変換
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 ┘
***透視変換 [#ge47c1c7]
透視変換は、三次元空間に配置された二次元画像を様々な視点...
*その他 [#w9b0c8c4]
やりきれないので、一覧だけ。
**濃淡変換 [#u8005c48]
カラー → グレーなど
-濃度ヒストグラムを用いた変換~
入力画像のヒストグラムを弄って出力画像にする。
-ネガポジ変換(明度の反転
-疑似濃淡変換(ディザリング
**二値画像処理 [#y4db582b]
カラー・グレー → 白黒
**フィルタ処理 [#s4e42daf]
ノイズ除去やエッジ検出など
**複数画像利用 [#p787287e]
-画像間演算
--加算処理・減算処理などの算術演算
--論理和(OR)・論理積(AND)などの論理演算
--アルファブレンディング(半透明な画像を重ねる技法
-マスク合成
-背景差分
-フレーム間差分
*ライブラリ [#x40507c3]
**オープンソース [#u5d2c227]
***[[OpenCV]] [#y547db71]
-BSDライセンス
-コンピュータビジョン向けライブラリ
-参考
--OpenCV - Wikipedia~
https://ja.wikipedia.org/wiki/OpenCV
***LTI-Lib [#s2b0c6fa]
LGPLライセンス
***VXL [#aae76649]
-BSDライセンス
-コンピュータビジョン向けライブラリ
-参考
--VXL - Wikipedia~
https://en.wikipedia.org/wiki/VXL
***ImageMagick [#pda53f12]
-GPL互換でより制限が緩い独自ライセンス
-画像を操作したり表示したりするためのソフトウェアスイート
-ImageMagick は
--コマンドラインから利用する方法
--他のプログラムから呼び出して使う方法
>がある。
-参考
--ImageMagick - Wikipedia~
https://ja.wikipedia.org/wiki/ImageMagick
--「さようなら ImageMagick」の考察~
https://qiita.com/yoya/items/2076c1f5137d4041e3aa
***その他 [#v60a667a]
-HEIF
--tifig~
HEIF を 参照したり、jpgに変換するツール
--libheif~
HEIF を JPEG や PNG に変換するツール
**プロダクト [#t95f173d]
***PPI(Integrated Performance Primitives) [#lf386564]
Intel社、商用。
-Intelプロセッサ上でのさらなる自動最適化を行う。
-OpenCV 3.0にて、Intel IPPのサブセットがIPPCVとして寄贈
***HALCON [#ia5d343d]
MVTec社、商用、産業用
***PatMax [#sb931c3f]
Cognex社、商用、産業用
***MIL(Matrox Imaging Library) [#r78796be]
Matrox社、商用、産業用
***メディアドライブ [#y2f43ef4]
-メディアドライブ > ライブラリ SDK
--画像分類・画像検索~
https://mediadrive.jp/products/library/image-classificati...
---静止画像の自動画像分類、検索ライブラリ。
---大規模な画像セットを、任意の数に自動分類
---画像をクエリーとして、データベース中から類似した画像を...
--画像認識 物体検出 類似画像検索~
https://mediadrive.jp/products/library/image-recognition/...
---画像認識、物体検出、類似画像検索機能を搭載した高精度画...
---カメラ撮影された物体が何の物体かを認識する「画像認識」
---1枚の画像中からクエリー画像と同じ物体を検出する「物体...
---複数の画像から類似した画像を検索する「類似画像検索」
--CrossMediator Basic v.3.0~
https://mediadrive.jp/products/library/crossmediatorbasic...
---ビデオデータから発言/セリフの検索(音声検索)
---曲名は判らないけど曲を見つけたい(ハミング検索)
---ビデオデータから好きなCMの検索(動画検索)
---ビデオクリップで本編の頭出し(動画検索)
*アプリケーション [#ea232e4c]
**オープンソース [#gd1fcf12]
***GIMP [#q659f862]
-GPLライセンス
-ビットマップ画像編集・加工ソフトウェア(ペイントソフト)。
-参考
--GIMP - Wikipedia
https://ja.wikipedia.org/wiki/GIMP
--GIMPを使ってコマンドラインから画像を変換する。 - ぱたヘ...
http://d.hatena.ne.jp/natsutan/20110611/1307766376
**プロダクト [#b45deeea]
***CamDictionary [#jd716980]
カメラで撮影した文字をリアルタイム認識・翻訳する。
-幾何学変換処理
-二値化処理
***Zaim [#j6be6848]
レシートを撮影すると店舗、品目、価格を自動認識する。
-幾何学変換処理
-二値化処理
***Corel Paint it! Now [#y8c70f7f]
写真を風景画に変換する。
-平滑化処理
-エッジ検出処理
***ゾンビブース2 [#l173eb73]
撮影した顔をゾンビ風に変換する。
-色空間変換処理
-画像間演算処理
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>要素技術]]
--[[言語処理]]
--[[音声処理]]
--画像処理
---[[画像処理(AI)>画像処理とコンピュータビジョン(AI)]]
*目次 [#n8a04463]
#contents
*概要 [#nae13cbd]
画像処理とコンピュータビジョンについて纏める。
-高性能 & 廉価なカメラ、CPUの登場
-アルゴリズムの成熟
-[[OpenCV>#y547db71]]等のライブラリ
により、コンピュータビジョン(CV)開発を、~
より生産的に行うことができるようになってきた。
**画像処理 [#le3f36af]
与えられた画像に対して何らかの処理を行い出力する。
**コンピュータビジョン [#u1b05ef9]
-コンピュータビジョン(computer vision :CV)
-撮影対象を認識・判別して、対象の状態をデータで出力する。
--顔検出
--顔認証
--検査装置
--監視装置
--安全装置
--ロボティクス
*基礎 [#z1e7eaef]
**画像入力 [#haf5942d]
***デジカメ [#u5fb4c44]
-ピンホールではなくレンズを使う(=カメラ)、ピントがずれ...
-CCDやCMOSのイメージセンサを受光素子の平面上に配列したエ...
レンズで集光した光(光子)を受けて、電気信号に変換して被...
--単板式 : RGBのカラーフィルタを、R=4/N, G=2/N, B=4/Nの市...
--3版式 : RGBをプリズムを使って別々のエリアイメージセンサ...
-ピンホールカメラモデル
--撮像物との距離は焦点距離に対して3ケタ以上~
大きいことが多くピンホールカメラモデルと一致する。
--カメラのキャリブレーション~
[[透視変換>#ge47c1c7]]で世界座標系からイメージ座標系へ変換
---外部パラメーター:3D世界座標系から3Dカメラ座標系への剛...
---内部パラメーター:3Dカメラ座標系から2Dイメージ座標系へ...
***イメージスキャナ [#q87b772a]
イメージセンサを受光素子の線状に配列したエリアイメージセ...
被写体上を走査し受けた光(光子)を電気信号に変換して被写...
***画像形式 [#u91984c2]
-アナログ信号(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への入力 [#g3205bf6]
-静止画
--画像形式
|#|形式|拡張子|h
|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|
--読み込み~
ファイルパスを指定して読み込む。
-動画
--カメラ
|#|カメラ|説明|h
|1|NTSCカメラ|アナログビデオ信号を出力、Bt8x8のVideo Capt...
|2|USBカメラ|WebカメラなどUVC(USB Video Class)と言う規...
|3|IEEE 1394カメラ|IEEE 1394準拠のVideo Capture Chipsetが...
|4|GigE Visionカメラ|AIAによる規格でLAN+専用ドライバで認...
--OpenCVでサポートされるAPI
|#|OS|API|説明|h
|1|>|>|Windows|
|1-1||DirectShow|Windows用のマルチメディア拡張API群、Dire...
|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をサポートしている場合、カメラ番号を指定して読み込...
---ファイルの場合、パスを指定して読み込む。
---Wi-Fiカメラの場合、URL(HTTPプロトコル)を使用して読み...
**ロボット・ビジョンのカメラ・センサ [#fa4c0da5]
***2Dカメラ [#l5aed636]
≒ [[デジカメ>#u5fb4c44]]
***3Dセンサ [#g606d9ca]
3Dなのでカメラではなくセンサ
-データ~
アプリケーション毎に使い分ける。
--2D
---RDG-D(2D深度画像~
・2D画像の各画素に紐付いた奥行き情報を記述~
・シンプルでセンサとの相性が良い~
・2D CNNのテクニックが使い易い。~
・全周形状が扱い難い。
---MultiView画像~
・多点カメラ画像によって3D形状を記述~
・2D CNNのテクニックが使い易い。~
・全周形状が扱える。~
・実環境で計測し難い。~
・実スケール性を活用し難い。
--直接3Dを記述
---3D Voxel~
・2DのPixelに対し3DのVoxelで3D形状を記述~
・シンプルなデータ形式~
・3D CNNで処理し易い。~
・データ量が多くなるので扱える解像度は低い。
---メッシュ~
・頂点、辺、面によって3D形状を記述~
・省データで高解像度、レンダリングとの相性が良い。~
・頂点、辺、面を上手く扱うのが難しい。辺、面はセンサから...
---点群~
・点群によって3D形状を記述~
・シンプルでセンサとの相性が良い。~
・接続情報がなく深層学習で処理し難い。
-種類
--ステレオ法~
[[2Dカメラ>#l5aed636]]を組み合わせる手法
---パッシブステレオ法~
・三角測量の原理、見え方の差(視差)から距離を計測する手法~
・対象にテクスチャが無い場合、ランダムなパタンを投影する...
---アクティブステレオ法~
・パッシブステレオ法の片方のカメラを投光機に置き換えたモ...
・スリット光、近赤外線の歪みやズレから距離を計測する。~
・Kinect(1.0)では、赤外線を使用した三角測量の原理で深度...
--ToF方式~
光の到達時間を利用した手法
---Direct TOF方式~
照射したレーザパルスの光が返ってくるまでの時間を計測する...
---Indirect TOF方式~
・照射した周期的レーザ光と反射光の位相差を計測する方式~
・遠距離の測定には向かない、外乱光に弱い。低価格。~
・Kinect2.0で採用され空間分解能が約2倍になった。
***その他カメラ [#k3ad6ebf]
-偏光カメラ~
金属光沢、凍った路面の認識など
-イベントカメラ~
--生物の網膜から発想を得たセンサ
--フレームの各点における輝度を出力するという発想~
ではなく、輝度の変化を検知して出力するという発想
**画像のデジタル化 [#k7ebd4c2]
***空間のデジタル化 [#f82606bb]
-元画像を標本化間隔で縦横に分割(width個 * height個 = 解...
-画素、ピクセル化する(width個 * height個 の整数の集合に...
-x=width, y=height, 画像の左上が(x=0, y=0)になる。
***画素値のデジタル化 [#u49b2656]
-各画素の輝度を整数値に変換する処理を量子化という。
-量子化後の値を画素値(pixel value)という。
-各画素のbit数をbit深度(bit depth)、色深度(color depth...
-bpp(bit per pixel)という単位で表現する。
-通常8bit(0-255)だが、暗所と発光体が混在する画像取得が...
-チャンネル
--グレースケール画像:1チャンネル
--RBGフォーマット:RBGの3チャンネル
*カラー画像、グレースケール画像 [#b12a34b0]
**フォーマット [#xbe4c173]
|内容¥形式|BMP|PNG|JPEG|GIF|h
|色数|モノクロ2階調&br;24bitフルカラー|24bitフルカラー&br...
|色空間|RGB|RGB&br;グレースケール|RGB&br;CMYK&br;YCbCr&br...
|透過|✕|◯|✕|◯|
|アニメーション|✕|△|✕|◯|
|画質劣化|なし|なし|あり|(式数変更が無いなら)なし|
|データサイズ|非常に大きい|中|非常に小さい|非常に小さい|
可逆的な形式(loss less)と、非可逆な形式(lossy)がある。
***BMPファイル・フォーマット [#j9e39436]
-Windowsの標準
-拡張子は*.bmp
-各画素の色・濃度を量子化した値のリスト
-圧縮が無いためファイルサイズが大きくなる。
-圧縮する場合は、RLE(ランレングス)を使用する。
***PICTファイル・フォーマット [#w1ef6a5c]
-Macintoshの標準
-拡張子は*.pct
-ベクトル画像とビットマップ画像を保持
***TIFFファイル・フォーマット [#off3bea3]
-TIFF : Tagged Image File Format
-多くのOSでサポートされている。
-拡張子は*.tif
-高密度のビットマップ画像を保存
-圧縮は可逆的で他の形式に変換可能
***PNGファイル・フォーマット [#e8886008]
-PNG : Portable Network Graphics
-GIFの特許問題で、代替として開発、広まった。
-拡張子は*.tif
-透過属性を表現できる。
-圧縮は可逆的で他の形式に変換可能
***JPEGファイル・フォーマット [#nf26e4d4]
-JPEG : Joint Photographic Experts Group
-デジカメの多くは、JPEGを標準形式とする。
-拡張子は*.jpg
-圧縮は非可逆的なので
--繰り返し編集すると劣化する。
--色数の少ない画像はレm化が大きい。
--シャープネスの強い画像はファイルサイズが大きくなる傾向...
※ シャープネス : 写真の輪郭や境界線を検出して強調する機能
***GIFファイル・フォーマット [#k9d42fdc]
-GIF : Graphics Interchange Format
-Internetの帯域負荷を軽減する画像形式
-拡張子は*.tif
-bit深度は8bitで256色までに制限される。
-透明を表現可(半透明は表現不可)。
-アニメーションを表現できる。
-LZW圧縮アルゴリズムが採用されている。
**bit深度 [#w6ccc40c]
***1 bit 画像 [#td0faed6]
白と黒の2階調画像
***8 bit 画像 [#d40176f5]
-8 bitの256階調画像
-通常はグレースケール画像
***インデックス・カラー画像 [#a42bc5b6]
-8 bitの256階調画像
-GIFなどで使用されている。
-24bit色から8bit色(256色)を~
選択したカラーマップを使用する。
***16 bit (ハイ)カラー画像 [#j7462704]
R(5bit), G(5bit), B(6bit) の16bit
***24 bit カラー画像 [#s12dec9b]
R(8bit), G(8bit), B(8bit) の24bit = 16,777,216色
**色空間 [#a1b1cc44]
***RGB色空間 [#p046b5d5]
-赤(red), 緑(green), 青(blue)の3色の組み合わせで色彩を表...
-混ぜると白色になるので加法混色(additive mixture)と呼ば...
-印刷物はcyan, magenta, yellowの減法混色(subtractive mix...
-立方体モデル。
***YUV(YCbCr)色空間 [#wec2baa7]
-輝度信号 : Y
-色差信号~
色差とはRBG色からYの輝度成分を引いた信号
--U(Cb)
--V(Cr)
-特徴
--人の視覚特性を利用している。
--YUV : アナログビデオ用
--YCbCr : デジタルビデオ用
***HSV色空間 [#qaa0c5d6]
-色相(hue), 彩度(saturation), 明度(value)の組み合わせで色...
-明るさの変動を受け難く、特定の色、色合いを返るなどの画像...
-また、特定の色領域を画像中から抽出する処理に利用される。
-六角錐モデル。
***色空間の変換 [#l2b50c61]
略
**画像処理 [#sdfb2596]
***RBGからグレースケール変換 [#edb97291]
-RGB → YUV変換する。
-Y(輝度信号)を用いる。
***トーンカーブ [#yf071227]
-補正前・後の対応関係を表した校正曲線。
-階調変換関数(プログラム)では、ルックアップテーブルを用...
-y=f(x)
--x=補正前のデータ値(入力データ)
--y=補正後のデータ値(出力データ)
/
/
/
/
/
***折れ線トーンカーブ [#g81dea1f]
コントラスト調整
-明るい部分は、さらに明るく、
-暗い部分は、さらに暗く。
─
/
/
/
/
─
***ガンマ変換 [#ud198346]
コントラスト調整により、自然な輝度、色彩に調整される。
┌ x ┐1/γ
f(x) = 255 * │── │
└ 255 ┘
***ネガポジ反転 [#mcb6b75d]
濃淡値が反転する。
f(x) = 255-x
***ソラリゼーション [#ld5a11e4]
ネガ画像、ポジ画像混在のような画像が生成される。
***ポスタリゼーション [#c5f83133]
出力画素値が数段回に制限される。
┌─
┌┘
┌┘
┌┘
─┘
***疑似カラー処理 [#gf73c02a]
グレースケールに色付けする。
-R
──
/
/
/
/
──
-G
─
/ \
/ \
/ \
/ \
/ \
-B
──
\
\
\
\
──
*幾何変換 [#y0050cf7]
拡大・縮小、回転、並進などの処理を行う。
**線形変換 [#z05f753b]
- x' = ax + by
- y' = cx + dy
┌x'┐ ┌a b┐┌x┐
└y'┘ = └c d┘└y┘
x' = A x
***拡大・縮小 [#ef7ccce1]
-拡大
┌2.0 0.0┐
A = └0.0 2.0┘
-縮小
┌0.5 0.0┐
A = └0.0 0.5┘
-x軸のみ縮小, y軸は据置
┌0.5 0.0┐
A = └0.0 1.0┘
***回転 [#w44e4df3]
原点を中心に、時計回りに、θだけ回転する。
┌x'┐ ┌cosθ -sinθ┐┌x┐
└y'┘ = └sinθ cosθ┘└y┘
***鏡映変換 [#rf55e091]
-y軸に対する鏡映変換
┌x'┐ ┌ -1 0 ┐┌x┐
└y'┘ = └ 0 1 ┘└y┘
-x軸に対する鏡映変換
┌x'┐ ┌ 1 0 ┐┌x┐
└y'┘ = └ 0 -1 ┘└y┘
-以下の軸に対する鏡映変換
--軸
┌x'┐ ┌ conθ ┐
└y'┘ = t└ sinθ ┘
--鏡映変換
┌x'┐ ┌cos2θ sin2θ┐┌x┐
└y'┘ = └sin2θ -cos2θ┘└y┘
***せん断変形 [#i2a06ac4]
正方形・長方形を平行四辺形に歪ませる。
-x軸に対する鏡映変換
┌x'┐ ┌ 1 tanθ ┐┌x┐
└y'┘ = └ 0 1 ┘└y┘
-y軸に対する鏡映変換
┌x'┐ ┌ 1 0 ┐┌x┐
└y'┘ = └ tanφ 1 ┘└y┘
**再標本化と補間 [#c7e51248]
整数値となる画素の中心があるのもとし、~
線形変換の変換先に画素値を与える方法。
画素の中心が、変換元から、どの変換先の画素に移動するか?~
を確認し、変換先の画素値を決定する。
***再標本化 [#la3383c7]
変換先の画素に、変換元の画素の中心が無い場合、
変換先を逆変換し、変換先から、どの変換元の画素に移動する...
を確認し、変換先の画素値を決定する。
***補間 [#f2d484a1]
-再標本化で座標が正の整数にならない場合、~
周辺の画素値を使用して保管を行う。
--変換元の位置 : (x, y)
--変換先の画素値 : I(x, y)
-最近傍法
--最も近い画素の中心 (x, y) を、四捨五入により求める。
--最も近い画素の画素値 I(x, y) を、そのまま変換先の画素値...
--計算が単純で高速だが、拡大率を高くするとジャギーが発生...
-双一次補間法~
ジャギーは発生しないが、エッジがぼやける。
--周囲の
---4座標 ( (1, 1), (1, 2), (2, 1), (2, 2) ) の
---画素値 ( f11, f12, f21, f22 ) を~
>
>用いた重み付き平均を線形補間により計算する。
┌f11 f21┐┌dx1┐
I(x, y) = (dy1, dy2)└f12 f22┘└dx2┘
--fは画素値
--dx~
x座標の距離
---dx1 : 1との差
---dx2 : 2との差
--dy~
y座標の距離
---dy1 : 1との差
---dy2 : 2との差
-双三次補間法~
双一次補間法の強化版だが計算量が増える。
--周囲の
---16座標 ( (1, 1), - (4, 4) )の
---画素値 ( f11, ..., f44 )を~
>
>用いた重み付き平均を線形補間により計算する。
┌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┘
--fは画素値
--dx, dy~
x座標, y座標の距離
---dx1 : 1との差
---dx2 : 2との差
---dx3 : 3との差
---dx4 : 4との差
---dy1 : 1との差
---dy2 : 2との差
---dy3 : 3との差
---dy4 : 4との差
--wx, wy~
重み。以下のように計算する。
---wxn=h(dxn)
---wyn=h(dyn)
--関数h
---sinc関数を3次多項式で近似
┌ 3 2
│ |t| - 2|t| + 1 ( |t| ≦ 1 )
│ 3 2
h(t)=│-|t| + 5|t| - 8|t| + 4 ( 1 < |t| ≦ 2 )
│
└ 0 ( 2 < |t| )
**アフィン変換と透視変換 [#ab491e5b]
***同次座標の導入 [#p3f7df10]
並行移動や透視変換などは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
***アフィン変換 [#m493eca6]
アフィン変換とは、[[線形変換>#z05f753b]] + 平行移動変換
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 ┘
***透視変換 [#ge47c1c7]
透視変換は、三次元空間に配置された二次元画像を様々な視点...
*その他 [#w9b0c8c4]
やりきれないので、一覧だけ。
**濃淡変換 [#u8005c48]
カラー → グレーなど
-濃度ヒストグラムを用いた変換~
入力画像のヒストグラムを弄って出力画像にする。
-ネガポジ変換(明度の反転
-疑似濃淡変換(ディザリング
**二値画像処理 [#y4db582b]
カラー・グレー → 白黒
**フィルタ処理 [#s4e42daf]
ノイズ除去やエッジ検出など
**複数画像利用 [#p787287e]
-画像間演算
--加算処理・減算処理などの算術演算
--論理和(OR)・論理積(AND)などの論理演算
--アルファブレンディング(半透明な画像を重ねる技法
-マスク合成
-背景差分
-フレーム間差分
*ライブラリ [#x40507c3]
**オープンソース [#u5d2c227]
***[[OpenCV]] [#y547db71]
-BSDライセンス
-コンピュータビジョン向けライブラリ
-参考
--OpenCV - Wikipedia~
https://ja.wikipedia.org/wiki/OpenCV
***LTI-Lib [#s2b0c6fa]
LGPLライセンス
***VXL [#aae76649]
-BSDライセンス
-コンピュータビジョン向けライブラリ
-参考
--VXL - Wikipedia~
https://en.wikipedia.org/wiki/VXL
***ImageMagick [#pda53f12]
-GPL互換でより制限が緩い独自ライセンス
-画像を操作したり表示したりするためのソフトウェアスイート
-ImageMagick は
--コマンドラインから利用する方法
--他のプログラムから呼び出して使う方法
>がある。
-参考
--ImageMagick - Wikipedia~
https://ja.wikipedia.org/wiki/ImageMagick
--「さようなら ImageMagick」の考察~
https://qiita.com/yoya/items/2076c1f5137d4041e3aa
***その他 [#v60a667a]
-HEIF
--tifig~
HEIF を 参照したり、jpgに変換するツール
--libheif~
HEIF を JPEG や PNG に変換するツール
**プロダクト [#t95f173d]
***PPI(Integrated Performance Primitives) [#lf386564]
Intel社、商用。
-Intelプロセッサ上でのさらなる自動最適化を行う。
-OpenCV 3.0にて、Intel IPPのサブセットがIPPCVとして寄贈
***HALCON [#ia5d343d]
MVTec社、商用、産業用
***PatMax [#sb931c3f]
Cognex社、商用、産業用
***MIL(Matrox Imaging Library) [#r78796be]
Matrox社、商用、産業用
***メディアドライブ [#y2f43ef4]
-メディアドライブ > ライブラリ SDK
--画像分類・画像検索~
https://mediadrive.jp/products/library/image-classificati...
---静止画像の自動画像分類、検索ライブラリ。
---大規模な画像セットを、任意の数に自動分類
---画像をクエリーとして、データベース中から類似した画像を...
--画像認識 物体検出 類似画像検索~
https://mediadrive.jp/products/library/image-recognition/...
---画像認識、物体検出、類似画像検索機能を搭載した高精度画...
---カメラ撮影された物体が何の物体かを認識する「画像認識」
---1枚の画像中からクエリー画像と同じ物体を検出する「物体...
---複数の画像から類似した画像を検索する「類似画像検索」
--CrossMediator Basic v.3.0~
https://mediadrive.jp/products/library/crossmediatorbasic...
---ビデオデータから発言/セリフの検索(音声検索)
---曲名は判らないけど曲を見つけたい(ハミング検索)
---ビデオデータから好きなCMの検索(動画検索)
---ビデオクリップで本編の頭出し(動画検索)
*アプリケーション [#ea232e4c]
**オープンソース [#gd1fcf12]
***GIMP [#q659f862]
-GPLライセンス
-ビットマップ画像編集・加工ソフトウェア(ペイントソフト)。
-参考
--GIMP - Wikipedia
https://ja.wikipedia.org/wiki/GIMP
--GIMPを使ってコマンドラインから画像を変換する。 - ぱたヘ...
http://d.hatena.ne.jp/natsutan/20110611/1307766376
**プロダクト [#b45deeea]
***CamDictionary [#jd716980]
カメラで撮影した文字をリアルタイム認識・翻訳する。
-幾何学変換処理
-二値化処理
***Zaim [#j6be6848]
レシートを撮影すると店舗、品目、価格を自動認識する。
-幾何学変換処理
-二値化処理
***Corel Paint it! Now [#y8c70f7f]
写真を風景画に変換する。
-平滑化処理
-エッジ検出処理
***ゾンビブース2 [#l173eb73]
撮影した顔をゾンビ風に変換する。
-色空間変換処理
-画像間演算処理
ページ名: