数字图像处理第五章 您所在的位置:网站首页 图像的空间变换 数字图像处理第五章

数字图像处理第五章

2024-06-29 14:45| 来源: 网络整理| 查看: 265

数字图像处理第五章 数字图像处理---几何变换与图像配准 (一)点变换 (二)仿射变换 (三)投影变换 (四)应用于图像的几何变换 (五)MATLAB 中的图像坐标系统 5.1 输出图像位置 5.2 控制输出网格 (六)图像内插 6.1 二维内插 6.2 内插方法的比较 (七) 图像配准 7.1 配准处理 7.2 使用 cpselect 的手工特征选择和匹配 7.3 使用 cp2tform 推断变换参数 7.4 基于区域的配准

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

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

(一)点变换

假设(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,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。

编写代码:

img1=imread('D:\数字图像处理\第五章学习\dog2.jpg'); se=translate(strel(1),[100 100]); img2=imresize(img1,0.2,'nearest'); img3=imresize(img1,1.5,'nearest'); figure(1); imshow(img1),title('(a)原图像'); figure(2); imshow(img2),title('(b)缩小图'); figure(3); imshow(img3),title('(c)放大图'); <


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有