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

プロフィール

Akira

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

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

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

09 | 2008/10 | 11
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 31 -

趣味のブログ

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

行列で連立方程式を解く

メインページ使える数学

行列を使って連立方程式を解く方法を紹介します。

【計算例
3つの方程式
 連立方程式

を行列であらわすと

連立方程式を行列であらわす

となります。この行列を逆行列を使ってX、Y、Zに関して解くと
 行列で連立方程式を解く

となり連立方程式を行列で解くことができます。

というのは普通すぎて面白くないので、3点からなる円の方程式を行列で解く方法を紹介します。


中心(a、b)、半径 r の円の方程式

  (X - a)2 + (Y - b)2 = r2

を展開して

  X+ Y2
 - 2aX - 2bY + a2 + b2 - r =  0

となり、A = 2a、B = 2b、C = r2 - a2 - b2  とおくと、上式は


  AX + BY + C  =   X2  + Y

となります。
ここで、円上の3点(X0、Y0)、(X1、Y1)、(X2、Y2)を代入すると

  AX0 + BY0 + C  =  X02  + Y02    
  AX1 + BY1 + C  =  X1+ Y12 
  AX2 + BY2 + C  =  X2+ Y22 

の3本の式が成り立ち、これを行列で表現すると、

 行列で円の方程式を解く

となり、A、B、Cに関して行列を解くと
 円の方程式を解く

となり、A、B、Cが求まることから、A = 2a、B = 2b、C = r2 - a2 - b2  より
中心と半径を求めることができる。

行列を解く部分は
 ガウスの消去法
のページを参照下さい。

逆行列はエクセルでも解くことができるので、
  行列の積、逆行列、転置行列の計算
のページも御参照下さい。


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

エッジ抽出

下図のように画像の輪郭(エッジ)を抽出する方法を紹介します。

エッジ抽出前

エッジ抽出後

エッジ抽出前

 

エッジ抽出後


上図はソーベルフィルタの例です。

 微分フィルタ

画像の輝度値に対して、隣り合う画素の輝度差が大きいほど、画像のエッジだと考えることができ、
画像の輝度値データ画像輝度値データ に対して
横方向の差分(偏微分)横方向の差分は以下のカーネルで求めることができる。

000
0-11
000
縦方向の差分(偏微分)縦方向の差分は以下のカーネルで求めることができる。
 
010
0-10
000

または

000
0-10
010

※画像データの並びがボトムアップかボトムダウンかにより使い分けます。

このとき、エッジの強さは

 エッジの強さ

エッジの傾きは

 エッジの傾き

として求めることができる。
   


 プリューウィットフィルタ(Prewitt filter)

微分フィルタではノイズに弱いため、横方向(または縦方向)のエッジを計算してから
縦方向(または横方向)に平均化処理を行う手法です。カーネルには以下とおりです。

横方向の差分
-101
-101
-101

縦方向の差分
111
000
-1-1-1

または

-1-1-1
000
111


 ソーベルフィルタ(Sobel filter)

プリューウィットフィルタではノイズを除去するのに平滑化処理を行っていましたが、ガウシアン平滑化処理を行ったのがソーベルフィルタとなります。カーネルには以下とおりです。

横方向の差分
-101
-202
-101

縦方向の差分
121
000
-1-2-1

または

-1-2-1
000
121

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】画像の拡大縮小表示(高機能版)

画像の拡大縮小表示(簡易版)のページでは、簡単に画像の拡大縮小表示する方法を紹介しましたが、画像サイズが大きいときなど、不都合な場合があるのですが、その時にはDrawImageメソッドを使って画像を拡大縮小表示します。

Win32APIのStretchDIBits
関数に相当するのが、.NETではGraphicsクラスのDrawImageメソッドになります。
DrawImageメソッドには実に30個ものオーバーロードがあり、その分だけ高機能になっているのですが、詳細はMSDNに任せるとして、これまで慣れ親しんできたStretchDIBitsに近いメソッドを紹介します。

DrawImageの構文は以下の通り
void DrawImage (
    Image^ image,
    Rectangle destRect,
    Rectangle srcRect,
    GraphicsUnit srcUnit
)

image描画するImageオブジェクト
通常はBitmapオブジェクトを渡す
destRect描画先(ピクチャボックスなど)の描画領域
srcRect描画するImageオブジェクトの領域
srcUnitsrcRect パラメータで使用する単位を指定する GraphicsUnit 列挙体のメンバ
通常はGraphicsUnit::Pixelと指定すればOK

また、Win32APIのSetStretchBltModeのように伸縮モードを設定するには、.NETでは
GraphicsオブジェクトのInterpolationModeプロパティで設定します。

Default規定の補間モード
High高品質補間
Low低品質補間
NearestNeighbor最近傍補間
Bilinear双一次補間
Bicubic双三次補間
HighQualityBilinear高品質双一次補間
HighQualityBicubic高品質双三次補間


画像処理のプログラムでは画素の1つ1つが良くわかるNearestNeighborがオススメです。

ということで、画像を等倍で表示する場合は、srcRectとdestRectを同じサイズに指定します。

画像の拡大縮小(DrawImage)

画像を n倍に拡大する場合は、srcRectをdestRectの1/n倍のサイズに指定します。
画像の拡大縮小(DrawImage)

