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

プロフィール

Akira

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

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

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

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

【C++/CLI】傾いた楕円の描画(楕円上の点の座標を求める方法)

前回は、.NETのGraphicsクラスの機能を使って傾いた楕円を描画しましたが、.NETでない
場合は使えないので、傾いた楕円上の点の座標を求めて描画する方法を紹介します。

目標とする楕円描画例

傾いた楕円の描画 

 もともと楕円は円を拡大縮小して書くことができる特徴を使って楕円上の点を求めたいと思います。
まず、半径1の円上の点を考えます。 

円上の点の座標 

円上の座標を式であらわすと、

X = cos ω
Y =  sin ω

となります。
この式に関して、ωを0~360°で変化させると半径1の円を描画することができます。

円上の点X = cos ω
Y = sin ω
 
 
           


この円上の点に関して、X軸方向にa倍、Y軸方向にb倍すると

楕円上の点の座標X = a × cos ω
Y = b × sin ω


となり、楕円上の点の座標が求まります。
この点を原点周りにθ°回転すると

楕円上の点X = a × cos ω × cosθ - b × sin ω × sinθ 
Y = a × cos ω × sin θ + b × sin ω × cosθ


となり傾いた楕円上の点を求めることができます。
あとは、X軸方向にX0,Y軸方向にY0だけ平行移動すると

楕円上の点X = a × cos ω × cosθ - b × sin ω × sin θ + X0 
Y = a × cos ω × sin θ + b × sin ω × cosθ + Y0
 

となり傾いた楕円上の点は求まり、角度ωを0~360°で変化させ、点を折れ線でつなぐと
傾いた楕円を描画することが出来ます。

この楕円描画部分のサンプルプログラムは以下の通りです。

 private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
     //傾いた楕円の描画

     int i;
     float Px0, Py0, Px1, Py1;

     float a, b;
     float X0, Y0;
     float w, th, thRad;

     //長軸
     a = 100;
    
//短軸
     b = 50;
     //中心座標
     X0 = 300.0F;
     Y0 = 200.0F;
     //楕円の傾き
     th = 30.0F;

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

     ///////////////////////////////////
     //  Penの作成
     //    
     //楕円描画用のペン
     Pen^ p = gcnew Pen(Color::Blue, 5);
    
//軸描画用のペン
     Pen^ pAxis = gcnew Pen(Color::Black, 3);
    
    
///////////////////////////////////
     //  傾いていない楕円の描画
     //
 
     g->DrawEllipse(p, RectangleF(-a, -b, a * 2.0F + 1.0F, b * 2.0F + 1.0F)); 
//楕円
    
//軸の描画
     g->DrawLine(pAxis, -a * 2, 0.0, a * 2, 0.0); 
//X軸
     g->DrawLine(pAxis, 0.0, -b * 2, 0.0, b * 2); 
//Y軸
    
    
///////////////////////////////////
     //  傾いた楕円の描画
     //

     //最初の点の座標
     thRad = th / 180.0F * (float)Math::PI;
     Px0 = (float)(a * Math::Cos(0) * Math::Cos(thRad)
              - b * Math::Sin(0) * Math::Sin(thRad)
              + X0);
     Py0 = (float)(a * Math::Cos(0) * Math::Sin(thRad)
              + b * Math::Sin(0) * Math::Cos(thRad)
              + Y0);

     //楕円の描画
     for (i = 1; i <= 360; i++){
      w = i / 180.0F * (float)Math::PI;
      Px1 = (float)(a * Math::Cos(w) * Math::Cos(thRad)
         - b * Math::Sin(w) * Math::Sin(thRad)
         + X0);
      Py1 = (float)(a * Math::Cos(w) * Math::Sin(thRad)
         + b * Math::Sin(w) * Math::Cos(thRad)
         + Y0);

      g->DrawLine(p, Px0, Py0, Px1, Py1);
      Px0 = Px1;
      Py0 = Py1;

     }

     ///////////////////////////////////
     //  再描画
     //
     pictureBox1->Refresh();

    }

 


 関連記事

 

 傾いた楕円の描画(Graphicsクラスを用いた方法)

