射影変換のやり方を知りたい

35 visualizzazioni (ultimi 30 giorni)
kuroshiba
kuroshiba il 16 Nov 2022
Modificato: kuroshiba il 25 Nov 2022
前回、https://jp.mathworks.com/matlabcentral/answers/1842433-?s_tid=srchtitle
にて射影変換をご教授いただいたのですが、座標を入れてもうまくいきません。
というのも、画像を抜き出して正面にするのではなく、元画像を加工するような形になってしまったからです。
にある、「出発」部分のみを切り出し、正面にするプログラムを組みたいのですが、ご教授いただけないでしょうか。

Risposta accettata

Hernia Baby
Hernia Baby il 16 Nov 2022
手前味噌ですが、自分の回答を参考にお答えします
---
まずは画像を読み込みます
I = imread('test.png');
imshow(I)
次に抽出したい座標をとりましょう
座標はgetptsで適当にとりました
% [xi,yi] = getpts
x = [48, 422, 39, 429]';
y = [160, 66, 246, 176]';
originalPoints = [x,y];
そして写像変換したい座標を決めます
いただいたリンクを参考にしました
ow = floor(norm(originalPoints(2,:) - originalPoints(1,:)));
oh = floor(norm(originalPoints(3,:) - originalPoints(1,:)));
fixedPoints = [0, 0; ow, 0; 0, oh; ow, oh];
ここがミソですが fitgeotransimref2d をつかって変換&切り抜きを行います
tform = fitgeotrans(originalPoints, fixedPoints, 'projective');
RA = imref2d([size(I,1) size(I,2)], [1 ow], [1 oh]);
[out,r]= imwarp(I, tform,'OutputView', RA);
見てみましょう
imshow(out,r)
axis off
  1 Commento
kuroshiba
kuroshiba il 17 Nov 2022
Modificato: kuroshiba il 25 Nov 2022
考えてもわからず、困っておりました。
本当にありがとうございます!

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!