齐次座标与平移仿射变换(MATLAB)

平移与仿射

众所周知,二维图像的平移是非线性的,仿射变换实现了线性效果。

平移:是将图像的每个像素点在水平和垂直方向上进行移动,只是改变了图像的位置信息,而图像的内容并不会发生改变。二维的图像计算公式如下:很显然不是线性的
在这里插入图片描述
在二维矩阵图像的基础上,加一个座标轴。在齐次座标系下进行图像的几何变换,我们把他称之为仿射变换。一个三维的齐次座标轴下的仿射变换,就是线性运算。运算过程如下:
在这里插入图片描述
在matlab环境下实现仿射变换

%放射变换实现图像平移
F = imread('cameraman.tif');
fheight = size(F,1);
fwidth  = size(F,2);
m = 30;%水平方向的平移量
n=20;%垂直方向的平移量
tform = maketform('affine',[1 0 0 ;0 1 0; m n 1]);
G = imtransform(F,tform,'XData',[1 fwidth+30],'YData',[1 (fheight+20)]);
subplot(121);
imshow(F);
title('原图');
subplot(122);
imshow(G);
title('平移后的图像');

知识补充

(1)齐次座标
齐次座标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”其重要性主要有,其一是区分向量和点,其二是易于进行仿射变换(AffineTransformation)

因为仿射空间的存在,我们认为图形变换就是变换了以图形为原点的仿射座标,那么我们使用齐次座标表示法,同时变换矩阵也扩充一个维度称它为”平移维度“,这时候我们可以利用数学技巧“忽略掉”除了“平移维度”之外的维度,只进行“平移维度”的计算, 根据矩阵乘法的计算规则,就很自然的处理了两个仿射空间的平移。

(2)仿射变换

在这里插入图片描述
在这里插入图片描述
(3)maketform()函数和imtransform()函数

maketform():仿射变换’affine’包括了

  • 平移translation
  • 缩放scaling
  • 旋转rotation-
  • 剪切shearing
  • 投影变换projective transformations
  • 自定义的变换custom transformations

imtransform():返回值中包含的另两个额外输出参数xdataydata,表示输出图像在输出座标空间的位置。xdata包含了输出图像拐角处像素的x座标,ydata包含了这些像素的y座标(这里说的x、y座标是指像素的中点)。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章