Time=toc;
set(handles.edit1,'string',Time);
if (M<=256)&(N<=256)
    W=256;
else
    W=max(M,N);
end
extendx=double(zeros([W,W]));
for m=1:W
     for n=1:W
          if (m<=M)&(n<=N)
          extendx(m,n)=y(m,n);
          else
              extendx(m,n)=realmax;
          end
     end
end
axes(handles.axes2);
imshow(extendx,[min(min(y)),max(max(y))]);
handles.imdata=y;
guidata(hObject, handles);
5.4.2    图像旋转
图像的旋转变换是指以图像的中心为原点,将图像上的所有像素都旋转同一个角度的变换,图像经过旋转变换之后,图像的位置发生了改变,但旋转后,图像的大小一般会改变。和平移变换一样,在图像旋转变换中既可以把转出显示区域的图像截取,也可以扩大显示区域的图像范围以显示图像的全部。旋转后的图像如下图5.9所示。
 
图5.9    旋转后的图像与原图像的对比
实现图像旋转的主要到吗如下:
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.3    图像平移
		
- 上一篇:ASP.NET英语翻译课程教学网站设计 
- 下一篇:基于ASP.NET的图书管理系统+流程图+ER图 
- 
- 
- 
- 
- 
- 
- 
- java+mysql车辆管理系统的设计+源代码
- 大众媒体对公共政策制定的影响
- 中考体育项目与体育教学合理结合的研究
- 酸性水汽提装置总汽提塔设计+CAD图纸
- 杂拟谷盗体内共生菌沃尔...
- 十二层带中心支撑钢结构...
- 当代大学生慈善意识研究+文献综述
- 乳业同业并购式全产业链...
- 河岸冲刷和泥沙淤积的监测国内外研究现状
- 电站锅炉暖风器设计任务书