このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
イメージの回転とスケーリングの検出
この例では,回転およびスケールの変更によって違いの生じた2つのイメージの位置合わせとレジストレーションを行う方法を示します。対応するポ电子邮箱ントを手動で選んでから,fitgeotrans
を使用して回転角と倍率を検出します。。
手順1:@ @メ,@ @ジの読み取り
。
原文= imread(“cameraman.tif”);imshow(原始)文本(大小(原始的,2),大小(原始的,1)+ 15,...图片由麻省理工学院提供,...“字形大小”7“HorizontalAlignment”,“对”)
手順2:econeconメeconeconeconズ変更と回転
量表= 0.7;扭曲= imresize(原始,缩放);试着改变比例因子。Theta = 30;扭曲= imrotate(扭曲,theta);试着改变角度。imshow(扭曲)
手順3:コントロルポントの選択
コントロールポイント選択ツールを使用して,少なくとも2組のコントロールポイントを選択します。
movingPoints = [151.52 164.79;131.40 - 79.04);fixedPoints = [135.26 200.15;170.30 - 79.30);
事前に選択されたポイントを使用してこの例の残りを実行できますが,自分でポイントを選択して結果が異なることを確認してください。
cpselect(扭曲,原来,movingPoints定点);
[ファescル]メニュ[ポントをワクスペスへ保存]オプションを選択して,コントロルポントを保存します。ポ@ @ントを保存して変数movingPoints
と定点
を上書きします。
手順4:変換の推定
無反射相似変換をコントロルポントに近似します。
tform = fitgeotrans(movingPoints,fixedPoints,“nonreflectivesimilarity”);
手順5および手順6の実行後,‘NonreflectiveSimilarityの代わりに的仿射を使用して,手順4から手順6までを繰り返してくださ。何いが起こりますか吗?結果は“NonreflectiveSimilarity”を使用した場合と同じですか?
手順5:スケ,ルと角度の解
幾何学的変換tform
はtform。T
に変換行列を含んでいます。変換には回転およびスケールのみが含まれているのがわかっているため,スケールと角度を復元する計算は比較的簡単です。
次のように仮定します。
次のように仮定します。
さらに,Tinv =逆变换(tform)
およびTinv。T =
とします。
ここで,tx
と泰
はそれぞれxとyの平行移動です。
tformInv =反转(tform);Tinv = tformInv.T;ss = Tinv(2,1);sc = Tinv(1,1);Scale_recovered =√(ss*ss + sc*sc)
Scale_recovered = 0.7000
Theta_recovered = atan2(ss,sc)*180/pi
Theta_recovered = 29.3741
復元された値scale_recovered
とtheta_recovered
は“手順2:econeconメ.ジのサeconeconズ変更と回転”で設定した値と一致しなければなりません。
手順6:元の@ # @メ@ # @ジの復元
幾何学的変換tform
および原始
の空間参照に関する知識を使って、回転およびスケ、リングされた、メ、ジ扭曲的
を変換して,元の。“OutputView”の名前と値のペアは、リサンプリングされた出力イメージの解像度とグリッド サイズの指定に使用されます。
Roriginal = imref2d(size(original));恢复= imwarp(扭曲的,tform,“OutputView”, Roriginal);
モンタ,ジュで恢复
と原始
を並べて比較します。
蒙太奇({原始,恢复})
歪みと復元処理のため,恢复
(右)の画質は原始
(左)の画質と一致していません。特に,。エッジ近辺にア,ティファクトがあるのは,変換の精度に制限があるためです。“手順3:コントロルポントの選択”でより多くのポesc escントを選択すると,変換の精度は高くなります。
参考
imresize
|imrotate
|cpselect
|fitgeotrans
|imwarp
|imref2d