当前位置:文档之家› matlab课程设计-图像处理

matlab课程设计-图像处理

图像处理系统--学习报告学号:姓名:专业:日期:1 使用语言Matlab2图像选择及变换2.1 原始图像选择读取原始图片如下:图1 原始图片MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。

采用的是imrea d函数来实现图像文件的读取操作,采用的格式如下:A=imread(’filename.fmt’)该语句用于读取字符串“filename”对应的灰度图像或彩色图像,“fmt”指定了文件的格式。

采用imfinfo函数查询图像文件的信息。

其语句格式如下:Info=imfinfo(‘filename.fmt’)该语句可以在命令窗口会显示出文件的基本信息。

采用imshow函数进行图像的显示,采用的格式如下:A=imread(‘filename.fmt’);imshow(A);当这种显示方式要求被显示的图像要么在当前目录下或MATLAB的目录下。

采用rgb2gray函数进行真彩色图像与灰阶强度图像的转变,其格式调用如下:A=rgb2gry(‘filename.fmt’);得到的图像可以进行统计与处理,能完成要求。

图像读入与显示和变化的源代码如下:close all;clear all;x=imread('xuewu.jpg');imshow(x);imfinfo('xuewu.jpg')程序运行结果如下图2所示:图2 读取后显示图片命令窗口中,显示如下:Filename: 'xuewu.jpg'FileModDate: '27-Dec-2011 08:58:56'FileSize: 348015Format: 'jpg'FormatVersion: ''Width: 1024Height: 768BitDepth: 24ColorType: 'truecolor'FormatSignature: ''NumberOfSamples: 3CodingMethod: 'Huffman'CodingProcess: 'Sequential'Comment: {}2.2 转换图像为灰阶图像2.2 图像的变换在后期的处理中,有部分程序需要用到灰阶图片,因此提前将图片进行转换,得到灰阶图片。

采用rgb2gray函数进行真彩色图像与灰阶强度图像的转变其格式调用如下:A=rgb2gry(‘filename.fmt’);得到的图像可以进行统计与处理。

程序源代码如下:x1=rgb2gray(x);figure,imshow(x1)程序运行结果如下图3所示:图3 灰阶图片3 图像处理及代码程序3.1 图像亮度对比度调整3.1.1 函数及其参数的说明亮度的调节采用的是imadd函数,其调用格式如下:Z=imadd(X,Y);说明:imadd函数可以将两幅图像相加或在图像上加上一个常量。

其中,X 为图像数据矩阵,也可以是M*N*3的RGB图像矩阵。

Y可以是与X的格式类型完全的相同图像数据矩阵或者是一个double类型的数值。

对比度的调节采用的是imajust函数,其调用格式如下:Z=imadjust(X,[low_in,high_in],[low_out,high_out]);说明:imadjust函数将图像矩阵X中的亮度值线性变换到输出矩阵Z中的新值。

输入图像X因为uint8类,uint16类或double类图像,输出图像Z与输入图像X有着相同的数据类型。

low_in、high_in、low_out与high_out这四个参数的取值范围不论输入X的数据类型为何都为[0,1]。

3.1.2 源程序及运行结果源程序如下:x2=imadd(x1,50); %亮度调节figure,imshow(x2)x3=imadjust(x1,[0.3,0.7],[0,1]); %对比度调节figure,imshow(x3)运行结果如图4和图5所示:图4 亮度调节图5 对比度调节3.2 图像放大和缩小3.2.1 函数及其参数的说明对图像进行放大和缩小可以采用imresize函数,其调用格式如下:B = imresize(A,[mrows ncols], method )说明:mrows ncols 是选择放大或缩小的倍数,method表示选用的插值方法,其可选值为nearest(最邻近插值法)、bilinear(双线性插值)和bicubic(双三次插值法),并且method的缺省表示为nearest。

3.2.2 源程序及运行结果源程序如下所示:clcx1=imread('91.jpg');imshow(x1)title('原图');Info=imfinfo('91.jpg')%放大2倍x2=imresize(x1,2); %最邻近插法figure,imshow(x2)title('最邻近插法放大');x3=imresize(x1,2,'bilinear'); %双线性插值法figure,imshow(x3)title('双线性插值法放大'); %缩小到原来的1/5x4=imresize(x1,0.2); %最邻近插法figure,imshow(x4)title('最邻近插法缩小');x5=imresize(x1,0.2,'bilinear'); %双线性插值法figure,imshow(x5)title('双线性插值法缩小');x6=imrotate(x1,45);figure,imshow(x6)%将原始灰度以双线性插值的方式将图像顺时针旋转45°x7=imrotate(x1,45,'bilinear');figure,imshow(x7)程序运行结果如图6、7、8、9所示:图6 最邻近插法放大一倍图7 双线性插值法放大图8 最邻近插法缩小图9 双线性插值法缩小3.3 图像任意角度的旋转3.3.1 函数及其参数的说明对图像进行旋转可以采用imrotate函数,其调用格式如下所示:B = imrotate(A,angle,method,bbox)说明:A为输入二维图像矩阵,其数据类型不限。

angel为逆时针旋转的角度值,如果希望顺时针旋转,则选择该值为负。

method表示选用的插值方法,其可选值为nearest(最邻近插值法)、bilinear(双线性插值)和bicubic(双三次插值法),并且method的缺省表示为nearest。

bbox为指定输出图像尺寸的字符串,’crop’表示的通过裁剪使输出图像尺寸与输入图像一致,’loose’表示的不进行裁剪,故输出图像尺寸会比输入图像尺寸大,它在默认情况下为’loose’。

