数字图像处理第五章——几何变换与图像配准

数字图像处理—几何变换与图像配准

几何变换改变了图像中像素间的空间关系。可以使图像放大和缩小,可以旋转、移动或用各种方法进行其他扩展。几何变换可用于创建小场景,使之适应从某个重放分辨率到另一个分辨率的数字视频,校正由观察几何变化导致的失真,以及排列有相同场景和目标的多幅图像。

(一)点变换

假设(w,z)和(x,y)是两个空间坐标系统,分别称为输入空间和输出空间。几何坐标变换可定义为输入空间点到输出空间点的映射:
在这里插入图片描述
这里, T{.}叫做正向变换或正向映射。如果 T{.}有逆,可逆映射输出空间点到输入空间点:
在这里插入图片描述
图像的几何变换被定义为按照几何坐标的变换。令f(w,z)表示输入空间的一幅图像,我们可以定义输出空间的变换图像g(x,y)。

图像处理工具箱采用tform 结构来描述几何坐标变换,tform 结构由函数 maketform 创建,语法是:

tform = maketform(transform—type, params, ...)

参量 transform_type 是下列字符串之一:’affine’、’projective’、’custom’、 ‘box’或’composite’。主要讨论‘custom’变换类型,这种变换可以用来创建基于用户定义的几何坐标变换的 tform 结构。'custom’类型的全部语法是:

tform = maketform('custom', ndims_in, ndims_out,... forward_fen, inv_function, tdata)

对于二维几何变换是 ndims_in 和 ndims_out,参数 forward_fen 和 inv_fen 是关于正向和反向空间坐标变换的函数句柄 。参数 tdata 包含 forward_fcn 和所需要的任何额外信息。

接下来实际操作,创建两个描述不同空间坐标变换的 tform 结构。第一个变换用因数3水平地放大,用因数2垂直地放大:
在这里插入图片描述在这里插入图片描述
首先,创建正向函数,语法:

xy = fwd_function (wz,tdata) 

wz是包含两列的矩阵,在 wz 平面中每一行包含一个点;xy是另一个包含两列的矩阵,其中的行是包含在 xy 平面中的点。

 forward_fcn=@(wz,tdata) [3*wz(:,1),2*wz(:,2)]

在这里插入图片描述
接下来,创建具有语法wz = inverse_fen(xy,tdata)的反函数:

inverse_fcn=@(xy,tdata) [xy(:,1)/3,xy(:,2)/2]

在这里插入图片描述
现在,可以构建第一个 tform 结构:

tform1=maketform('custom',2,2,forward_fcn,inverse_fcn,[])

在这里插入图片描述
计算某个点对的正向变换,接下来的反向变换核实了我们得到的原始数据:

WZ=[1 1;3 2];
XY=tformfwd(WZ,tform1)

在这里插入图片描述

WZ2=tforminv(XY,tform1)

在这里插入图片描述

第 2 个变换示例:以垂直坐标因子移动水平坐标,并保持垂直坐标不变。
在这里插入图片描述
在这里插入图片描述
编写代码:

forward_fcn=@(wz,tdata) [wz(:,1)+0.4*wz(:,2),wz(:,2)];
inverse_fcn=@(xy,tdata) [xy(:,1)-0.4*xy(:,2),xy(:,2)];
tform2=maketform('custom',2,2,forward_fcn,inverse_fcn,[]);
XY = tformfwd{WZ, tform2)

在这里插入图片描述

WZ2=tforminv(XY,tform2)

在这里插入图片描述
对应垂直坐标的 xy的第二列在变换中没有变。

为了能对特殊的空间变换的效果有一个较好的感觉,目测变换对在网格上安排一组点的影响是有帮助的。下面的两个自定义 M-函数 pointgrid 和 vistform 可帮助目测检验给定的变换。

vistform(tforml, pointgrid([0 0;100 100])) 
figure, vistform(tform2, pointgrid([0 0;100 100]))

运行效果如下:

如图所示,第一个变换以不同的缩放因子延伸了水平和垂直轴;第二个变换以随垂直坐标变化的数量水平移动点。

(二)仿射变换

对于 2D空间,仿射变换可写成下式:
在这里插入图片描述
为了数学和计算方便,仿射变换可用附加第三坐标的方法写成矩阵相乘形式:
在这里插入图片描述
这个公式还可以写成下式:
在这里插入图片描述
其中,T称为仿射矩阵。在[x y]和[w z]向量上加 1 的符号约定将产生齐次坐标。对应tforml 的仿射矩阵是:
在这里插入图片描述
对应tforml 的仿射矩阵是:
在这里插入图片描述
函数 maketform 语法 tform = maketform(‘affine’, T) 从仿射矩阵直接创建 tform 结构。
编写代码:

T = [1 0 0;0.4 1 0; 0 0 1];
tform3 = maketform('affine', T);
WZ = [1 1; 3 2];
XY = tformfwd(WZ, tform3);

在这里插入图片描述
在这里插入图片描述
重要的仿射变换包括缩放、旋转、平移、裁剪和反射。下面分别介绍这几类:

图像缩放

图像比例缩放是指将给定的图像在x轴方向按比例缩放xf倍,在y轴按比例缩放yf倍,从而获得一幅新的图像。如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx不等于fy,图像的比例缩放会改变原始图象的像素间的相对位置,

  • 14
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值