回転行列、拡大縮小行列、平行移動行列

最小二乗法による楕円近似



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

回転行列、拡大縮小行列、平行移動行列

メインページ使える数学

  回転行列

点(x, y)を原点まわりに反時計方向にθ度回転する行列は

回転行列

  拡大縮小行列

点(x, y)を原点に関してX軸方向にS倍、Y軸方向にS倍する行列は

拡大縮小行列

  平行移動行列

点(x, y)をX軸方向にT、Y軸方向にTだけ移動する行列は

平行移動行列

 


 

 ただし、平行移動だけ行列の足し算になると、扱いにくい場合があるので
3×3行列を用いて以下のように表す場合もあります。

■回転行列

回転行列

■拡大縮小行列

拡大縮小行列

■平行移動行列

平行移動行列

とすることで、すべての座標変換を行列の積で扱うことができます。


 参考まで...

個人的には回転行列を覚えるのは苦手で、SinとCosが逆になっり
マイナスのつける位置を間違ったりしていたのですが、次のように
考えることで少しは覚えやすくなりました。

下図のように
点(1,0)をθ度回転すると(Cosθ、Sinθ)
点(0,1)をθ度回転すると(-Sinθ、Cosθ)
に移動することはすぐにわかります。

  回転行列
このことを行列で表現すると
点(1,0)が(Cosθ、Sinθ)になることから
 回転行列

点(0,1)が(-Sinθ、Cosθ)になることから
 回転行列

という事がわかります。
これを合わせて表現すると
 回転行列

となり、回転行列が求まります。
この計算を何回か繰り返すと、そのうち覚えると思います。

 


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】傾いた楕円の描画(Graphicsクラスを用いた方法)

下図のように傾いた楕円を描画するのにGraphicsクラスにある座標変換の
メソッド(××Transformメソッド)を使った方法を紹介します。

傾いた楕円の描画

線や楕円などを描画する際の座標はピクチャボックスなどのいちばん左上が原点で
X軸は右方向が正、Y軸は下方向が正となっているのですが、この座標軸はGraphicsクラスの
××Transformメソッドを使って、移動、回転、拡大縮小が可能です。

上図の楕円を描画している部分のプログラムは以下のとおりです。

 private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
     //傾いた楕円の描画

     int a, b;
     float X0, Y0;
     float th;

     //長軸
     a = 100;
     //短軸
     b = 50;
     //中心座標
     X0 = 300.0F;
     Y0 = 200.0F;
     //楕円の傾き
     th = 30.0F;

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

     ///////////////////////////////////
     //  Penの作成
     //    
     //楕円描画用のペン

     Pen^ p = gcnew Pen(Color::Blue, 5);
     //軸描画用のペン
     Pen^ pAxis = gcnew Pen(Color::Black, 3);

     ///////////////////////////////////
     //  座標系変換前の楕円の描画
     //
     g->DrawEllipse(p, Rectangle(-a, -b, a * 2 + 1, b * 2 + 1));
     //軸の描画
     g->DrawLine(pAxis, -a * 2, 0, a * 2, 0); //X軸
     g->DrawLine(pAxis, 0, -b * 2, 0, b * 2); //Y軸

     ///////////////////////////////////
     //  座標系の変換
     //
     //座標系の平行移動

     g->TranslateTransform(X0, Y0);
     //座標系の回転
     g->RotateTransform(th);
    
     ///////////////////////////////////
     //  座標系変換後の楕円の描画
     //
    
     g->DrawEllipse(p, Rectangle(-a, -b, a * 2 + 1, b * 2 + 1));
     //軸の描画
     g->DrawLine(pAxis, -a * 2, 0, a * 2, 0); //X軸
     g->DrawLine(pAxis, 0, -b * 2, 0, b * 2); //Y軸

     ///////////////////////////////////
     //  座標系の初期化
     //
     g->ResetTransform();

     ///////////////////////////////////
     //  再描画
     //
     pictureBox1->Refresh();

    }


 ■座標系の平行移動(Graphics.TranslateTransformメソッド)

