实验三实验三图像处理MATLAB实验实验目的和要求熟悉MATLAB中数字图像处理工具箱(ImageProcessingToolbox)的基本使用方法和常用函数;熟练图像的矩阵表示方法;掌握图像处理的基本算法及函数调用,如直方图、二值化、图像分割、图像增强、图像变换等等。通过MATLAB在图像处理中的应用,体会MATLAB矩阵运算的技巧。实验设备及材料计算机,MATLAB2010实验内容对任意灰度图像(最好是MATLAB自带图像)进行以下操作:输入一幅灰度图像;调用im2bw,输出其二值化图像;调用imhist函数,输出其直方图;其上输入输出放在一个figure中,并加title。以脚本文件的形式保存。、直方图函数,以函数文件的形式保存。通过调用自己编写的函数验证其有效性。,利用中值滤波和平均滤波对其进行平滑,观察平滑效果,将原图像、噪声图像、滤波后图像显示在一个figure中。,使用3种以上的算子(如sobel\prewitt等),比较每种算子分割效果,在一个figure中显示。5、用MATLAB实现对图像的JPEG压缩编码。(此题不做要求,感兴趣的同学可以尝试编写)解:1、如下所示:I=imread('');subplot(2,2,1);imshow(I)title('源图像');bw=im2bw(I,);subplot(2,2,2);imshow(bw)title('二值化图像');subplot(2,2,3)imhist(I)title('直方图');在命令窗键入m文件名:shiyan3cell结果如下所示:2、直方图函数文件如下:%=zft(I)x=double(I);//此句不要也可,因为I=imread('')读出的是整形的,有的需要用双字节型的则需要转换[M,N]=size(x);h=zeros(1,256);//产生1个1*256的一维向量,用于存放每个灰度值的个数fori=1:M,forj=1:N,f=I(i,j);h(f+1)=h(f+1)+1;//注意用h(f+1)是因为matlab中的数组不能从零开始endendy=h;//y要有返回值,否则该函数无作用注:如果用h(f)=h(f)+1的话,调用运行时会出现如下报错:essh(0);(line8)h(f)=h(f)+1;调用显示程序如下:(1)当读入的图像为RGB彩色图像时要转成灰度图像再求其直方图I=imread('');x=rgb2gray(I);s=zft1(x);subplot(2,2,1);imshow(I)title('源图像');subplot(2,2,2);imshow(x)title('灰度图像');subplot(2,2,3);bar(s)title('直方图')y=imhist(x);subplot(2,2,4);bar(y)title('matlab自带的直方图函数imhist的图');结果如下:(2)当读入的图像自身就为灰度图像时直接求其直方图I=imread('');s=zft1(I);subplot(2,2,1);imshow(I)title('源图像');subplot(2,2,2);bar(s)title('直方图')y=imhist(I);subplot(2,2,3);bar(y)title('matlab自带的直方图函数imhist的图');运行结果如下:二值化函数文件如下:%=erzhi(I)I=double(I);//该句没有也正确[M,N]=size(I);IK=I;forp=1:M;forq=1:N;ifI(p,q)>=90IK(p,q)=255;//若此处将其赋值为逻辑1,则不正确。因为I=imread('')读出的是一幅图像的灰度值,其为整形(uint8),若直接将其赋值为1,则相当于该处灰度值为1,则显示全黑。若要将其赋为1,则需对读出的灰度值进行类型转换,转成逻辑符号(logical);但最后显示图像时要还原成整形。或则可以将图像归一化,则不需要还原成整形,因为归一化后的值就在[0,1]范围内,1就表示白色。(p,q)=0;endendendk=uint8(IK);当为赋值逻辑1时,函数文件如下:functionk=erzhi(I)[M,N]=size(I);IK=I;forp=1:M;fo
实验三(00001) 来自淘豆网m.daumloan.com转载请标明出处.