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

プロフィール

Akira

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

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

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

08 | 2008/09 | 10
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購入

【OpenCV】IplImageからBitmapを確保する

 

OpenCVのプログラムを作っていると、OpenCV用のGUI(highgui)はかなり物足りなく、ウィンドウや表示まわりは.NETに任せたいので、OpenCVのIplImageから.NETのBitmapへ変換する方法を紹介します。

変換部分のサンプルプログラムは以下の通りです。

// IplImage の確保
IplImage *src_img = cvLoadImage("c:\\Sample.bmp");
//  IplImageからBitmapの確保
Bitmap^ bmp = gcnew Bitmap(src_img->width, src_img->height, src_img->widthStep,
      System::Drawing::Imaging::PixelFormat::Format24bppRgb, IntPtr(src_img->imageData));

ただし、PixelFormatIplImageで確保した画像データのdepthおよびnChannelsに合わせて設定して下さい。

PixelFormatdepthnChannels
Format8bppIndexed

8

1

Format24bppRgb

8

3


他の組合せも考えられますが、.NETやOpenCVの関数が対応していないものが多いので、実質的に、この2つの組合せになると思います。
モノクロ8Bit画像(Format8bppIndexed)の場合は、別途、カラーパレットを設定する必要があります。
カラーパレットの設定については、8Bitモノクロのカラーパレット設定のページを参照願います。 

ここで作成したBitmapをPictureBoxに表示する場合、

  pictureBox1->Image = bmp;

とすると

'System.AccessViolationException' のハンドルされていない例外が System.Drawing.dll で発生しました。
追加情報: 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。


というエラーメッセージが出てしまうので、DrawImageを使って

  g->DrawImage(bmp, 0, 0, src_img->width, src_img->height); 

というようにして、ピクチャボックスへ描画します。 

このへんのサンプルプログラムは
  C++/CLIによるサンプルプログラム
のページにまとめました。 参考まで。
  
ちなみに今回はIplImageからBitmapクラスへ変換する方法を紹介しましたが、BitmapクラスからIplImageへの変換も出来なくはないのですが、IplImageで確保されたメモリは、メモリの扱いを効率良くするため、16バイト境界にアライメントされている(メモリの先頭アドレスを16進数で表すと最下位が0となる)のに対し、Bitmapクラスで確保されたメモリは、どのようになっているのか?不明(私は知らない)なので、IplImage→Bitmapへの変換にしておいた方が無難でしょう。
こちらの方がLock~Unlockなしにポインタを触れますし...

 


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購入

【C++/CLI】System::String^からchar*へ変換

アンマネージのC言語で作られたライブラリなどへ.NETのプログラム(マネージ)から文字列を渡す場合、System::String^からchar*へ変換する必要があります。

この場合、
System::Runtime::InteropServices::Marshal::StringToHGlobalAnsiメソッド
を使って変換します。
char*ポインタを使い終わったら
System::Runtime::InteropServices::Marshal::FreeHGlobalメソッド
でメモリを解放します。

以下、.NETのファイルを開くダイアログボックスを使ってファイル名を取得し、OpenCVの画像読込関数(cvLoadImage)へ渡す例を示します。

//ファイルを開くダイアログの作成
OpenFileDialog^ dlg = gcnew OpenFileDialog;
//ファイルフィルタ
dlg->Filter = "画像ファイル(*.bmp,*.jpg,*.png,*.tif,jp2)|*.bmp;*.jpg;*.png;*.tif;*.jp2";
//ダイアログの表示
dlg->ShowDialog();

//System::String^型のファイル名
System::String^ strFilename = dlg->FileName;
//System::String^からchar*へ変換
char* pStr = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(strFilename).ToPointer();
//アンマネージ関数へchar*を渡す
IplImage *src_img = cvLoadImage(pStr, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
//メモリの解放
System::Runtime::InteropServices::Marshal::FreeHGlobal(IntPtr(pStr));

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購入

平滑化(移動平均、ガウシアン)フィルタ


平滑化フィルタは読んで字のごとく、画像の輝度値を平らに滑らかにするための手法です。
画像中のノイズを除去するために用いられます。

平滑化処理前

 

平滑化処理後

平滑化処理前

平滑化処理後

平滑化処理前

 

平滑化処理後


平滑化フィルタには、以下の2つのフィルタ処理が一般的です。

 移動平均フィルタ(平均化フィルタ)

移動平均フィルタ(別名:平均化フィルタ、単に平滑化フィルタともいう)では、注目画素のその周辺の輝度値を用いて、輝度値を平均し、処理後画像の輝度値とする手法です。
例えば、注目画素とその周辺の輝度値に以下のようなレートを掛け合わせて輝度値を求めます。
  
  3×3フィルタ

この3×3のレートの組合せの事をカーネルオペレータマスクなどと言います。 
とくに3×3である必要はなく、5×5の場合では

  5×5

となります。
ただし、全てのレートを足し合わせてになるように調整して下さい。

 ガウシアンフィルタ

移動平均フィルタでは注目画素周辺の輝度値を単に平均していましが、一般的な画像では 注目画素に近い画素の輝度値は注目画素の輝度値と近い場合が多いですが、注目画素から遠くなればなるほど、注目画素の輝度値とは差が大きくなる場合が多くなります。
この事を考慮し、注目画素に近いほど、平均値を計算するときの重みを大きくし、遠くなるほど重みを小さくなるようにガウス分布の関数

  ガウス分布

を用いてレートを計算しているのがガウシアンフィルタです。
σの値が小さいほど平滑化の効果は小さくなり、大きいほど効果が大きくなりますが、
よく以下のカーネルが用いられます。

3×3の場合

  3×3の場合

5×5の場合

  5×5の場合

■関連記事
 ガウシアンフィルタの特徴
 

 


Loading...
スポンサーリンク



現在の閲覧者数: / 合計