void TranslateTransform(
     float dx,
     float dy
)


概要
  
座標系を平行移動します。

パラメータ

dx  座標を現在のX軸方向にdxだけ平行移動します。
dy座標を現在のY軸方向にdyだけ平行移動します。

 ■座標系の回転移動(Graphics.RotateTransformメソッド)

void RotateTransform(
     float angle
)

概要
  
座標系を回転移動します。

パラメータ

angle 座標を時計周りにangle度(度数(degree)で指定)回転移動します。

 ■座標系の拡大縮小(Graphics.ScaleTransformメソッド)

void ScaleTransform(
     float sx,
     float sy

)


概要
  
座標系を拡大縮小します。

パラメータ

sx   座標を現在のX軸方向にsx倍、拡大縮小します。
sy座標を現在のY軸方向にsy倍、拡大縮小します。

 ■座標系の初期化(Graphics.ResetTransformメソッド)

void ResetTransform()

概要
  座標系を初期化します。
  原点を左上、回転角度0°、等倍に戻します。

パラメータ
   
なし

■注意点
 
座標変換行列などではお約束ですが、座標変換の順番が異なると変換後の結果が異なります。

 【回転移動を行ってから平行移動をした場合】
傾いた楕円の描画

   基本的に

     拡大縮小回転移動平行移動
  
  の順番で変換するのが、一番自然だと思います。

  【平行移動を行ってから回転移動をした場合】

傾いた楕円の描画


関連記事
Graphicsオブジェクトのアフィン変換(グローバル変換)


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】ウィンドウの押されたボタンを取得(DialogResultプロパティ)

一般的なウィンドウでは下図のようにOKボタンCancelボタンを配置しボタンが押されるとウィンドウを閉じるようにしますが、このOKボタンCancelボタンのどちらのボタンを押されたのか?を取得する方法を紹介します。

ウィンドウの押されたボタンを取得

まず、buttonコントロールOKボタンCancelボタン用の2つを配置します。
次にボタンのDialogResultプロパティの中からボタンに応じてOKCancelなどを選択します。

ウィンドウの押されたボタンを取得する

DialogResultプロパティを設定することで、ボタンが押されると自動的にウィンドウが閉じられるので、ボタンのイベント処理を記載する必要はありません。 (ShowDialogメソッドを使ってフォームを表示した場合)
ただし、ウィンドウが非表示になるだけなので、ウィンドウが必要なくなったら、フォームを解放しておきます。

以下、Form2が閉じられた時に、何のボタンを押されてウィンドウが閉じられたのか?
を取得する部分のサンプルプログラムです。

 private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
     //Form2を開く
     Form2^ frm = gcnew Form2();
     frm->ShowDialog();

     //押されたボタン別の処理
     if (frm->DialogResult == System::Windows::Forms::DialogResult::OK)
          MessageBox::Show("Okボタンが押されました");
     else if (frm->DialogResult == System::Windows::Forms::DialogResult::Cancel)
          MessageBox::Show("Cancelボタンが押されました");

     //フォームの解放
     delete frm;
    }

 実行例

ウィンドの押されたボタンを取得する

Form2を開くボタンをクリック

ウィンドウの押されたボタンを取得

OKボタンをクリックすると、Form2のウィンドウが閉じられ、

ウィンドウの押されたボタンを取得する。

と表示されます。

ウィンドウの×ボタンでウィンドウが閉じられた場合はCancelボタンとして認識されます。


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プログラミングブック

メインページ参考文献

