画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

Akira

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

10 | 2009/11 | 12
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

【DirectShow】SDKサンプルプログラムAmCapのビルド方法

以下の記事はWindows Vistaにインストールした場合です。
Windows7にインストールした時のエラーの対処方法については
Windows7+WindowsSDKセットアップメモ
のページも参照下さい。

USBカメラやAVIファイルなどを使って動画の再生や画像データの取得はOpenCVでもできますが、細かい設定や対応しているUSBカメラなどに制限があるので、やっぱりDirectShowを使って、プログラムを組みたいものです。

そこで、最も参考になるサンプルプログラムはWindowsSDKのAmCapというサンプルプログラム。
このサンプルプログラムを用いると、USBカメラからの画像取得や、AVIファイル保存などが可能になります。

WindowsSDKについてはDirectShow SDKの入手、ダウンロードのページでも紹介していますが、Microsoftダウンロードセンターよりダウンロードして下さい。

WindowsSDKをインストールすると、目指すAmCapのサンプルプログラムは以下のフォルダに保存されています。

C:\Program Files\Microsoft SDKs\Windows\v*.*\Samples\Multimedia\DirectShow\Capture\AMCap
(
v*.*の部分にはSDKのバージョンが入ります。)
上記フォルダ内にVisualStudioのソリューションファイルamcap.slnがあるので、このファイルを開きます。
フォルダは移動せずに開いて下さい。

しかし、
1>LINK : fatal error LNK1104: ファイル 'Strmbasd.lib' を開くことができません。
というエラーが出てしまいます。
このStrmbasd.libというファイルは、WindowsSDKをインストールしただけでは存在していないので、

C:\Program Files\Microsoft SDKs\Windows\v*.*\Samples\Multimedia\DirectShow\baseclasses

内にあるプロジェクトファイルbaseclasses.slnを開き、DebugとReleaseの両方ともビルドしておきます。
これにより、Releaseの場合:Strmbase.lib、Debugの場合:Strmbasd.lib のファイルが作成されます。

すると、再度、amcap.slnを開き、プロジェクトをビルドするとエラーが無くなると思います。

このサンプルプログラムのフォルダを移動したい場合は、
AmCapのプロパティ⇒構成プロパティ⇒C/C++⇒全般
の追加インクルードディレクトリのパスが相対パスになっているので、このパスを絶対パスにしておきます。
WindowsSDK Ver7.0の場合、
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\common;C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\baseclasses
とします。
DirectShowサンプルプログラムのビルド方法

同様に
AmCapのプロパティ⇒構成プロパティ⇒リンカ⇒全般
の追加インクルードディレクトリのパスをWindowsSDK Ver7.0の場合、

構成:Debugのとき
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\baseclasses\Debug
構成:Releaseのとき
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\baseclasses\Release
に変更します。
DirectShowサンプルプログラムのビルド方法
 
また、デバッグ実行をすると、プログラムが実行されない場合があるようです。
その場合は、ビルドして作成されたファイルAmCap.exeを実行してみて下さい。
 
Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

【OpenCV】行列の積(cvMul、cvMatMul)での注意点

メインページOpenCV

OpenCVを使って、アフィン変換のような3行3列の行列と3行1列行列の積をしたくて、
OpenCVプログラミングブックを参考にしながら、

CvMat *mat = cvCreateMat(3, 3, CV_32F);
CvMat *src = cvCreateMat(3, 1, CV_32F);
CvMat *dst = cvCreateMat(3, 1, CV_32F);

cvmSet(mat, 0, 0, 1.0);cvmSet(mat, 0, 1, 1.0);cvmSet(mat, 0, 2, 1.0);
cvmSet(mat, 1, 0, 1.0);cvmSet(mat, 1, 1, 1.0);cvmSet(mat, 1, 2, 1.0);
cvmSet(mat, 2, 0, 1.0);cvmSet(mat, 2, 1, 1.0);cvmSet(mat, 2, 2, 1.0);

cvmSet(src, 0, 0, 1.0);
cvmSet(src, 1, 0, 2.0);
cvmSet(src, 2, 0, 3.0);

