基于MATLAB的图像编辑软件开发(15)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

基于MATLAB的图像编辑软件开发(15)


图像平移变换后图像上的每一点都可以在原图像中找到对应的点,若图像平移后并没有被放大,说明移出的部分被截断,原图像中有点被移出显示区域,若不想丢弃被移出的部分图像,并将新生成的图像扩大,则矩阵变小。图像经过水平和垂直都平移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)