3.3.2 源程序及运行结果源程序如下:clcx1=imread('91.jpg');imshow(x1)title('原图');%将原始灰度以最邻近插值的方式将图像顺时针旋转45°x6=imrotate(x1,45);figure,imshow(x6)%将原始灰度以双线性插值的方式将图像顺时针旋转45°x7=imrotate(x1,45,'bilinear');figure,imshow(x7)程序的运行结果下图10和图11所示图10 最邻近插值法45°逆时针旋转图11 双线性插值法逆时针45°旋转3.4图像直方图统计和均衡3.4.1 函数及其参数的说明要进行图像直方图统计可以采用imhist函数,其调用格式如下:h=imhist(X,n)其中,X为输入图像,h为其直方图,n是用于形成直方图的灰度级的个数。

一个灰度级可以包含几个灰度值,换言之,uint8类型的图像直方图的灰度级可以有256级,也可以只有8级,每个灰度级都有32个灰度值。

参数n可以缺省,在默认的情况下,如果X是灰度图像,则n为256个灰度级,如果X是二值图像,则n为2,表示有2个灰度级。

要进行图像直方图均衡可以采用histeq函数,其调用格式如下:Z=histeq(X,n)其中,X为输入灰度图像矩阵,其数据类型为double或uint8类型。

n为均衡后直方图的灰度等级数,其默认值为64。

Z为直方图均衡后的图像矩阵。

3.4.2 源程序及运行结果源程序如下:figure,imhist(x1)x4=histeq(x1);figure,imhist(x4)figure,imshow(x4)运行结果如下图12、13、14所示图12 原始图像直方图图13 经过直方图均衡后的图像图14 均衡后的直方图3.5 图像加入噪声3.5.1 函数及其参数的说明函数使用imnoise函数进行图片的噪声加入,其调用格式如下:J = imnoise(I,type,parameters)期中,type是噪声的类型,由高斯噪声,椒盐噪声,乘性噪声。

类型名分别是:gaussian、salt & pepper、speckle。

对图像加入噪声可以采用imnoise函数,其调用格式如下:Z=imnoise(X,type,parameters)说明:X为输入的二维或三维图像矩阵,其数据类型不限。

type为字符串指定噪声的类型(gaussian、salt & pepper、poisson与speckle),parameters为与特定噪声类型相对应的参数。

3.5.2 源程序及运行结果%加入高斯噪声x11=imnoise(x1,'gaussian',0,0.01);figure,imshow(x11)%加入浓度为0.25的椒盐噪声x12=imnoise(x1,'salt & pepper',0.25);figure,imshow(x12)%加入泊松噪声x13=imnoise(x1,'poisson');figure,imshow(x13)x14=imnoise(x1,'speckle');figure,imshow(x14)程序结果如下图15 、16、17、18所示:图15 加入高斯噪声图16 加入椒盐噪声图17 泊松噪声图18 加入乘性噪声全部源程序代码:% 读取图像并显示图像和输出图像信息close all;clear all;x=imread(123.jpg'); % x表示彩色图片imshow(x);title('图像变换');imfinfo('123.jpg')%得到灰度图像x1=rgb2gray(x); %x1表示灰度图像figure,imshow(x1);title('灰度图像');%基于灰度图像的亮度和对比度调节x2=imadd(x1,50); %x2表示经亮度调节后的图像figure,imshow(x2);title('增加亮度');x3=imadjust(x1,[0.3,0.7],[0,1]); %x3表示经对比度调节后的图像figure,imshow(x3);title('增加对比度');%基于灰度图像的放大和缩小%放大2倍x5=imresize(x1,2); %x5表示经最邻近插法放大后的图像figure,imshow(x5);title('最邻近插法放大');x6=imresize(x1,2,'bilinear'); % x6表示经双线性插值法放大后的图像figure,imshow(x6);title('双线性插值法放大');%缩小到原来的1/5x7=imresize(x1,0.2); %x7表示经最邻近插法缩小后的图像figure,imshow(x7);title('最邻近插法缩小');x8=imresize(x1,0.2,'bilinear'); %x8表示经双线性插值法缩小后的图像figure,imshow(x8);title('双线性插值法缩小');%基于灰度图像的旋转%x9表示以最邻近插值的方式将图像顺时针旋转45°后的图像x9=imrotate(x1,45);figure,imshow(x9);title('最邻近插值旋转45°');% x10表示以双线性插值的方式将图像顺时针旋转45°后的图像x10=imrotate(x1,45,'bilinear');figure,imshow(x10);title('双线性插值旋转45°');%基于灰度图像的直方图统计和均衡%x4表示经过均衡后的图像figure,imhist(x1)x4=histeq(x1);figure,imhist(x4)figure,imshow(x4);title('均衡后的图像');%基于灰度图像的各种噪声加入%x11表示加入高斯噪声后的图像x11=imnoise(x1,'gaussian',0,0.01); figure,imshow(x11);title('高斯噪声');% x12加入浓度为0.15椒盐噪声后的图像x12=imnoise(x1,'salt & pepper',0.15); figure,imshow(x12);title('椒盐噪声');% x13加入泊松噪声后的图像x13=imnoise(x1,'poisson');figure,imshow(x13);title('泊松噪声');% x14加入乘性噪声后的图像x14=imnoise(x1,'speckle');figure,imshow(x14);title('乘性噪声');J=imread('91.jpg');Imshow(J);x1=imresize(J,2)%放大为原来的两倍x2=imresize(J,0.5)%缩小为原来的1/2figure,imshow(x1);figure,imshow(x2)20。

相关主题