画像の形を変換する?
射影変換をやってみることに。。。


まずは、どんなものか感じをつかむために、こちらのサイトの画像をC#で書き直してみました。
OpenCV@Chihara-Lab. 射影変換

計算を自前でやろうとしたのですが、逆行列の計算が中々うまくいかず結局、OpenCvをC#で使用するOpenCvSharpというラッパーを使用しました(;´Д`)
OpenCVをC#やVB.NETなどの.NET Frameworkの言語から利用するためのクロスプラットフォームで動作するラッパーです。とのこと


ソースコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenCvSharp;
using OpenCvSharp.CPlusPlus; 

namespace HomographyOpenCV
{
    class Program
    {
        static void Main(string[] args)
        {
            // 元画像の頂点の座標
            double[] a = new double[]{
                                93, 90,
                                20, 422,
                                501, 468,
                                408, 43
            };

            // 変換先の頂点の座標
            double[] b = new double[]{
                                0, 0,
                                0, 511,
                                511, 511,
                                511, 0
            };
            CvMat Mata = new CvMat(4, 2, MatrixType.F64C1, a);
            CvMat Matb = new CvMat(4, 2, MatrixType.F64C1, b);

            IplImage src = Cv.LoadImage("1.jpg", LoadMode.Color);
            IplImage dst = src.Clone();

            //homography
            CvMat h = new CvMat(3, 3, MatrixType.F64C1);

            Cv.FindHomography(Mata, Matb, h);

            for(int i=0 ; i<3 ;i++)
            {
                for(int j=0; j<3; j++)
                {
                    System.Diagnostics.Debug.WriteLine("h[{0},{1}] = {2}", i,j,h[i,j]);
                }
            }

            Cv.WarpPerspective(src, dst, h);

            using (new CvWindow("src", src))
            using (new CvWindow("dst", dst))
            {
                Cv.WaitKey();
            }

            src.Dispose();
            dst.Dispose();
        }
    }
}


結果

プログラムの結果はこんな感じになりました。
元画像
src.png

変換画像
dst.png

きちんと変換できてるようです。

※ 追記
上記のプログラムは変換する前の座標を決め打ちで行っていましたが、
マウスから取得するプログラムを記載いたしました。
こちらもよろしくお願いいたします。m(_ _)m

詠み人知らずの備忘録 - マウスでクリックした座標を用いて射影変換

Related Entries
Comments
Post a comment
Contributor
Comment
Trackbacks URL
URL
Permalink
Trackbacks
FC2カウンター
プロフィール

詠み人知らず

Author:詠み人知らず
プログラム好きな名もなき凡人がお送りしています。(得意とは言っていない
最近の興味はPython、C#、Matlab(Octave)、画像処理、AR(拡張現実)、統計などなど・・・

気分で思いついたことを書くため話題に一貫性がないかもしれません。

カレンダー
03 | 2017/04 | 05
- - - - - - 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 - - - - - -
最新記事
タグクラウドとサーチ

カテゴリ
最新コメント
最新トラックバック
月別アーカイブ