数字图像处理-几何变换PPT推荐.pptx
《数字图像处理-几何变换PPT推荐.pptx》由会员分享,可在线阅读,更多相关《数字图像处理-几何变换PPT推荐.pptx(47页珍藏版)》请在冰豆网上搜索。
同特征)的一部分。
大多数几何操作包含两个基本的组件:
1.映射函数:
用一组空间变换方程(以及解映射函数:
用一组空间变换方程(以及解它们的过程)来指定;
(它们的过程)来指定;
(7.2节内容)节内容)2.插值方法:
用来计算在空间变换后的图像插值方法:
用来计算在空间变换后的图像中各个像素的新值。
(中各个像素的新值。
(7.3节内容)节内容)7.2映射和仿射变换映射和仿射变换一个几何操作从数学上可描述为通过调整图像一个几何操作从数学上可描述为通过调整图像一个几何操作从数学上可描述为通过调整图像一个几何操作从数学上可描述为通过调整图像像素的像素的像素的像素的坐标坐标坐标坐标将一幅输入图像将一幅输入图像将一幅输入图像将一幅输入图像ff(x,yx,y)变换为一幅新图变换为一幅新图变换为一幅新图变换为一幅新图像像像像gg(x,yx,y)的过程。
即,原来位于坐标的过程。
即,原来位于坐标(x,yx,y)处的像处的像处的像处的像素值在输出图像中将被重新安排到坐标素值在输出图像中将被重新安排到坐标素值在输出图像中将被重新安排到坐标素值在输出图像中将被重新安排到坐标(x,yx,y)处。
处。
ff(x,yx,y)gg(x,yx,y)映射函数:
映射函数:
(x,yx,y)=)=TT(x,yx,y)变换变换仿射变换将直线变为直线,三角形变换为三角形,仿射变换将直线变为直线,三角形变换为三角形,仿射变换将直线变为直线,三角形变换为三角形,仿射变换将直线变为直线,三角形变换为三角形,矩形变换为平行四边形。
平行仍保持平行,而在直线矩形变换为平行四边形。
平行仍保持平行,而在直线上的点间距离比例保持不变。
上的点间距离比例保持不变。
四种最常用几何操作:
平移、放缩、旋转、剪切平移、放缩、旋转、剪切平移、放缩、旋转、剪切平移、放缩、旋转、剪切表格修改参考文献:
表格修改参考文献:
数字图像处理(第数字图像处理(第数字图像处理(第数字图像处理(第33版)版)版)版)冈萨雷斯冈萨雷斯冈萨雷斯冈萨雷斯著著著著除了上述表格除了上述表格除了上述表格除了上述表格中提到的变换,中提到的变换,中提到的变换,中提到的变换,我们在我们在我们在我们在数字数字数字数字图像处理(第图像处理(第图像处理(第图像处理(第33版)版)版)版)(冈(冈(冈(冈萨雷斯萨雷斯萨雷斯萨雷斯著,阮著,阮著,阮著,阮秋琦等秋琦等秋琦等秋琦等译)书译)书译)书译)书中还找到了以中还找到了以中还找到了以中还找到了以下仿射变换,下仿射变换,下仿射变换,下仿射变换,供参考。
供参考。
变换名称变换名称仿射矩阵仿射矩阵T坐标公式例子恒等变换尺度变换旋转变换平移变换(垂直)偏移变换(水平)偏移变换输入输入输出输出2D2D仿射映射的仿射映射的仿射映射的仿射映射的66个参数唯一地由三组对应点个参数唯一地由三组对应点个参数唯一地由三组对应点个参数唯一地由三组对应点所确定。
给定相应点变换前和变换后的坐标,可所确定。
给定相应点变换前和变换后的坐标,可以写出以写出以写出以写出xx和和和和yy的的的的nn个方程并解出个方程并解出个方程并解出个方程并解出nn个变换系数。
个变换系数。
在在在在MATLABMATLAB的的的的IPTIPT中,有两个与仿射变换关中,有两个与仿射变换关中,有两个与仿射变换关中,有两个与仿射变换关联的函数:
联的函数:
maketformmaketform和和和和imtransformimtransform。
函数函数函数函数maketformmaketform用来定义希望的用来定义希望的用来定义希望的用来定义希望的2D2D空间变换,空间变换,空间变换,空间变换,它生成一个包括所有执行变换所需要参数的它生成一个包括所有执行变换所需要参数的它生成一个包括所有执行变换所需要参数的它生成一个包括所有执行变换所需要参数的MATLABMATLAB结构(称为结构(称为结构(称为结构(称为TFORMTFORM)。
除了仿射变换,)。
除了仿射变换,它还支持投影变换和自定义变换。
在定义了需要它还支持投影变换和自定义变换。
在定义了需要的变换后,可以使用函数的变换后,可以使用函数的变换后,可以使用函数的变换后,可以使用函数imtransformimtransform将其用于将其用于将其用于将其用于输入图像。
输入图像。
例例7.1程序代码程序代码I=imread(cameraman.tif);
%RotationTa=maketform(affine,cosd(30)-sind(30)0;
sind(30)cosd(30)0;
001);
Ia=imtransform(I,Ta);
%ScalingTb=maketform(affine,0.400;
00.80;
Ib=imtransform(I,Tb);
%Translationxform=1025;
0115;
001;
Tc=maketform(affine,xform);
Ic=imtransform(I,Tc,XData,1(size(I,2)+xform(3,1),YData,.1(size(I,1)+xform(3,2),FillValues,128);
%ShearingTd=maketform(affine,130;
210;
Id=imtransform(I,Td);
figuresubplot(2,2,1),imshow(Ia);
title(旋转旋转);
subplot(2,2,2),imshow(Ib);
title(放缩放缩);
subplot(2,2,3),imshow(Ic);
title(平移平移);
subplot(2,2,4),imshow(Id);
title(剪切剪切);
例例例例7.17.1程序运行效果程序运行效果程序运行效果程序运行效果拓展:
图像的镜像(参考文献拓展:
图像的镜像(参考文献4)程序代码:
程序代码:
I=imread(football.jpg);
figure;
subplot(221);
imshow(I);
title(title(原始图像原始图像原始图像原始图像)I=double(I);
I=double(I);
h=size(I);
I_fliplr(1:
h
(1),1:
h
(2),1:
h(3)=I(1:
h
(1),h
(2):
-h(3)=I(1:
-1:
1,1:
h(3);
1:
%水平镜像变换水平镜像变换水平镜像变换水平镜像变换I1=uint8(I_fliplr);
I1=uint8(I_fliplr);
subplot(222);
imshow(I1);
title(title(水平镜像变换水平镜像变换水平镜像变换水平镜像变换)I_flipud(1:
I_flipud(1:
h(3)=I(h
(1):
-h(3)=I(h
(1):
%垂直镜像变换垂直镜像变换垂直镜像变换垂直镜像变换I2=uint8(I_flipud);
I2=uint8(I_flipud);
subplot(223);
imshow(I2);
title(title(垂直镜像变换垂直镜像变换垂直镜像变换垂直镜像变换)I_fliplr_flipud(1:
I_fliplr_flipud(1:
-h
(2),1:
1,h
(2):
%对角镜像变换对角镜像变换对角镜像变换对角镜像变换I3=uint8(I_fliplr_flipud)I3=uint8(I_fliplr_flipud);
subplot(224);
imshow(I3);
title(title(对角镜像变换对角镜像变换对角镜像变换对角镜像变换)运行效果:
运行效果:
7.3.17.3.1对插值的需求对插值的需求对插值的需求对插值的需求对原始图像进行几何操作后,各个像素的结果值可用两对原始图像进行几何操作后,各个像素的结果值可用两对原始图像进行几何操作后,各个像素的结果值可用两对原始图像进行几何操作后,各个像素的结果值可用两种不同的方法计算。
种不同的方法计算。
一一一一.前向映射(源到目标映射):
计算输入图像所有像素的前向映射(源到目标映射):
计算输入图像所有像素的新坐标并将像素值复制到新坐标位置。
新坐标并将像素值复制到新坐标位置。
7.3插值方法插值方法源图像源图像F目标图像目标图像F前向映射的问题:
前向映射的问题:
1.1.很多由变换式算得的坐标不是整数,需要四舍五入到最很多由变换式算得的坐标不是整数,需要四舍五入到最很多由变换式算得的坐标不是整数,需要四舍五入到最很多由变换式算得的坐标不是整数,需要四舍五入到最近的整数以指示在输出图像中的一个像素;
近的整数以指示在输出图像中的一个像素;
2.2.很多坐标可能落在界外(例如:
负值);
很多坐标可能落在界外(例如:
很多