基于MATLAB的图像编辑软件开发(15)
时间:2016-11-30 19:14 来源:毕业论文 作者:毕业论文 点击:次
图像平移变换后图像上的每一点都可以在原图像中找到对应的点,若图像平移后并没有被放大,说明移出的部分被截断,原图像中有点被移出显示区域,若不想丢弃被移出的部分图像,并将新生成的图像扩大,则矩阵变小。图像经过水平和垂直都平移50之后的图像如下图5.11所示 图5.10 设置平移量 图5.11 平移后的图像 实现图像平移的主要代码如下: function ImageRotate_Callback(hObject, eventdata, handles) tic; x=handles.imdata; prompt={'Angle(-360~360):'}; name='Input for Geometric Transformation'; numlines=1; defaultanswer={'45'}; anss=inputdlg(prompt,name,numlines,defaultanswer); theta=str2num(anss{1}); T=[cos(theta) sin(theta) 0;-sin(theta) cos(theta) 0;0 0 1]; tform=maketform('affine',T); g=imtransform(x,tform); Time=toc; set(handles.edit1,'string',Time); [row,col]=size(g); if (row<=256)&(col<=256) for m=1:256 for n=1:256 if (m<=row)&(n<=col) extendx(m,n)=g(m,n); else extendx(m,n)=realmax; end end end axes(handles.axes2); imshow(extendx,[]); else M=max(row,col); for m=1:M for n=1:M if (m<=row)&(n<=col) extendx(m,n)=g(m,n); else extendx(m,n)=realmax; end end end axes(handles.axes2); imshow(extendx,[]); msgbox('The output image has a width or height larger than 256!','HELP','help'); end handles.imdata=g; guidata(hObject, handles); 5.4.4 图像缩放 在图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息,而在图像放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值。图像缩小后和原图对比,如下图5.12所示 图5.12 缩小后的图像 事项图像缩放的主要带代码如下: function ImageRotate_Callback(hObject, eventdata, handles) tic; x=handles.imdata; prompt={'Angle(-360~360):'}; name='Input for Geometric Transformation'; numlines=1; defaultanswer={'45'}; anss=inputdlg(prompt,name,numlines,defaultanswer); theta=str2num(anss{1}); T=[cos(theta) sin(theta) 0;-sin(theta) cos(theta) 0;0 0 1]; tform=maketform('affine',T); g=imtransform(x,tform); Time=toc; set(handles.edit1,'string',Time); [row,col]=size(g); if (row<=256)&(col<=256) (责任编辑:qin) |