この処理のサンプルプログラムは以下に示しておきます。
ただし、エラー処理などはまるで無視しています。

 private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    
     //PictureBoxと同じ大きさのBitmapクラスを作成する。
     Bitmap^ bmpPicBox = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height);
     //空のBitmapをPictureBoxのImageに指定する。
     pictureBox1->Image = bmpPicBox;
     //Graphicsクラスの作成(空のピクチャボックスからGraphicsを作成する)
     Graphics^g = Graphics::FromImage(pictureBox1->Image);

     //伸縮モードをNearestNeighborに設定
     g->InterpolationMode = Drawing2D::InterpolationMode::NearestNeighbor;

     //描画するビットマップ
     Bitmap^ bmp = gcnew Bitmap("c:\\test.bmp");
     //画像の描画
     int DrawScale = 5;
     g->DrawImage(bmp,
      System::Drawing::Rectangle(0, 0, pictureBox1->Width, pictureBox1->Height),
      System::Drawing::Rectangle(140, 100, pictureBox1->Width / DrawScale, pictureBox1->Height / DrawScale),
      GraphicsUnit::Pixel);
        
    }


 実行画面
画像の拡大縮小(DrawImage)

DrawImageメソッドを使ったサンプルプログラムを下記ページにてまとめました。

  .NET(C++/CLI)による画像拡大縮小表示、画像処理サンプルプログラム


参考まで。


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

数式エディタ、演算ソフト【カルキング】

 目次ページへ

このブログはこれまで、図や数式はWordの図形描画や数式エディタを使って書いていたのですが、数式のフォントを変えることはできないし、微妙に思い通りに書くことができないので、何か良い数式エディタを探していてのですが、良さそうなソフトはいくつかあるもので、

 ●MathCAD
  ●Mathematica
  ●カルキング8


などなど。
数式を入れると、計算までしてくれて、どこかで見たことのあるような三次元グラフなども簡単に書けてしまう。
ただし値段が高い!この中で一番安いカルキング8でも49、800円
カルキング8の廉価版のカルキングJ2というので、13、000円。

ただ、機能比較のページを見ていると、やっぱり物足りない。

で、とりあえずカルキングの体験版がダウンロードできるので、使ってみると悪くは無いが、評価版の制限で書いた内容が保存できないのはちょっとイタい。

数式エディタの比較サイトとかを見ても、評価はそこそこだったので、だんだんと欲しくなり、実際の販売価格を調べてみると、アマゾンで買うのが一番安くて、4万円弱。

さずがに、ちょっとは悩んだものの、アマゾンの罠にはまって、思わず注文ボタンをクリックしてしまいました...





これからはカルキングを使ってブログの記事を書くのが楽しみなところです。


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】膨張収縮(cvDilate、cvErode)関数のバグ?

 

OpenCVの膨張収縮関数にバグらしき挙動があったので、紹介します。

OpenCV.jpによるとそれぞれの関数は

■膨張
 void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
      
src 入力画像
dst 出力画像
element 収縮に用いる構造要素。NULLの場合は, 3×3 の矩形形状の構造要素を用いる
iterations 膨張の回数
     
 
■収縮
 void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 ); 
 
src 入力画像
dst 出力画像
element 収縮に用いる構造要素。NULLの場合は, 3×3 の矩形形状の構造要素を用いる
iterations 収縮の回数

とありますが、iterations1以外の場合、どうもおかしい???

iterations = 1 の場合

膨張前

膨張
cvDilate

膨張後

処理前

 

処理後

収縮前

収縮
cvErode

収縮後

となります。
この処理は特に問題はありません。

iterations = 2 の場合

膨張前

膨張
cvDilate

膨張後

処理前

処理後

収縮前

収縮
cvErode


iterationsの場合は、膨張の場合、元の画像の外側は画素づつ膨張し、
収縮の場合は内側へ画素づつ収縮するのを期待しているのですが、上図のように
膨張の場合、上側に画素、下側に画素、左側に画素、右側に画素膨張し、
収縮の場合、上側に画素、下側に画素、左側に画素、右側に画素収縮してしまいます。

そのため、膨張収縮の回数を2回(iterationsを2)にしてクロージング処理(膨張してから収縮)をした場合、

クロージング前

クロージング

クロージング後

というように画像の位置がズレてしまいます。
当然、オープニング処理でも同じような現象になります。
これはやっぱりバグですよね?!

しょうがないので私は膨張収縮を繰返す場合は、iterations
にしておいてfor文などで処理を繰返すようにしています。


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

メディアンフィルタ

平滑化フィルタでは注目画素の周辺画素の輝度値を平均し、ノイズを除去していましたが、画像の輪郭もボケてしまう欠点がありました。それに対し、メディアンフィルタでは周辺輝度値の大きさを順に並べ、メディアン(中央値)を注目画素に置き換えることでノイズを除去します。
特に周辺画素の輝度値よりも大きく異なるノイズ(ゴマ塩ノイズとかスパイクノイズという)を除去するのに効果を発揮します。


メディアンフィルタ処理前 メディアンフィルタ処理後
メディアンフィルタ処理前メディアンフィルタ処理後
メディアンフィルタ処理前 メディアンフィルタ処理後

【処理の詳細】
 メディアンフィルタ処理
注目画素(画像中央の輝度値165の部分)周辺の輝度値を取得します。

  61、96、41、57、165、34、24、30、31

この輝度値を順番に並べます。

  24、30、31、34、41、57、61、96、165

並べた輝度値のメディアン(中央値)の41で輝度値165を置き換えます。

この処理を全画素について行うと
、ノイズを除去することができます。

メディアンフィルタ処理後

ただし、平滑化処理に比べ、処理が重い...

もう少し具体例でいうとこんな感じ

【メディアン処理前】
メディアンフィルタ処理

【メディアン処理後】メディアンフィルタ処理

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



現在の閲覧者数: / 合計