图像几何运算

来源:互联网 发布:淘宝怎样申请退货退款 编辑:程序博客网 时间:2024/06/03 12:28

图像几何变换又称空间变换,指图像平移,镜像,旋转等操作。它是将一幅图的坐标位置映射到另一幅图像中的新坐标(f(x0,y0)→g(x1,y1)),关键是确定映射关系和变换参数。几何变换不改变图像像素值,只在图像平面进行像素的重新安排。

  图像几何变换分为两部分:(1)进行空间变换运算。(2)使用灰度插值算法处理映射时坐标非整数情况和坐标不对齐情况(如放大,缩小)。

1、图像平移

  变换公式:(x1  y1   1)=(x0  y0  1) ×[ 1   0   0; 0   1   0;Tx   Ty   1 ]=(x0+Tx    y0+Ty   1);

矩阵表示:

2、图像镜像

水平镜像   [x1  y1  1]=[Width-x0    y0    1]

垂直镜像   [x1  y1  1]=[x0   Height-y0    1]   

MATLAB实现,Imtransform()函数用来实现一般的二维空间变换。形式为:B= imstransform(A,TFORM,method);

Tform 为变换的具体类型,Tform由maketform()函数和cp2tform()函数创建。 T=maketform(transformtype,Matrix);transformtype指定变换类型,常见‘affine’是二维或多维仿射变换。Matrix即仿射变换矩阵,上述表达式的矩阵形式。cp2tform更多用于生成两图像配准的仿射变换,是根据控制每一对输入图像和待配准图像的基准点对儿坐标以及选择变换类型来进行数据拟合。形如:T=cp2tform(input_points,base_points,'affine');

method为选择的插值方法(有三次插值bicubic,双线性插值bilinerar,最近邻插值nearest三种)

3、图像转置

图像转置即将图像像素的x坐标与y坐标互换。

变换公式: (x1   y1   1)=(x0   y0   1)× [ 0    1    0; 1    0    0;0   0   1 ] =(y0  x0  1).

转置MATLAB实现同镜像都是使用Imtransform()函数和maketform()函数。

4、图像缩放 

图像缩放即按照比例将图像放大或缩小。

变换公式: (x1   Y1   1) = (X0 × Sx     y0 × Sy    1)。

直接根据缩放公式进行计算得到的目标图像中某些映射坐标可能不是整数,从而找不到对应像素位置。因此必须对其进行近似操作,即插值。

MATLAB工具:除了使用imtransform()函数实现外(形式同上),还可使用专门的图像缩放函数imresize()。调用形式如下:

B=imresize(A,Scale,method);//Scale为缩放比例;method为插值方法,默认最近邻插值,也可选择双线性插值和三次插值。

5、图像旋转

图像旋转一般指将图像围绕某一定点旋转一定的角度,可以将转出显示区域的图像截去,也可以改变输出图像大小来扩展显示范围。

5.1 以原点为中心的图像旋转

数学表达:(x1,y1,1)= (x0,y0,1)×[ cosθ sinθ 0;-sinθ cosθ 0;0 0 1]
MATLAB工具:同上所有能计算出变换结构TFORM的图像操作都可用Imtransform()函数实现。此外imromote()函数可以专门用来实现
图像绕中心逆时针旋转。调用形式:B=imromote(A,angle,method,'crop');// crop选项裁剪旋转后超出显示范围部分。

5.2 以任意点为中心的图像旋转

将平移和旋转操作结合可以使图像围绕任意点进行旋转操作。即先进行坐标系平移,再以新的坐标原点为中心旋转,之后将新原点平移回原来的坐标系的原点。具体步骤如下:

(1) 将坐标系1变为坐标系2.(2)将该点旋转θ度。(3)将坐标系2变回坐标系1。

例:围绕图像中心旋转实现

坐标系1(x1,y1)以图像左上角为原点,向右和向下为x,y的正方向。坐标系2(x2,y2)原点为图像中心,向右和向上分别为x,y的正方向。

第(1)步 数学形式(x2   y2    1)=(x1-0.5w   0.5h-y1   1)=(x1   y1   1)×[1   0   0;0   -1   0;-0.5w   0.5h   1]

第(2)步数学形式同上5.1     (x',y',1)= (x,y,1)×[ cosθ sinθ 0;-sinθ cosθ 0;0 0 1]

第(3)步 数学形式(x1   y1    1)=(x2+0.5w'   0.5h'-y1   1)=(x1   y1   1)×[1   0   0;0   -1   0;0.5w'   0.5h'   1]

将3次变换所用的矩阵依次相乘可得算法整体数学表达式。


























原创粉丝点击