use*_*831 2 matlab image-processing octave
我想要 :
步骤1)使用此代码旋转20度的图像rotatedImage = imrotate(originalImage, 20);.
步骤2)如果可能或基于旋转图像和原始图像,仅基于旋转图像计算步骤1中使用的度旋转.
matlab中有任何函数可以执行第2步或者这样做的命题吗?
此示例显示了执行步骤2的一种方法:
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
Run Code Online (Sandbox Code Playgroud)
imr功能在哪里
function obj= imr(x,img1,img2);
img1_r = imrotate(img1,x,'nearest','crop');
obj = sum((img2(:)-img1_r(:)).^2);
Run Code Online (Sandbox Code Playgroud)
函数包装imrotate,生成最小化的目标函数,以便可以使用它fminsearch.
这显示原始,扭曲和反转的图像(角度如上所示):

注意限制:旋转图像被裁剪,以便在计算目标函数期间进行逐点比较.这可能不是绝对最好的方法,因为我想有一些形态算法旨在以更一般的方式回答您的具体问题.它仍然奏效.
| 归档时间: |
|
| 查看次数: |
1486 次 |
| 最近记录: |