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

プロフィール

Akira

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

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

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

04 | 2017/05 | 06
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購入

逆行列(Gauss-Jordan法)

 2×2行列の逆行列
行列行列の逆行列は
 逆行列
となる。
ただし、ad-bc=0のとき、逆行列は存在しない。


 3×3以上の行列の逆行列
Gauss-Jordan法による解き方の例を以下に示します。
基本的には行列の右側に単位行列を付け足して、行ごとに掛け算、足し算、引き算をして
左側が単位行列になるようにして、最後に右側に残った行列が逆行列となります。
といっても分かりづらいので、具体的な計算例は以下のとおりです。

行列
行列
の右側に単位行列を追加します。
逆行列
1行1列目の要素が1となるように1行目を2で割ります。
逆行列
1列目の要素が(1 0 0)となるように[2行目]-[1行目]
[3行目]-[1行目]×4を計算します。
逆行列
2行2列目の要素が1となるように2行目を2倍します。
逆行列
2列目の要素が(0 1 0)となるように[1行目]-[2行目]×3/2[3行目]+[2行目]を計算します。
逆行列
3行3列目の要素はすでに1なので、3列目の要素が(0 0 1)となるように
[1行目]+[3行目]×2[2行目]-[3行目]×2を計算します。
逆行列
これで、左側が単位行列となり、右側にできた行列が求める逆行列となります。

 逆行列のサンプルプログラム
上記のアルゴリズムをそのままプログラムにすると

///////////////////////////////////////////////////////////////////////////
//
// Gauss-Jordan法による逆行列
//
int MatInverse(
    double *Mat,    //逆行列を求める行列
    double *Inv,      //求めた逆行列
    int n                //逆行列の大きさ n行×n列行列
    ){
    int i, j, k;
    double temp;

    //単位行列で初期化
    for (j = 0; j < n; j++){
        for (i = 0; i < n; i++){
            if (i == j){
                Inv[i + j * n] = 1;
            }else{
                Inv[i + j * n] = 0;
            }
        }
    }

    for (k = 0; k < n; k++){
        //k行k列目の要素を1にする
        temp = Mat[k + k * n];
        if (temp == 0) return -1;    //エラー
        for (i = 0; i < n; i++){
            Mat[i + k * n] /= temp;
            Inv[i + k * n] /= temp;
        }

        for (j = 0; j < n; j++){
            if (j != k){
                temp = Mat[k + j * n] / Mat[k + k * n];
                for (i = 0; i < n; i++){
                    Mat[i + j * n] -= Mat[i + k * n] * temp;
                    Inv[i + j * n] -= Inv[i + k * n] * temp;
                }           
            }
        }
    }
    //正常終了
    return 0;
}

上記の例のように呼び出す側は
    double Mat[9];
    double Inv[9];

    Mat[0] = 2; Mat[1] = 3; Mat[2] = 2;
    Mat[3] = 1; Mat[4] = 2; Mat[5] = 2;
    Mat[6] = 4; Mat[7] = 5; Mat[8] = 3;

    //逆行列を求める
    MatInverse(Mat, Inv, 3);

という感じで。
ただし、Matには関数処理後、単位行列が書き込まれます。


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

この記事に対するコメント

こちらこそ!お久しぶりです。
よく見させていただいてます。また、私のほうも見て頂きありがとうございます。
キャリブレーションについては内部、外部パラメータを使うことぐらいであまり
知らないのです。ライブラリーの手順をやってみただけなのす。
また、キャプチャーをやってみたので、出来るかどうかわからないけど
調べてやってみようと思っています。
一番の壁は数学的な理解なんですけど、その辺であちこちサーフィンしながら
調べています。
なので、ここのblogも重要なリソースです。
【2008/12/09 06:01】 URL | lopes #- [ 編集]

ご無沙汰しています。
lopesさん。お久しぶりです。
まだ、私のブログも見て下さっていたようですね。
lopesさんのブログも拝見させて頂きました。
何やら、やっていることや趣味などが私と同じニオイがします。
ちなみに私も昔カメラキャリブレーションについては調べたことがあります。
有名なアルゴリズムにZhangやTsaiのアルゴリズムっていうのがありますよね?
Tsaiのアルゴリズムについてはサンプルプログラムがあったので、参考にしてみましたが、
当時は行列を解く部分が理解できなかったのを覚えています。
今なら分かるのかな~???
【2008/12/08 20:16】 URL | Akira #- [ 編集]


時間かかったけど、実際に計算してみました。参考になりました。

【2008/12/08 15:40】 URL | lopes #- [ 編集]


この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/104-caf7cc5c
この記事にトラックバックする(FC2ブログユーザー)

現在の閲覧者数: / 合計