質問: 正方形から台形への射影変換 正方形から台形への射影変換をしたいと考えています。 projective2d を使えばできると分かったのですが行列にどのような値を入れればいいのかがあるのかが分かりません。 もしわかる人がおりましたら教えていただきたいです。
回答: 回転というよりは四隅の投影をおこないました。 以下を参照しています。 参照:how to warp an image into a trapezoidal shape in matlab初期化 clc,clear,close; 画像の読み込み 使用している画像は愛犬チャチャです。 img = imread('chacha_sq.jpeg' ); imshow(img) 投影前と投影後の4隅の設定 各点の(x,y)座標を設定します。 movingpoints :投影前の [左上, 右上, 左下, 右下] fixedpoints :投影後の [左上, 右上, 左下, 右下] movingpoints = [1 1; size(img,2) 1; 1 size(img,1); size(img,2) size(img,1)]; fixedpoints = [500 700; 1500-500 700; 35 1500-500; 1500 1500-500]; 画像の変換 投影を行います。具体的には四隅をフィットさせるイメージです。 詳しくは fitgeotrans と imref2d を参照してください。 tform = fitgeotrans(movingpoints, fixedpoints, 'projective'); ra = imref2d([size(img,1) size(img,2)], [1 size(img,2)], [1 size(img,1)]); [out,r] = imwarp(img, tform, 'outputview', ra); 画像の表示 imshow(out, r); axis off;