cvMul(mat, src, dst);
           
cvReleaseMat(&mat);
cvReleaseMat(&src);
cvReleaseMat(&dst);

のようなプログラムを作ってみたところ、cvMulの部分で

Assertion failed! Expression:(unsigned)row<(unsigned)mat->rows && (unsigned)col<(unsigned)mat->cols

のようなエラーメッセージがでてしまう。(環境によりエラーメッセージが異なると思います。)
ほとんど本の通りにやっているのに困り果てて色々調べてみたところ、OpenCVプログラミングブックの正誤情報があり、行列の積の場合、正しくは、cvMulではなくcvmMulだそうで...
さらに調べてみると、このcvmMulという関数は古いそうなので、cvMatMulを使うのが正解みたいです。

cvMulは行列の各要素の積で、cvMatMulは行列の積となります。
そのため、行数と列数の異なる行列の積の場合、cvMulではエラーとなり、cvMatMulでは正しく行列の積を計算してくれます。

つまり、
行列の積行列の積の行列の積は

cvMulでは
行列の積
cvMatMulでは
行列の積
となります。

ご注意を!
って、OpenCVプログラミングブックにハメられた~
Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

Essential OpenCV Programming with Visual C++ 2008

メインページOpenCV

これまでOpenCV本といえば、
OpenCV プログラミングブック(初版)、
実践OpenCV―映像処理&解析
OpenCV プログラミングブック 第2版 OpenCV 1.1対応
詳解 OpenCV
と登場してきましたが、日本では第4弾目?の
Essential OpenCV Programming―with Visual C++2008
なる本が発売されました。

この本はVisual C++2008(C++/CLI)を使うことで、GUI周りは.NETにお任せすることで、OpenCVの機能を中心にプログラムをしよう!というのがコンセプト。

って、私がブログで書いてきた内容と一緒じゃん!と、思いながら、もしかしたら、私のブログが参考文献に書いていないか?と淡い期待を持ちながらヨドバシカメラに行って本を見てみましたが、軽く玉砕されて帰ってきました。(普通、ブログは参考文献には書かないかっ...)

解説の流れは、やっぱり画像データを読み込み、OpenCVで画像処理を行い、IplImageから、.NETのBitmapに変換してピクチャボックスに表示するというものでした。
Webカメラやビデオファイルからの画像読み込みなどもしているので、実際に画像を取り込みながら画像処理をできるので、サンプルプログラムを実行するだけでも、OpenCVによる画像処理を楽しめるのではないでしょうか?
ただし、本書内で解説しているサンプルプログラムは、ボタンのイベントに処理を追加するような、分かり易さ重視になっているので、私が【OpenCV2.0】C++/CLIによるサンプルプログラム(Ver2.0対応版)のページ公開しているサンプルプログラムの方が、少しだけアプリっぽいプログラムになっていると思います。

ちなみに、私はGUIは.NETに任せて、簡単にOpenCVのプログラムが書けるようにC++/CLIで開発しているのは同じコンセプトなのですが、まだまだユーザーの多いと思われるVisual Studio 2005でサンプルプログラムを公開しているのも、私なりのこだわりだったりもします。



目次

第1章 イントロダクション
1.1 OpenCVとは
1.2 OpenCVのセットアップ
1.3 アプリケーション開発の手順
第2章 画像入出力の基本
2.1 画像ファイルの読み込み
2.2 Webカメラを利用する
2.3 画像をファイルに保存する
2.4 ビデオファイルを利用する
2.5 カメラ入力した画像をビデオファイルに出力する
第3章 画像データの扱い方
3.1 IplImage構造体
3.2 画像の基本操作
3.3 画像の幾何学変換
3.4 関心領域の設定
3.5 IplImage型のデータを.NET FrameworkのBitmapオブジェクト に変換する
第4章 画像処理(1)——色を処理する
4.1 カラーチャンネル
4.2 ヒストグラム
4.3 2値化
4.4 階調変換
第5章 画像処理(2)——形を処理する
5.1 フィルタ処理
5.2 ノイズ除去
5.3 画像計測
第6章 グラフィックス機能
6.1 描画関数の使い方
6.2 マウスイベントの利用
6.3 領域内の塗りつぶし
第7章 作ってみよう
7.1 AHAムービー
7.2 背景差分
7.3 クロマキー
7.4 物体追跡
付録 OpenCV 1.1pre1aを使用する際の注意事項
A.1 ビデオキャプチャの初期化
A.2 ビデオライタの初期化
A.3 ファイルダイアログ
Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

