基于MATLAB_GUI的数字图像处理程序设计课程设计

发布时间 : 星期五 文章基于MATLAB_GUI的数字图像处理程序设计课程设计更新完毕开始阅读

3.2.3、截图

在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。

Imcrop函数的调用格式如下: y=imcrop(handles.img);

不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图:

3.2.4、缩放

在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。

该函数的调用格式如下:

B=imresize(A,m,method) 其中:

参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。

B=imresizee(A.m,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);

下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置:

虽然处理后看不出放大的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。

缩小后的结果如下:

3.3、旋转

3.3.1、上下翻转

函数flipud是实现一个二维矩阵的上下翻转,如

a=[1 2;3 4],经过该函数处理后,原矩阵变为[3 4;1 2];所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,

则可以直接用这个函数进行处理,否则就要对RGB图像进行降维处理, for k=1:3

y(:,:,k)=flipud(x(:,:,k)); end

处理结果如图:

3.3.2、左右翻转

对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图:

3.3.3、任意角度翻转

用函数imrotate来实现对图像的插值旋转。 该函数的调用格式如下:

B=imrotate(A,angle,method,’crop’)

其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。

一般来说,旋转后的图像会比原图大,用户可以指定“crop”参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。执行结果为:

3.4、加入噪声

经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现:

y=imnoise(handles.img,'gaussian',p1,p2);%高斯噪声 y=imnoise(x,'salt & pepper',p1); %椒盐噪声 y=imnoise(handles.img,'speckle',p1); %乘性噪声 p1,p2的参数也通过输入对话框的形式得到,原图加入高斯噪声后结果如下所示:

3.5、滤波

这里选择三种滤波方法,

联系合同范文客服:xxxxx#qq.com(#替换为@)