定义:一个非奇异线性变换接一个平移变换
矩阵形式:
一个平面上的放射变换有6个自由度
缩放:
旋转:
剪切:
平移:
可用tform = affine2d(T
)来生成仿射变换的矩阵
关于此函数的详细解释:https://ww2.mathworks.cn/help/images/ref/affine2d.html
可用imwarp(A,tfrom)来进行仿射变换,
此函数的具体解释:https://ww2.mathworks.cn/help/images/ref/imwarp.html
例如
clear all;
clc;
I = imread('cameraman.tif');
tform = affine2d([1 0 0; .5 1 0; 0 0 1]);
J = imwarp(I,tform);
figure, imshow(I), figure, imshow(J)
%旋转变换:
I = imread('cameraman.tif');
tform = affine2d([0 1 0; -1 0 0; 0 0 1]);
J = imwarp(I,tform);
imshow(J)
%剪切变换
I = imread('cameraman.tif');
tform = affine2d([1 0 0;.5 1 0; 0 0 1]);
J = imwarp(I,tform);
imshow(J)
%平移变换
I = imread('cameraman.tif');
tform = affine2d([1 0 0;0 1 0;2 2 1]);
J = imwarp(I,tform);
imshow(J)
了解其变换原理也可以自己实现变换函数,如:
function pt=zoom(p1)
%0.5倍缩放图像
[x,y]=size(p1);
pt=ones(x,y);
A=[0.5 0 0;0 0.5 0;0 0 1];
for i = 1:x
for j = 1:y
b=A*([i,j,double(p1(i,j))]');
k=uint8(b(1));
l=uint8(b(2));
pt(k,l)=b(3);
end
end
pt=uint8(pt);