基本的にこのページ(http://opencv.jp/)を本にしたものですが、やっぱりインターネットで見るよりも本で見る方が見やすいですし...

でも、ところどころで「××を参照」とか書いてある部分がありますが、特に「リファレンスを参照」と書いてある部分はリファレンスを見ても書いて無いじゃん!!!
とか、
カラー処理の説明なのに本がモノクロ印刷なので、よく分かんない!

というような突込みどころもあったりもしますが、その時には素直にホームページの方を参照しましょう。
(ほとんどの場合、ホームページの方が詳しく書いてあります。)

と言いながらも、とりあえずはおススメです。

※現在では第3版のOpenCV 2 プログラミングブックが発売されています。

      

    初版      第2版(Ver1.1対応版)

【初版 目次】
Chapter 1 入門編
1.1 画像処理とOpenCV
1.1.1 コンピュータは、どのように画像を扱っているのだろう
1.1.2 コンピュータビジョン コンピュータが目を持った
1.1.3 コンピュータビジョンの広がり
1.1.4 自分でコンピュータビジョンプログラミングってできるの?
1.1.5 OpenCVとは
1.2 OpenCVの読み方・本書の読み方について
1.2.1 OpenCVにおけるいくつかのルール
1.2.2 本書の読み方

Chapter 2 導入編
2.1 インストールと最初のプログラム
2.1.1 OpenCV の入手
2.1.2 OpenCV のインストール
2.1.3 Visual Studio C++ 2005 の設定
2.1.4 最初のプログラム
2.2 チュートリアル
2.2.1 カメラからの入力画像をそのまま表示する
2.2.2 背景との差分を計算する
2.2.3 肌色領域を抽出する
2.2.4 顔領域を追跡する
2.2.5 静止画を保存する
2.2.6 まとめ

Chapter 3 基礎編
3.1 セピア変換
3.1.1 セピア変換のアルゴリズム
3.1.2 入力画像の読み込み
3.1.3 表色系変換結果の格納先を作成
3.1.4 チャンネルごとの操作
3.1.5 色相H と彩度S の値の変更
3.1.6 チャンネルの統合と逆変換
3.1.7 後片付け
3.2 クロマキー
3.2.1 クロマキー処理の流れ
3.2.2 OpenCV によるクロマキー処理の実現
3.3 幾何学変換
3.3.1 画像補間
3.3.2 画像の拡大縮小
3.3.3 画像の回転
3.3.4 画像の平行移動
3.3.5 アフィン変換による複雑な変形
3.3.6 透視変換
3.4 行列演算
3.4.1 連立方程式を解く
3.4.2 結果を確認する

Chapter 4 チュートリアル編
4.1 2値化
4.1.1 2 値化の概要
4.1.2 OpenCV を用いた2 値化
4.2 ヒストグラム
4.2.1 デジタル画像処理分野におけるヒストグラム
4.2.2 コントラストとは
4.2.3 濃度階調変換
4.2.4 OpenCV を用いた濃度階調変換
4.3 輪郭抽出
4.3.1 輪郭抽出はどのように行われるか
4.3.2 OpenCV を用いた輪郭抽出
4.4 エッジ抽出
4.4.1 エッジの抽出方法
4.4.2 オペレータの種類
4.4.3 OpenCV によるエッジ抽出
4.5 ハフ変換
4.5.1 ハフ変換の基本的な考え方
4.5.2 パラメータ空間の工夫
4.5.3 ハフ変換の特徴
4.5.4 ハフ変換による直線抽出
4.6 対応領域探索
4.6.1 テンプレートマッチング法とは
4.6.2 テンプレートマッチング法を用いた数字探索
4.7 膨張と収縮
4.7.1 各処理の概要
4.7.2 膨張と収縮を用いたノイズ除去
4.8 形状特徴抽出
4.8.1 全体の流れ
4.8.2 HSV 表色系を用いた肌色領域抽出
4.8.3 欠損領域の補間
4.8.4 面積が最大の領域を抽出
4.8.5 Convex Hull の生成
4.8.6 Convex Hull 内の面積の算出
4.8.7 グーチョキパーの識別
4.9 物体追跡
4.9.1 画像上での物体の動きとは
4.9.2 色情報を用いた追跡
4.9.3 追跡対象物体の輪郭を動的に取得
4.10 動的な背景差分法
4.10.1 最も単純な背景差分
4.10.2 単純な背景差分法の弱点
4.10.3 背景のゆらぎをモデル化する
4.10.4 背景のリアルタイム更新
4.11 カメラキャリブレーション
4.11.1 カメラキャリブレーションで扱うパラメータ
4.11.2 カメラパラメータの導出手順
4.11.3 デジタル画像処理におけるキャリブレーションの手順
4.11.4 Zhang によるキャリブレーション手法
4.11.5 OpenCV を用いた歪み補正

Appendix
A 表色系
A.1 RGB 表色系
A.2 HSV 表色系/HLS 表色系
A.3 CIE L*a*b* 表色系
A.4 その他の表色系
A.5 グレースケール
B OpenCV リファレンスマニュアル
B.1 CXCORE リファレンスマニュアル
B.2 CV リファレンスマニュアル
B.3 機械学習リファレンスマニュアル
B.4 HighGUI リファレンスマニュアル
C OpenCV のライセンスについて


Ver1.1に対応した第2版も7月29日に発売↓



【第2版 目次】
Chapter 1 入門編
1.1 画像処理とOpenCV
 1.1.1 コンピュータは、どのように画像を扱っているのだろう
 1.1.2 コンピュータビジョン ~コンピュータが目を持った~
 1.1.3 コンピュータビジョンの広がり
 1.1.4 自分でコンピュータビジョンプログラミングってできるの?
 1.1.5 OpenCVとは
 1.1.6 OpenCVの実利用
1.2 OpenCVの読み方・本書の読み方について
 1.2.1 OpenCVにおけるいくつかのルール
 1.2.2 本書の読み方

Chapter 2 導入編
2.1 インストールと最初のプログラム
 2.1.1 OpenCVの入手
 2.1.2 OpenCVのインストール
 2.1.3 Visual C++ 2008の設定
 2.1.4 最初のプログラム
2.2 チュートリアル
 2.2.1 カメラからの入力画像をそのまま表示する
 2.2.2 背景との差分を計算する
 2.2.3 肌色領域の抽出
 2.2.4 顔領域の追跡
 2.2.5 静止画の保存
2.3 OpenCVをLinuxで利用する
2.4 OpenCVをMac で利用する

Chapter 3 基礎編
3.1 画素値の操作
 3.1.1 セピア変換のアルゴリズム
 3.1.2 OpenCVによるセピア変換
 3.1.3 画素単位での画素値の読み書き
 3.1.4 画素値の直接操作
3.2 画像間の演算
 3.2.1 画像間の演算
 3.2.2 OpenCVによるクロマキー処理の実現
3.3 幾何学変換
 3.3.1 画像補間
 3.3.2 画像の拡大縮小
 3.3.3 画像の回転
 3.3.4 画像の平行移動
 3.3.5 アフィン変換による複雑な変形
 3.3.6 透視変換
3.4 行列演算
 3.4.1 連立方程式を解く
 3.4.2 OpenCVによる連立方程式の解

Chapter 4 ケーススタディ編
4.1 2 値化
 4.1.1 2 値化の概要
 4.1.2 OpenCVを用いた2 値化
4.2 ヒストグラム
 4.2.1 デジタル画像処理分野におけるヒストグラム
 4.2.2 コントラストとは
 4.2.3 濃度階調変換
 4.2.4 OpenCVを用いた濃度階調変換
4.3 輪郭抽出
 4.3.1 輪郭抽出はどのように行われるか
 4.3.2 OpenCVを用いた輪郭抽出
4.4 エッジ抽出
 4.4.1 エッジの抽出方法
 4.4.2 オペレータの種類
 4.4.3 OpenCVによるエッジ抽出
4.5 ハフ変換
 4.5.1 ハフ変換の基本的な考え方
 4.5.2 パラメータ空間の工夫
 4.5.3 ハフ変換の特徴
 4.5.4 ハフ変換による直線抽出
4.6 対応領域探索
 4.6.1 テンプレートマッチング法とは
 4.6.2 OpenCVによるテンプレートマッチング法を用いた数字探索
4.7 膨張と収縮
 4.7.1 各処理の概要
 4.7.2 膨張と収縮を用いたノイズ除去
4.8 形状特徴抽出
 4.8.1 全体の流れ
 4.8.2 OpenCVによる形状特徴抽出
4.9 物体追跡
 4.9.1 画像上での物体の動きとは
 4.9.2 色情報を用いた追跡
 4.9.3 追跡対象物体の輪郭を動的に取得
4.10 動的な背景差分法
 4.10.1 最も単純な背景差分
 4.10.2 単純な背景差分法の弱点
 4.10.3 背景のゆらぎをモデル化する
 4.10.4 背景のリアルタイム更新
4.11 カメラキャリブレーション
 4.11.1 カメラキャリブレーションで扱うパラメータ
 4.11.2 カメラパラメータの導出手順
 4.11.3 デジタル画像処理におけるキャリブレーションの手順
 4.11.4 OpenCVを用いた歪み補正
4.12 学習による顔検出
 4.12.1 コンピュータを使った学習とは
 4.12.2 Haar-like 特徴を使ったブースティングとカスケード分類器
 4.12.3 用意された分類器を使った顔の検出
 4.12.4 新しい分類器の学習と物体検出

Appendix リファレンス編
Appendix A 表色系
 A.1 RGB 表色系
 A.2 HSV表色系/HLS表色系
 A.3 CIE L*a*b*表色系
 A.4 その他の表色系
 A.5 グレースケール
Appendix B OpenCVリファレンスマニュアル
 B.1 CXCOREリファレンスマニュアル
 B.2 CVリファレンスマニュアル
 B.3 機械学習リファレンスマニュアル
 B.4 HighGUI リファレンスマニュアル
Appendix C 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購入

【Excel Tips】行列の積、逆行列、転置行列の計算


エクセルで行列の計算をするときの最大のポイントは、計算式を入力後
  
CtrlキーShiftキーEnterキーを同時に押すことです。

エクセルのヘルプを見ても、この事はどこに書いてあるのか?分からないので、ちょっとハマりやすいかもしれません。

 行列の積[MMULT(行列1,行列2)]

まず、行列の積の計算を行う行列を入力しておきます。
次に行列の積の計算結果を表示するセルを選択します。

行列の積

セルを選択した状態で、行列の積の計算式

  = MMULT(行列1, 行列2)

を入力します。

行列の積

ここで、Enterではなく、CtrlキーとShiftキーとEnterキーを同時に押します。

行列の積

 逆行列[MINVERSE(行列)]

逆行列に関しても同様に

  =MINVERSE(行列)

と入力します。


逆行列

ここで、Enterではなく、CtrlキーとShiftキーとEnterキーを同時に押します。

逆行列

 転置行列[TRANSPOSE(行列)]

転置行列の計算式は

  =TRANSPOSE(行列)

となります。

転置行列の計算

クドいですが、Enterではなく、CtrlキーとShiftキーとEnterキーを同時に押します。

転置行列

 



この行列の積、逆行列、転置行列がエクセルで解けると何が良いか?というと、

  ●連立方程式
  ●座標の回転
  ●最小二乗法
  ●擬似逆行列(一般逆行列)


などが解けるようになります。
これらを知らないと、いちいちプログラムを組んで計算の検証をしたりもしますが、
エクセルで出来るようになると、とっても簡単、お手軽です。

 

 


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



現在の閲覧者数: / 合計