私はしたいと思います :
ステップ 1) このコードを使用して、画像を 20 度回転します
rotatedImage = imrotate(originalImage, 20);
。ステップ 2) ステップ 1 で使用した回転角度を、可能であれば回転した画像のみに基づいて計算するか、または回転した画像と元の画像に基づいて計算します。
ステップ2またはそれを行うための命題を実行できるmatlabの関数はありますか?
私はしたいと思います :
ステップ 1) このコードを使用して、画像を 20 度回転しますrotatedImage = imrotate(originalImage, 20);
。
ステップ 2) ステップ 1 で使用した回転角度を、可能であれば回転した画像のみに基づいて計算するか、または回転した画像と元の画像に基づいて計算します。
ステップ2またはそれを行うための命題を実行できるmatlabの関数はありますか?
この例は、ステップ 2 を実行する 1 つの方法を示しています。
A = 'peppers.jpg';
img = im2double(imread(A));
img_r=imrotate(img,20,'nearest','crop'); % <-- this is the distorted image
% rotated 20 deg
xopt = fminsearch(@(x) imr(x,img_r,img), 10); % <-- start with 10 deg as guess
imr
関数はどこにありますか
function obj= imr(x,img1,img2);
img1_r = imrotate(img1,x,'nearest','crop');
obj = sum((img2(:)-img1_r(:)).^2);
関数は ラップimrotate
し、 で使用できるように最小化する目的関数を生成しfminsearch
ます。
これは、元の画像、歪んだ画像、および反転した画像を示しています (角度は上記のように決定されています)。
制限に注意してください。目的関数の計算中にポイントごとの比較が可能になるように、回転した画像は切り取られます。より一般的な方法で特定の質問に答えるように設計された形態学的アルゴリズムがあると思うので、これはおそらくこれを行うための絶対に最良の方法ではありません。それでもうまくいきました。