MATLAB图像处理:几何变换详解
MATLAB图像处理:几何变换详解
MATLAB图像处理中的几何变换是图像处理领域的重要内容,涉及图像剪裁、旋转、平移、金字塔缩减和扩展等基本操作,以及几何坐标变换的描述、空间参照对象的创建、输出范围查找等进阶内容。本文将详细介绍这些内容及其在MATLAB中的实现方法。
一、常见几何变换
1. 图像剪裁
J = imcrop(I,rect);
根据rect
裁剪图像I
,根据[xmin ymin width height]
空间坐标指定裁剪矩形的大小和位置。裁剪后的图像包含输入图像中所有由矩形完全或部分包围的像素。
2. 图像旋转
B = imrotate(A,angle,method);
使用指定的插值方法method
旋转图像A
。
3. 图像平移
B = imtranslate(A,translation);
按照translation
中指定的平移向量平移图像A
。
4. 图像金字塔缩减和扩展
B = impyramid(A,direction);
计算高斯金字塔减少或扩大一个级别。direction
确定impyramid
执行缩小还是扩展。
二、几何坐标变换的描述
tform=maketform(transform_type,params,...);
三、将几何变换应用于图像
B = imwarp(A,tform)
插值方式默认为线性内插。
四、将二维图像引至世界坐标(创建空间参照对象)
R = imref2d(imageSize)
要为图像指定世界(非默认空间)坐标系,可以使用空间参照。imref2d
可以让您在世界坐标系中定义2维图像的位置。您还可以使用这些对象来指定图像分辨率,包括非方形像素形状。(另一种定义世界坐标系的方法是使用图像对象XData和 YData属性 - 参见使用XData和YData属性定义世界坐标。)一个imref2d
对象封装了锚定到二维图像的行和列的固有坐标与世界坐标系中相同行和列位置的空间位置之间的关系。
五、查找空间转换的输出范围
outbounds = findbounds(tform,inbounds);
估计对应于给定空间变换和一组输入边界的输出边界。tform
是一个空间转换结构。inbounds
是一个2 num_dims×
矩阵,用于指定输出图像的下限和上限。outbounds
是完全包含由输入边界表示的变换矩形的最小矩形区域的估计值。既然outbounds
只是一个估计,它可能不会完全包含已变换的输入矩形。
六、根据输入空间限制查找输出空间限制
[xLimitsOut,yLimitsOut] = outputLimits(tform,xLimitsIn,yLimitsIn);
估计对应于一组输入空间限制的输出空间限制。
七、图像坐标系统
MATLAB图像的坐标原点位于左上角,如图:
这幅图像的大小为710*1024
左上角放大:
在这里可以看到,像素都是方形的,而左上角的像素中心坐标为(1,1)。且所有像素中心都是整数值。
以下语句可改变默认空间坐标:
imshow(I,'XData',[-20,20],'YData',[-10,10]);
其中XData
是二元素向量,第一个元素指定像素的第一列中心x的坐标,第二个元素指定像素最后一列中心x的坐标。YData
与其类似,但指定的是y的坐标。
效果图:
左上角放大:
可以看到,此时的像素不再是正方形,并且现在左上角坐标为(-10,-20)。像素的中心不再都是整数值。
八、输出图像位置
[g,xdata,ydata] = imtransform(f,tform);
经几何变换后得图像并未显示在输出空间的位置,使用此函数可以获取这个信息,即xdata
,ydata
。使用imshow
显示图像时,第二第三个返回参数可以像XData
,YData
参数那样使用。如:
imshow(g,'XData',xdata,'YData',ydata);
通俗来说就是,若对图像进行了几何变换,输出的图像会默认包含变换后的图像,而使用这两个返回的参数则能够在原本输出空间显示图像。
九、控制输出网格
要达到同一效果,可以在输出空间用imtransform
控制输出网格。即定制其XData
与YData
这两个输入参数。
十、图像内插
- 最近邻
- 双线性
- 双三次
十一、图像融合
- 直接平均融合法
- 加权平均法
- 中值滤波法
- 多分辨率处理法