几何变换算法
图形处理一个方面
几何变换,又称空间变换,是图形处理的一个方面,是各种图形处理算法的基础。它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。几何变换算法一般包括空间变换运算和插值算法。
简介
几何变换不改变图像的像素值, 只是在图像平面上进行像素的重新安排。适当的几何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身原因所造成的几何失真所产生的负面影响。几何变换常常作为图像处理应用的预处理步骤, 是图像归一化的核心工作之一。
一个几何变换需要两部分运算:首先是空间变换所需的运算, 如平移、缩放、旋转和正平行投影等, 需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法, 因为按照这种变换关系进行计算, 输出图像的像素可能被映射到输入图像的非整数坐标上。
几何变换的定义
设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为:
x1=s(x0,y0) (1)
y1=t(x0,y0) (2)
其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标变换函数。
几何变换算法
根据空间变换的映射关系,确定变换后目标图像的大小(行、列范围);//有些变换可能改变图像大小
计算逆变换(j1,i1)和(j1,i1);
逐行扫描目标图像g(x1,y1),对于g(x1,y1)中的每一点(j0,i0);
{
根据空间变换的映射关系,计算得:
j0'= (j1,i1);//直接通过映射关系计算得到的横坐标,可能不是整数
i0'= (j1,i1);//直接通过映射关系计算得到的纵坐标,可能不是整数
根据选用的插值方法:
(j0,i0)=interp(j0',i0');//对于非整数坐标(j0',i0')需要插值
If (j0,i0)在图像f之内
拷贝对应像素:g(j1,i1)-f(j0,i0);
Else
g(j1,i1)=255;
空间变换运算
平移
平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。设(x0,y0,z0)为原图像上的一点,则将点(x0,y0,z0)平移至点(x1,y1,z1)的变换公式为:
其中,Tx、Ty、Tz分别为图像在x、y、z方向上的平移分量。
对于原图中被移出图像显示区域的点通常也有两种处理方法:直接丢弃或者通过加目标图像的尺寸(将新生成的图像宽度增加)使新图像中能够包含这些点。
缩放
缩放是指图像大小按照指定的比率放大或者缩小。缩放变换公式为:
其中,Sx、Sy、Sz是在x、y、z方向上的缩放因子。
直接根据缩放公式计算得到的目标图像中,某些映射源坐标可能不是整数,从而找不到对应的像素位置。例如,当 时,图像放大2倍,放大图像中的像素(0, 1, 2)对应于原图中的像素(0, 0.5, 1),这不是整数坐标位置,自然也就无法提取其灰度值。因此我们必须进行某种近似处理即使用插值法处理。
旋转
旋转一般是指将图像围绕某一指定点旋转一定的角度。旋转通常也会改变图像的大小,可以把转出显示区域的图像截去, 也可以改变输出图像的大小以扩展显示范围。
对于三维图像变换,可将其看成分别以x、y、z轴为旋转轴的3次旋转组成,依照3种变换关系顺序合成。假定在右手坐标系中,物体旋转的正方向为右手螺旋方向,那么:
(1) 绕x轴正向旋转度:
(2) 绕y轴正向旋转度:
(3) 绕z轴正向旋转度:
正平行投影
投影方向垂直于投影面。特点是物体的一个坐标面平行于投影面,可以反映出测量形体间的距离,角度和相互位置关系。其变换公式为:,其中,T为变换矩阵。
(1) 正视图(主视图、正面投影):此时视线与y轴平行,视图反映了实长(x方向)与高(z方向),而实宽(y方向)则被屏蔽了。此时变换矩阵T为:
(2) 侧视图(左视图、侧面投影):此时视线与z轴平行,视图反映了实长与宽,而高度则不能反映出来。此时变换矩阵为:
其中-Zp表示俯视方向上的平移量。
(3) 俯视图(平面图、水平投影):此时视线与X轴平行,类似地可以得到变换矩阵为:
其中,Xn表示侧视方向上的平移量。
插值算法
最邻近插值法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。例如,图2中的点P0在几何变换中被映射至点P1',但由于点P1’处于非整数的坐标位置,无法提取其像素灰度值。所以可以用与P1'最邻近的采样点P1的灰度值近似作为P1'的灰度值。
最近邻插值可表示为:f(x,y)=g(round(x),round (y))。最近邻插值算法计算简单,且在很多情况下的输出效果较好。但是,最近邻插值法会在图像中产生人为加工的痕迹。
参考资料
最新修订时间:2024-07-01 13:11
目录
概述
简介
几何变换的定义
参考资料