パターンマッチング(正規化相関など)

メインページ画像処理

画像の中から指定した画像(テンプレート)と似ている位置を探すことを
テンプレートマッチング
(template matching)
と言います。

パターンマッチング(テンプレートマッチング、正規化相関など)パターンマッチング(テンプレートマッチング、正規化相関など)
テンプレート画像

このとき、テンプレートと画像データがどれだけ似ているか?という評価値(類似度または相違度)にはいくつかあり、次に示すような値を用います。

以下の式において、テンプレートの輝度値の値をT(i,j)、画像の輝度値の値を(i,j)とします。
座標の(i,j)はテンプレートの幅をm画素、高さをn画素としたとき、
左上(もしくは左下)を(0,0)、右下(もしくは右上)を(m-1、n-1)とします。

SSD(Sum of Squared Difference)

SSDはテンプレートをラスタスキャンし、同じ位置の画素の輝度値の差の2乗の合計が用いられます。
SSDの値が小さいほど、似ている位置となります。
  SSD

SAD(Sum of Absolute Difference)

SADはテンプレートをラスタスキャンし、同じ位置の画素の輝度値の差の絶対値の合計が用いられます。
SADの値が小さいほど、似ている位置となります。
  SAD

正規化相互相関【NCC:Normalized Cross-Correlation】

テンプレートと画像との類似度として、以下の正規化相互相関を用いられる場合もあります。
類似度が1に近いほど、似ている位置となります。
  正規化相互相関

ちなみに、この計算式は内積の式をCosθ = の式に変形した式と同じ事にお気づきでしょうか?
上式を以下のように変形すると、M×N次元のIのベクトルとTのベクトルの内積に見えてきませんか?

正規化相互相関


正規化相互相関【ZNCC:Zero-mean Normalized Cross-Correlation】

上記NCCの相互相関係数ではテンプレートや画像の明るさが変動すると、NCCの値もふらついてしまうので、テンプレートおよび画像の輝度値の平均値をそれぞれの値から引いて計算することで、明るさの変動があっても安定的に類似度を計算することができます。
 
  正規化相互相関

ここで、この式はテンプレートの領域内の輝度値の平均値を計算してから、さらに輝度値から平均値を引くため、標準偏差の時にも説明したように、この式でそのままプログラミングすると効率の悪いプログラムとなってしまいます。
そのため、今回も同様にRZNCCの式を変形します。

テンプレートの平均輝度値およびテンプレートと同じ領域の画像の輝度値の平均は

 テンプレートの平均輝度値     画像の平均輝度値

で求まることから、この値をRZNCCの式に代入して整理すると、
 正規化相互相関

となります。
この式を用いると、プログラム的には1パスで済むでの計算効率が良くなります。
 

ΣΣ×××の部分がなんだか難しく見える方は、C言語に置き換えて
Sum = 0;
for(j = 0; j < N; j++){
     for(i = 0; i < M; i++){
           Sum += ×××;
     }
}

と置き換えて読んで下さい。


ここで説明しておきながら、最近の工業用途では、この正規化相関の方法よりもパターンの輪郭に基づき、回転やスケール変動などにも対応したマッチング(輪郭サーチ)が一般的になってきています。
最近では、さらにカメラが動いてもマッチングする三次元マッチングなども登場してきています。

正規化相関では明るさの変動にも強く優れたアルゴリズムのように聞こえるかもしれませんが、パターンが重なった場合や欠けた場合に意外と弱かったりもします。

輪郭ベースのマッチングは、ちょっと難しい(というか、理解できていない、ノウハウが無い)もので...
Loading...
スポンサーリンク



現在の閲覧者数: / 合計