用Matlab进行数字图像处理实验1
matlab图像处理实验
![matlab图像处理实验](https://img.taocdn.com/s3/m/5f0c5c5ace84b9d528ea81c758f5f61fb7362877.png)
matlab图像处理实验实验⼀ Matlab语⾔、数字图象基本操作⼀、实验⽬的1、复习MATLAB语⾔的基本⽤法;2、掌握MATLAB语⾔中图象数据与信息的读取⽅法;3、掌握在MATLAB中绘制灰度直⽅图的⽅法,了解灰度直⽅图的均衡化的⽅法。
⼆、实验原理MATLAB是集数值计算,符号运算及图形处理等强⼤功能于⼀体的科学计算语⾔。
作为强⼤的科学计算平台,它⼏乎能够满⾜所有的计算需求。
MATLAB软件具有很强的开放性和适⽤性。
在保持内核不变的情况下,MATLAB可以针对不同的应⽤学科推出相应的⼯具箱(toolbox)。
⽬前,MATLAB已经把⼯具箱延伸到了科学研究和⼯程应⽤的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在⼯具箱(Toolbox)家族中有⾃⼰的⼀席之地。
在实验中我们主要⽤到MATLAB提供图象处理⼯具箱(Image ProcessingToolbox)。
1、MATLAB与数字图像处理MATLAB全称是Matrix Laboratory(矩阵实验室),⼀开始它是⼀种专门⽤于矩阵数值计算的软件,从这⼀点上也可以看出,它在矩阵运算上有⾃⼰独特的特点。
实际上MATLAB中的绝⼤多数的运算都是通过矩阵这⼀形式进⾏的。
这⼀特点也就决定了MATLAB在处理数字图像上的独特优势。
理论上讲,图像是⼀种⼆维的连续函数,然⽽在计算机上对图像进⾏数字处理的时候,⾸先必须对其在空间和亮度上进⾏数字化,这就是图像的采样和量化的过程。
⼆维图像进⾏均匀采样,就可以得到⼀幅离散化成M×N样本的数字图像,该数字图像是⼀个整数阵列,因⽽⽤矩阵来描述该数字图像是最直观最简便的了。
⽽MATLAB的长处就是处理矩阵运算,因此⽤MATLAB处理数字图像⾮常的⽅便。
MATLAB⽀持五种图像类型,即索引图像、灰度图像、⼆值图像、RGB图像和多帧图像阵列;⽀持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像⽂件格式的读,写和显⽰。
数字图像处理实验报告-基于Matlab
![数字图像处理实验报告-基于Matlab](https://img.taocdn.com/s3/m/ce91655fb52acfc789ebc9b3.png)
华东师范大学电子工程系2017.6实验1:图像灰度级修正【实验目的】掌握常用的图像灰度级修正方法(灰度变换法和直方图均衡化),加深对直方图的理解。
观察图像的增强效果,对灰度级修正前后的图像加以比较。
【实验内容】1)编程实现图像的灰度变换,改变图像的输入、输出映射参数范围(线性拉伸和反比);2)修改参数gamma值(大于、小于、等于1),观察处理结果;3)对图像直方图作均衡化处理,显示均衡前后的图像及其直方图。
【实验代码】original=imread('lena.bmp');linstr=imadjust(original,[0.3 0.7],[0 1]); %线性拉伸opposite=imadjust(original,[0 1],[1 0]); %反比above=imadjust(original,[0 1],[0 1],2); %gamma>1equal=imadjust(original,[0 1],[0 1],1); %gamma=1below=imadjust(original,[0 1],[0 1],0.5); %gamma<1subplot(3,3,1);imshow(original);title('原图像');subplot(3,3,2);imshow(linstr);title('线性拉伸');subplot(3,3,3);imshow(opposite);title('反比');subplot(3,3,4);imshow(above);title('gamma>1');subplot(3,3,5);imshow(equal);title('gamma=1');subplot(3,3,6);imshow(below);title('gamma<1');subplot(3,3,7);imhist(original);title('原图像直方图'); histequal=histeq(original);%对图像均衡化subplot(3,3,8);imshow(histequal);title('均衡后的图像'); subplot(3,3,9);imhist(histequal);title('均衡图像的直方图'); axis([0 256 0 2000]);【输出图像】【实验思考】根据以下图片以及实验结果可知gamma>1时图像整体变暗,灰度级整体变小;gamma<1时图像整体变亮,灰度级整体变小;而gamma=1时,图像维持不变。
MATLAB数字图像处理初步实验
![MATLAB数字图像处理初步实验](https://img.taocdn.com/s3/m/4f7938f104a1b0717fd5dda0.png)
实验一 MATLAB数字图像处理初步********************总共10小题********************一、实验目的及要求学习在MATLAB环境下对图像文件的I/O操作,为读取各种格式的图像文件和后续进行图像处理打下基础。
1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验设备与软件1.PC计算机2.MATLAB软件/语言包括图像处理工具箱(Image Processing Toolbox)3.实验所需要的图片三.实验内容1.利用imread函数读取一幅图像,假设其名为flower.tif,存入一个数组中;>>I=imread('pout.tif');2. 利用whos 命令提取该读入图像flower.tif的基本信息;>>whos I3.利用imshow函数来显示这幅图像;>>imshow(I)4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;>>imfinfo pout.tif5.利用imwrite函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
>>imwrite(I,'flower.jpg','quality',80)6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。
<同上>7.用imread函数,读入图像:Lenna.jpg 和camema.jpg;由于文件中只有lena.bmp和camera.gif,所以要用imwrite函数,将两个图另存为。
实验一MATLAB数字图像处理
![实验一MATLAB数字图像处理](https://img.taocdn.com/s3/m/1f88f5e2856a561252d36fbf.png)
昆明理工大学信息工程与自动化学院学生实验报告( 2012 —2013 学年第二学期)课程名称:图形图像处理开课实验室:信自444 2013年 5月 22日一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。
图像关于x和y坐标以及振幅连续。
要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样和量化的过程如图1所示。
因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。
图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类:亮度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
(完整版)数字图像处理MATLAB程序【完整版】
![(完整版)数字图像处理MATLAB程序【完整版】](https://img.taocdn.com/s3/m/d2ae5b9e7cd184254a35354c.png)
第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。
三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。
(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
数字图像处理实验程序MATLAB
![数字图像处理实验程序MATLAB](https://img.taocdn.com/s3/m/ac7c2011b307e87101f696b7.png)
实验一内容(一)(1)彩色图像变灰度图像A=imread('1.jpg');B=rgb2gray(A);figuresubplot(1,2,1),imshow(A)title('原图')subplot(1,2,2),imshow(B)title('原图灰度图像')(2)彩色图像变索引图像A=imread('1.jpg');figuresubplot(1,2,1),imshow(A)title('原图')[X,map]=rgb2ind(A,128);subplot(1,2,2),imshow(X,map)title('原图索引图像')(3)彩色图像变二值图像A=imread('1.jpg');figuresubplot(1,2,1),imshow(A)title('原图')C=im2bw(A,0.2);subplot(1,2,2),imshow(C)title('原图二值图像')(4)灰度图像变索引图像(一)A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')C=grayslice(B,39);subplot(1,2,2),imshow(C)title('灰度变索引图像')(5)灰度图像变索引图像(二)A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')[X,map]=gray2ind(B,63);subplot(1,2,2),imshow(X,map)title('灰度变索引图像')(6)灰度图像变彩色图像A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')C=gray2rgb(B,map);subplot(1,2,2),imshow(C)title('灰度变彩色图像')内容(二)(1)灰度平均值A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')B=double(B);[m,n]=size(B);sumg=0.0;for i=1:m;for j=1:n;sumg=sumg+B(i,j);endendavg=sumg/(m*n) % 均值maxg=max(max(B)) % 区域最大灰度ming=min(min(B)) % 区域最小灰度(2)彩色平均值figureimshow(A)title('彩色图像')A=double(A);[m,n]=size(A);sumg=0.0;for i=1:m;for j=1:n;sumg=sumg+A(i,j);endendavg=sumg/(m*n)squre=m*nmaxg=max(max(A))ming=min(min(A))内容(三)采样量化实验二图像变换傅里叶变换、反变换、I=imread('19.jpg');A=rgb2gray(I);x1=fft2(A);x2=fftshift(x1);x3=ifft(x1)/10;figure,subplot(1,4,1);imshow(A)title('原图');subplot(1,4,2);imshow(x1)title('频谱图');subplot(1,4,3);imshow(log(abs(x2)+1),[0 10]);title('直流分量移至频谱图中心');subplot(1,4,4);imshow(x3,[0 10])title('傅里叶反变换');DCT变换、反变换I=rgb2gray(X);subplot(1,3,1);imshow(I);title('原图');subplot(1,3,2);J=dct2(I);imshow(log(abs(J)),[0 20]);title('二维离散余弦变换');subplot(1,3,3);K=idct2(J)/20;imshow(K,[0 20]);title('二维离散反余弦变换');利用DCT变换压缩图像I=imread('19.jpg');A=rgb2gray(I);B=DCT2(A);B(abs(B)<0.1)=0;C=idct2(B)/255;figure,subplot(1,3,1);imshow(A);title('原图');subplot(1,3,2);imshow(B);title('二维离散余弦变换频谱图');subplot(1,3,3);imshow(C);title('压缩后图像');实验三图像增强(一)灰度图像增强(1)线性变换法clc;clear all;I=imread('19.jpg');A=rgb2gray(I);colormap;imshow(A);%设置图像倒数参数j=imadjust(A,[0 1],[1 0],1.5);figure;subimage(j)(2)灰度图像的非线性变换(之对数)I=imread('19.jpg');colormapimshow(I)J=double(I);J=45*log(J+1);I=uint8(J);figure,subimage(J)(二)直方图校正直方图均衡I=imread('19.jpg');B=rgb2gray(I);imshow(B,[40 255]);figure,imhist(B)title('直方图')J=imadjust(B,[0.15 0.9],[0 1]); figure,imhist(B,64)title('均衡直方图')滤波I=imread('19.jpg');figure,B=rgb2gray(I);C=imnoise(B,'salt & pepper',0.02);D=imfilter(B,fspecial('average',3)); E=medfilt2(B);subplot(1,3,2)imshow(D)title('均值滤波')subplot(1,3,3)imshow(D)title('中值滤波')subplot(1,3,1)imshow(C)title('加入椒盐噪声图像')锐化处理I=imread('19.jpg');A=rgb2gray(I);figure,subplot(2,3,1),imshow(A);title('原图');hs=fspecial('sobel');S=imfilter(A,hs);hp=fspecial('prewitt');P=imfilter(A,hs);A=double(A);%双精度型H=[0 1 0,1 -4 1,0 1 0];%拉普拉斯算子J=conv2(A,H,'same');K=A-J;subplot(2,3,2),imshow(K);title('拉普拉斯锐化图像');B=edge(A,'roberts',0.1);subplot(2,3,3),imshow(B);title('罗伯特锐化图像');subplot(2,3,4),imshow(S);title('sobel算子锐化图像');subplot(2,3,5),imshow(P);title('prewitt算子锐化图像');实验四放缩A=imread('19.jpg');imshow(A);title('原图')B=imresize(A,2)figure,imshow(B);title('二倍图')C=imresize(A,0.5)figureimshow(C)title('二分之一图')旋转A=imread('19.jpg');figuresubplot(1,4,1),imshow(A);title('原图像')B=imrotate(A,30,'nearest');subplot(1,4,2),imshow(uint8(B));title('旋转30度图像')C=imrotate(A,45,'nearest');subplot(1,4,3),imshow(uint8(C));title('旋转45度图像')D=imrotate(A,60,'nearest');subplot(1,4,4),imshow(uint8(D));title('旋转60度图像')镜像A1=imread('19.jpg');A1=double(A1);Figure,subplot(1,4,1),imshow(uint8(A1));H=size(A1);title('原像')A2(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,1:H(2),1:H(3));%垂直镜像subplot(1,4,2),imshow(uint8(A2));title('垂直镜像')A3(1:H(1),1:H(2),1:H(3))=A1(1:H(1),H(2):-1:1,1:H(3));%水平镜像subplot(1,4,3),imshow(uint8(A3));title('水平镜像')A4(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,H(2):-1:1,1:H(3));%对角镜像subplot(1,4,4),imshow(uint8(A4));title('对角镜像')剪切A1=imread('19.jpg');A2=imcrop(A1,[75 68 100 110]);figuresubplot(1,2,1),imshow(A1);title('原像')subplot(1,2,2),imshow(A2);title('剪切后像')实验五阈值分割A=imread('19.jpg');figuresubplot(1,4,1),imshow(A);title('原图像')B=im2bw(A,91/255);subplot(1,4,2),imshow(B);title('阈值91的图像')C=im2bw(A,71/255);subplot(1,4,3),imshow(C);title('阈值71的图像')D=im2bw(A,140/255);subplot(1,4,4),imshow(D);title('阈值140的图像')边缘检测I=imread('19.jpg');A=rgb2gray(I);figuresubplot(1,4,1),imshow(A);title('原图像')B=edge(A,'sobel',0.1);%edge边缘检测函数subplot(1,4,2),imshow(B);title('sobel算子检测')C=edge(A,'roberts',0.1);%0.1为门限subplot(1,4,3),imshow(C);title('roberts算子检测')D=edge(A,'prewitt',0.1);subplot(1,4,4),imshow(D);title('prewitt算子检测')所谓数字图像处理[7]就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。
数字图像处理实验1 MATLAB图像处理编程基础 实验报告
![数字图像处理实验1 MATLAB图像处理编程基础 实验报告](https://img.taocdn.com/s3/m/fb60f53343323968011c929c.png)
实验报告课程名称数字图像处理实验项目MATLAB图像处理编程基础指导教师学院光电信息与通信工程__专业电子信息工程班级/学号学生姓名______ __________实验日期______ _成绩______________________实验1 MATLAB图像处理编程基础一、实验目的1.了解MATLAB产品体系和了解MATLAB图像处理工具箱。
2.掌握MATLAB的基本应用方法。
3.掌握MATLAB图像存储/图像数据类型/图像类型。
4.掌握图像文件的读/写/信息查询。
5.掌握图像显示--显示多幅图像、4种图像类型的显示方法、特殊图像的显示技术6.编程实现图像类型间的转换和图像算术操作。
二、实验的硬件、软件平台硬件:计算机软件:操作系统:Windows XP应用软件:MATLAB 7.0.1三、MATLAB图像处理工具箱的功能图像处理工具箱是一个函数的集合,它扩展了matlab数值计算环境的能力。
这个工具箱支持了大量图像处理操作,包括:空间图像变换 Spatial image transformations形态操作 Morphological operations邻域和块操作 Neighborhood and block operations线性滤波和滤波器设计 Linear filtering and filter design格式变换 Transforms图像分析和增强 Image analysis and enhancement图像登记 Image registration清晰化处理 Deblurring兴趣区处理 Region of interest operations四、说明使用MATLAB进行图像处理所需函数调用步骤在Command Window中,以命令行单句调用某一函数只需写xxx(函数名)xxxxxxx)这样就可以调用了.五、给出MATLAB图像处理工具箱的数据类型和4种基本图像类型工具箱里的函数都是M文件,可以通过type function_name来查看代码,也可以通过写自己的matlab函数来扩展工具箱。
matlab 数字图像处理实验报告(五份)
![matlab 数字图像处理实验报告(五份)](https://img.taocdn.com/s3/m/ccf306c0fe4733687f21aa79.png)
《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。
二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。
从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。
其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。
此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。
频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。
常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。
假定原图像为f(x,y),经傅立叶变换为F(u,v)。
频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。
四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。
数字图像处理实验matlab
![数字图像处理实验matlab](https://img.taocdn.com/s3/m/85c4424b55270722182ef71b.png)
计算机图像处理:学号:班级:实验一:了解数字图像处理平台一、实验目的(1)学会使用扫描仪;(2)熟悉MATLAB软件。
二、实验容(1)用扫描仪扫一幅彩色图片;一幅灰度图片。
(2)熟悉MATLAB的主界面窗口中各个窗口的功能,利用不同的矩阵输入方式给矩阵赋值,了解MATLAB的简单编程及矩阵基本知识;(3)掌握使用MATLAB的帮助来获得更多的信息。
三、实验仪器设备扫描仪、计算机和MATLAB应用软件。
实验二:图像处理一、实验目的(1)通过应用MATLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件的编程及应用;(2)通过实验进一步掌握图像处理的基本技术和方法。
二、实验容1.应用MATLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换。
显示原始图像:>>I=imread('D:\tu.jpg');>> imshow(I);RGB 灰度图像: 代码:>> I=imread('D:\tu.JPEG'); >> imshow(I)>> graytu=rgb2gray(I); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2); >> subimage(graytu) 效果:1002003004005010015020025030010020030040050100150200250300RGB 转二值图像: 代码:>> [indtu,map]=rgb2ind(I,0.5); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2); >> subimage(indtu,map) 效果:100200300400100200300100200300400100200300索引转RGB 图像: 代码:>> I1=ind2rgb(indtu,map); >> subplot(1,2,1);>> subimage(indtu,map); >> subplot(1,2,2); >> subimage(I1) 效果:100200300400100200300100200300400100200300索引转灰度图像: 代码:>> I2gtu=ind2gray(indtu,map); >> subplot(1,2,1);>> subimage(indtu,map); >> subplot(1,2,2); >> subimage(I2gtu) 效果:100200300400100200300100200300400100200300灰度转索引图像: 代码:[g2itu,map]=gray2ind(graytu,64); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2); >> subimage(g2itu,map) 效果:100200300400100200300100200300400100200300RGB 转二值图像: 代码:>> r2bwtu1=im2bw(I,0.8); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2);>> subimage(r2bwtu1)代码: 效果:100200300400100200300100200300400100200300灰度转二值图像 代码:g2bwtu1=im2bw(graytu,0.8); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2); >> subimage(g2bwtu1) 效果:100200300400100200300100200300400100200300索引转二值图像 代码:>> i2bwtu=im2bw(indtu,map,0.5); >> subplot(1,2,1);>> subimage(indtu,map); >> subplot(1,2,2); >> subimage(i2bwtu) 效果:1002003004001002003001002003004001002003002. 应用MATLAB 工具箱演示一幅图像的傅里叶变换、离散余弦变换,观察其频谱图,然后将它们进行逆变换,观察逆变换后的图像 (1) 傅里叶正变换 代码:>> F=fft2(graytu); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2);>> subimage(log(abs(F)),[3,10]) 效果:100200300400100200300100200300400100200300(2) 傅里叶反变换 代码:>> IF=ifft2(F); >> subplot(1,2,1);>> subimage(log(abs(F)),[3,10]); >> subplot(1,2,2); >> subimage(uint8(IF)) 效果:100200300400100200300100200300400100200300(3) DCT 变换 代码:>> B=dct2(graytu); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2);>> subimage(log(abs(B)),[3,5]) 效果:100200300400100200300100200300400100200300(4) IDCT 变换 代码:>> iB=idct2(B); >> subplot(1,2,1);>> subimage(log(abs(B)),[3,5]); >> subplot(1,2,2); >> subimage(uint8(iB)) 效果:100200300400100200300100200300400100200300总结:傅里叶变化:傅里叶变换是一种特殊的积分变换。
matlab数字图像处理实验
![matlab数字图像处理实验](https://img.taocdn.com/s3/m/9c15f8bbf705cc175427090d.png)
数字图像处理实验指导书目录实验一MATLAB数字图像处理初步实验二图像的代数运算实验三图像增强-空间滤波实验四图像分割3实验一MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。
图像关于x和y坐标以及振幅连续。
要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样和量化的过程如图1所示。
因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。
图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类:➢亮度图像(Intensity images)➢二值图像(Binary images)➢索引图像(Indexed images)➢RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double 类,则像素取值就是浮点数。
数字图像处理实验报告(matlab)
![数字图像处理实验报告(matlab)](https://img.taocdn.com/s3/m/b73f929d51e79b8968022648.png)
学院:自动化学院班级:电081班姓名:***学号:********2011年10月实验一直方图均衡化一、实验目的:1. 熟悉图像数据在计算机中的存储方式;2. 掌握图像直方图均衡化这一基本处理过程。
二、实验条件:PC微机一台和MATLAB软件。
三、实验内容:1.读入图像数据到内存中,并显示读入的图像;2.实现直方图均衡化处理,显示处理前后图像的直方图。
3.显示并保存处理结果。
四、实验步骤:1.打开Matlab编程环境;2.获取实验用图像。
用’imread’函数将图像读入Matlab;用’imshow’函数显示读入的图像。
3.获取输入图像的直方图:用’imhist’函数处理图像。
4.均衡化处理:用’histeq’函数处理图像即可。
5.获取均衡化后的直方图并显示图像:用’imhist’和’imshow’函数。
6.保存实验结果:用’imwrite’函数处理。
五、实验程序及结果:1、实验程序subplot(6,2,1);i=imread('test1-1.jpg');imhist(i);title('test1-1 hist');subplot(6,2,2);i=im2double(i);imshow(i);title('test1-1 Ô-ͼÏñ');subplot(6,2,3);s=histeq(i);imhist(s);title('test1-1 balancedhist');subplot(6,2,4);imshow(s);title('test1-1 ¾ùºâ»¯ºóµÄͼÏñ');subplot(6,2,5);i=imread('test1-2.jpg');imhist(i);title('test1-2 hist');subplot(6,2,6);i=im2double(i);imshow(i);title('test1-2 Ô-ͼÏñ');subplot(6,2,7);s=histeq(i);imhist(s);title('test1-2 balancedhist'); subplot(6,2,8);imshow(s);title('test1-2 ¾ùºâ»¯ºóµÄͼÏñ');subplot(6,2,9);i=imread('test1-3.jpg');imhist(i);title('test1-3 hist');subplot(6,2,10);i=im2double(i);imshow(i);title('test1-3 Ô-ͼÏñ');subplot(6,2,11);s=histeq(i);imhist(s);title('test1-3 balancedhist'); subplot(6,2,12);imshow(s);title('test1-3 ¾ùºâ»¯ºóµÄͼÏñ');2、实验结果test1-1 hist050100150200250test1-1 原图像test1-1 balancedhist00.10.20.30.40.50.60.70.80.91test1-1 均衡化后的图像test1-2 hist050100150200250test1-2 原图像test1-2 balancedhist00.10.20.30.40.50.60.70.80.91test1-2 均衡化后的图像0test1-3 hist050100150200250test1-3 原图像test1-3 balancedhist00.10.20.30.40.50.60.70.80.91test1-3 均衡化后的图像六、实验思考1.数字图像直方图均衡化之后直方图为什么不是绝对平坦的?答:直方图均衡化是将一已知灰度概率密度分布的图像,经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像。
数字图像处理实验一:熟悉Matlab图像处理工具箱
![数字图像处理实验一:熟悉Matlab图像处理工具箱](https://img.taocdn.com/s3/m/f4d10e14a76e58fafab00336.png)
实验一:熟悉Matlab图像处理工具箱一.实验目的:1.熟悉matlab图像处理工具箱;2.了解图像处理的函数及使用方法;3.学会简单的图像处理方法;二.实验原理1.二值图像二值图像是一种简单的图像格式,“0”表示黑色像素点,“255”表示白色像素点,二值图像处理运算是从数学形态学下的集合论发展起来的,基本运算比较简单,却可以产生复杂的效果。
2.反色图像对于彩色图像的R,G,B各彩色分量取反的技术就是反色处理,这在二值化图像的连通区域选取的时候非常重要,如物体连通域用黑色表示,而二值化后的物体连通域图像可那是白色的,二背景是黑色的,这时应手动选取图像的反色处理或有程序根据背景和物体连通域两种颜色的数量所占比例而自动选择是否选取图像的反色处理。
3.水平镜像图像的水平镜像是指将指定区域的图像以原图像的垂直中轴线为中心,将图像分为左右两部分进行对称变换显示在屏幕。
水平镜像时每行图像信息的处理方式是相同的,而且行顺序不发生变化,只是每一行的像素信息按从左到右的顺序进行了左右颠倒,所以镜像后图像的高和宽不变。
设图像的高度为Height,宽度为width,原图中坐标为(x0,y0)的点经过水平镜像后,则点(x0,y0)的坐标为(x1,y1)。
(x0,y0)和(x1,y1)的关系如下:x1=Width-x0 y1=y04.垂直翻转图像的翻转有两种,一种是水平翻转,一种是垂直翻转。
水平翻转会产生左右对调的图像,垂直翻转会产生上下对调的图像。
5.旋转30度如果果一个点(x1,y1)旋转到(x2,y2),对应的角度旋转从θ1到θ1+θ2sinθ1=y1/sqrt(x1*x1+ y1*y1)cosθ1=x1/sqrt(x1*x1+ y1*y1)sin(θ1+θ2)=sin(θ1)*cos(θ2)+cos(θ1)*sin(θ2)=y2/sqrt(x2*x2+y2*y2);cos(θ1+θ2)=cos(θ1)*cos(θ2)-sin(θ1)*sin(θ2)=x2/sqrt(x2*x2+y2*y2)。
数字图像处理实习1—Matlab图像处理初步
![数字图像处理实习1—Matlab图像处理初步](https://img.taocdn.com/s3/m/a54e6f2e4b35eefdc8d333ae.png)
实验1——Matlab图像处理初步
实验目的:熟悉Matlab语言关于图像处理的基本操作
实验内容:练习imread、imshow、iminfo、imwrite、subplot、for等命令以及矩阵计算有关命令。
实验要求:
1、读取并显示cameraman.tif图像(提示:imread)。
2、将图像中间的1/3部分(如图)分别作如下处理,其余部分不变
a) 每个像素点的值都乘以2,即f(x,y)=2*f(x,y),显示处理前后的图像(提
示:imshow),同一个图像窗口左右显示(提示:subplot),左边显示原
始图像,右边显示处理后图像,处理后图像保存为cameraman1.bmp(提
示:imwrite)
b) 每个像素点取反色,即f(x,y)=255-f(x,y);显示处理前后的图像,同一个
图像窗口上下显示(提示:subplot),上边显示原始图像,下边显示处理
后图像,处理后图像保存为cameraman2.bmp(提示:imwrite)
3、撰写实验报告并附上所用程序和结果。
f=imread('cameraman.tif');
[m n]=size(f);
g=f;
r=round(m/3);
c=round(n/3);
for i=r:2*r
for j=c:2*c
g(i,j)=2*f(i,j);
end
end
subplot(2,1,1),imshow(f);
subplot(2,1,2),imshow(g);
imwrite(g,'cameraman1.bmp','bmp');
2013-12-16。
数字图像处理实验程序MATLAB
![数字图像处理实验程序MATLAB](https://img.taocdn.com/s3/m/ac7c2011b307e87101f696b7.png)
实验一内容(一)(1)彩色图像变灰度图像A=imread('1.jpg');B=rgb2gray(A);figuresubplot(1,2,1),imshow(A)title('原图')subplot(1,2,2),imshow(B)title('原图灰度图像')(2)彩色图像变索引图像A=imread('1.jpg');figuresubplot(1,2,1),imshow(A)title('原图')[X,map]=rgb2ind(A,128);subplot(1,2,2),imshow(X,map)title('原图索引图像')(3)彩色图像变二值图像A=imread('1.jpg');figuresubplot(1,2,1),imshow(A)title('原图')C=im2bw(A,0.2);subplot(1,2,2),imshow(C)title('原图二值图像')(4)灰度图像变索引图像(一)A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')C=grayslice(B,39);subplot(1,2,2),imshow(C)title('灰度变索引图像')(5)灰度图像变索引图像(二)A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')[X,map]=gray2ind(B,63);subplot(1,2,2),imshow(X,map)title('灰度变索引图像')(6)灰度图像变彩色图像A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')C=gray2rgb(B,map);subplot(1,2,2),imshow(C)title('灰度变彩色图像')内容(二)(1)灰度平均值A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')B=double(B);[m,n]=size(B);sumg=0.0;for i=1:m;for j=1:n;sumg=sumg+B(i,j);endendavg=sumg/(m*n) % 均值maxg=max(max(B)) % 区域最大灰度ming=min(min(B)) % 区域最小灰度(2)彩色平均值figureimshow(A)title('彩色图像')A=double(A);[m,n]=size(A);sumg=0.0;for i=1:m;for j=1:n;sumg=sumg+A(i,j);endendavg=sumg/(m*n)squre=m*nmaxg=max(max(A))ming=min(min(A))内容(三)采样量化实验二图像变换傅里叶变换、反变换、I=imread('19.jpg');A=rgb2gray(I);x1=fft2(A);x2=fftshift(x1);x3=ifft(x1)/10;figure,subplot(1,4,1);imshow(A)title('原图');subplot(1,4,2);imshow(x1)title('频谱图');subplot(1,4,3);imshow(log(abs(x2)+1),[0 10]);title('直流分量移至频谱图中心');subplot(1,4,4);imshow(x3,[0 10])title('傅里叶反变换');DCT变换、反变换I=rgb2gray(X);subplot(1,3,1);imshow(I);title('原图');subplot(1,3,2);J=dct2(I);imshow(log(abs(J)),[0 20]);title('二维离散余弦变换');subplot(1,3,3);K=idct2(J)/20;imshow(K,[0 20]);title('二维离散反余弦变换');利用DCT变换压缩图像I=imread('19.jpg');A=rgb2gray(I);B=DCT2(A);B(abs(B)<0.1)=0;C=idct2(B)/255;figure,subplot(1,3,1);imshow(A);title('原图');subplot(1,3,2);imshow(B);title('二维离散余弦变换频谱图');subplot(1,3,3);imshow(C);title('压缩后图像');实验三图像增强(一)灰度图像增强(1)线性变换法clc;clear all;I=imread('19.jpg');A=rgb2gray(I);colormap;imshow(A);%设置图像倒数参数j=imadjust(A,[0 1],[1 0],1.5);figure;subimage(j)(2)灰度图像的非线性变换(之对数)I=imread('19.jpg');colormapimshow(I)J=double(I);J=45*log(J+1);I=uint8(J);figure,subimage(J)(二)直方图校正直方图均衡I=imread('19.jpg');B=rgb2gray(I);imshow(B,[40 255]);figure,imhist(B)title('直方图')J=imadjust(B,[0.15 0.9],[0 1]); figure,imhist(B,64)title('均衡直方图')滤波I=imread('19.jpg');figure,B=rgb2gray(I);C=imnoise(B,'salt & pepper',0.02);D=imfilter(B,fspecial('average',3)); E=medfilt2(B);subplot(1,3,2)imshow(D)title('均值滤波')subplot(1,3,3)imshow(D)title('中值滤波')subplot(1,3,1)imshow(C)title('加入椒盐噪声图像')锐化处理I=imread('19.jpg');A=rgb2gray(I);figure,subplot(2,3,1),imshow(A);title('原图');hs=fspecial('sobel');S=imfilter(A,hs);hp=fspecial('prewitt');P=imfilter(A,hs);A=double(A);%双精度型H=[0 1 0,1 -4 1,0 1 0];%拉普拉斯算子J=conv2(A,H,'same');K=A-J;subplot(2,3,2),imshow(K);title('拉普拉斯锐化图像');B=edge(A,'roberts',0.1);subplot(2,3,3),imshow(B);title('罗伯特锐化图像');subplot(2,3,4),imshow(S);title('sobel算子锐化图像');subplot(2,3,5),imshow(P);title('prewitt算子锐化图像');实验四放缩A=imread('19.jpg');imshow(A);title('原图')B=imresize(A,2)figure,imshow(B);title('二倍图')C=imresize(A,0.5)figureimshow(C)title('二分之一图')旋转A=imread('19.jpg');figuresubplot(1,4,1),imshow(A);title('原图像')B=imrotate(A,30,'nearest');subplot(1,4,2),imshow(uint8(B));title('旋转30度图像')C=imrotate(A,45,'nearest');subplot(1,4,3),imshow(uint8(C));title('旋转45度图像')D=imrotate(A,60,'nearest');subplot(1,4,4),imshow(uint8(D));title('旋转60度图像')镜像A1=imread('19.jpg');A1=double(A1);Figure,subplot(1,4,1),imshow(uint8(A1));H=size(A1);title('原像')A2(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,1:H(2),1:H(3));%垂直镜像subplot(1,4,2),imshow(uint8(A2));title('垂直镜像')A3(1:H(1),1:H(2),1:H(3))=A1(1:H(1),H(2):-1:1,1:H(3));%水平镜像subplot(1,4,3),imshow(uint8(A3));title('水平镜像')A4(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,H(2):-1:1,1:H(3));%对角镜像subplot(1,4,4),imshow(uint8(A4));title('对角镜像')剪切A1=imread('19.jpg');A2=imcrop(A1,[75 68 100 110]);figuresubplot(1,2,1),imshow(A1);title('原像')subplot(1,2,2),imshow(A2);title('剪切后像')实验五阈值分割A=imread('19.jpg');figuresubplot(1,4,1),imshow(A);title('原图像')B=im2bw(A,91/255);subplot(1,4,2),imshow(B);title('阈值91的图像')C=im2bw(A,71/255);subplot(1,4,3),imshow(C);title('阈值71的图像')D=im2bw(A,140/255);subplot(1,4,4),imshow(D);title('阈值140的图像')边缘检测I=imread('19.jpg');A=rgb2gray(I);figuresubplot(1,4,1),imshow(A);title('原图像')B=edge(A,'sobel',0.1);%edge边缘检测函数subplot(1,4,2),imshow(B);title('sobel算子检测')C=edge(A,'roberts',0.1);%0.1为门限subplot(1,4,3),imshow(C);title('roberts算子检测')D=edge(A,'prewitt',0.1);subplot(1,4,4),imshow(D);title('prewitt算子检测')所谓数字图像处理[7]就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。
实验一MATLAB数字图像处理初步
![实验一MATLAB数字图像处理初步](https://img.taocdn.com/s3/m/885c2e3cbdd126fff705cc1755270722192e59a0.png)
实验一MATLAB数字图像处理初步实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验内容及步骤1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp 图像,设为flower.bmp。
7.用imread()读入图像:Lenna.jpg 和camema.jpg;8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;9.用figure,imshow()分别将Lenna.jpg和camema.jpg显示出来,观察两幅图像的质量。
10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow 显示出来观察图像的特征。
11.将每一步的函数执行语句拷贝下来,写入实验报告,并且将得到第3、9、10步得到的图像效果拷贝下来。
三、实验结果四、实验小结1、使用imread指令的时候,后边的地址不经要在括号内,还要注意:必须要有引号。
但是,把文件放在变量中间存储便可以,也一定不可以加引号。
2、whos 后边不需要加括号,只需要加空格就可以。
数字图像处理MATLAB程序【完整版】
![数字图像处理MATLAB程序【完整版】](https://img.taocdn.com/s3/m/76bad1582b160b4e767fcffe.png)
第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。
三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。
(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
专业:信息与计算科学班级:07级(1)班指导老师:汪太月老师姓名:刘莲学号:0641210224 实验室:K7-407
实验名称:Matlab图像工具箱的使用时间:2010.6.13
一、实验目的及要求
(一)实验目的
1、掌握MATLAB中常用的图像处理语句;
2、掌握图像的读入,信息查询以及显示;
3、掌握采用不同的模板对图像进行滤波;
4、掌握图像显示的调用格式;
(二)实验要求
1、练习MATLAB中常用的图像处理语句;
2、练习图像的读入,信息查询以及显示;
3、练习采用不同的模板对图像进行滤波;
4、练习图像显示的调用格式;
二、实验设备(环境)及要求
1、支持Intel Pentium Ⅲ及其以上CPU,内存256MB以上、硬盘1GB以上容量的微机;软件配有
Windows98/2000/XP操作系统及MATLAB软件;
2、实验过程中,务必分析实验结果,按要求写出实验报告。
(建议同时网上提交电子版实验报告:
yw6895@)
三、实验内容与步骤
1、练习MATLAB中常用的图像处理语句
Matlab中为用户提供了一些特殊的函数,用于从图像格式的文件中读写图像。
其中:a、读取图形文件格式的图像需要用imread函数;
b、写入一个图形文件格式的图像需要调用imwrite函数;
c、获取图形文件格式的图像的信息需要调用imfinfo、ind2rgb函数;
d、以Mat文件加载或保存矩阵数据用load、save函数;
e、显示加载到Matlab中的图像用image、imagesc.
此外,Matlab工具箱中还提供了图像转化函数,可以对图像类型进行转化,以达到某些图像处理工作的要求。
下面,我们将分别对这些常用的图像处理语句在Matlab中进行练习,并观察其输出结果:
(1)在Matlab中读入一个灰度图像,并利用相关函数进行图像处理,并显示结果。
Matlab程序如下:
I=imread('lena.bmp'); %读入原图像文件
imshow(I) %图像文件的显示
imwrite(I,'lena1.bmp'); %将原图像重命名为lena1.bmp,并保存图像
figure,imhist(I,225) %显示原图像的直方图,225为指定的灰度级数目
X=grayslice(I,64); %将原图像I均匀量化成64个等级,然后转化成索引色图像X
figure,imshow(X,pink(64)) %显示索引色图像,pink(64)产生一个64×3的调色板,色度为粉红运行结果如下:
500
1000
1500
2000
2500
3000
3500
050100150200250
(2)练习图像的读入,信息查询以及显示
Matlab程序如下:
load trees
image(50,80,X) %显示加载到Matlab中的图像
imwrite(X,map,'trees.tif'); %将图像以tif格式保存
inf=imfinfo('trees.tif') %图像文件信息的查询
BW=im2bw(X,map,0.4); %将索引图像转化成二值图像
figure,imshow(X,map) %显示图像
figure,imshow(BW)
运行结果如下:
50100150200250300350
100
150
200
250
300
%显示从Matlab中加载的图像文件的信息
inf = Filename: 'trees.tif'
FileModDate: '18-六月-2010 19:41:48'
FileSize: 75764
Format: 'tif'
FormatVersion: []
Width: 350
Height: 258
BitDepth: 8
ColorType: 'indexed'
FormatSignature: [73 73 42 0]
ByteOrder: 'little-endian'
NewSubFileType: 0
BitsPerSample: 8
Compression: 'PackBits'
PhotometricInterpretation: 'RGB Palette'
StripOffsets: [12x1 double]
SamplesPerPixel: 1
RowsPerStrip: 23
StripByteCounts: [12x1 double]
XResolution: 72
YResolution: 72
ResolutionUnit: 'Inch'
Colormap: [256x3 double]
PlanarConfiguration: 'Chunky'
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
Orientation: 1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: 255
MinSampleValue: 0
Thresholding: 1
2、练习采用不同的模板对图像进行滤波
Matlab程序如下:
I=imread('rice.png'); %读入图像文件rice.png
J=filter2([1 3;-1 -3],I); %用模板[1 3;-1 -3]对图像滤波
K=filter2([-3 -1;1 3],I); %用模板[-3 -1;1 3]对图像滤波
imshow(I) %原图像显示
figure,imshow(J,[]) %由于波波后图像灰度范围与滤波之前不同,所以用[]作为参考
figure,imshow(K,[]) %用另一个模板得到的滤波后的图像显示
运行结果如下:
3、练习图像显示的调用格式
Matlab中不同类型的图像显示方法也不同。
从1和2的练习中,我们可以看到,在Matlab中,可以用imshow(I)这种调用格式显示灰度图像,用image(x,y,X)显示索引图像,用imshow(RGB)显示真彩色图像等。
在此,我们对其中的部分图像显示的调用格式进行练习。
Matlab程序如下:
%在Matlab中显示多幅索引图像
[X1,map1]=imread('clown.tif'); %读入原图像
[X2,map2]=imread('forest.tif');
[X3,map3]=imread('lena.tif'); %imshow函数显示图像(作为与subimage函数显示的图像的参照,利于比较分析)
subplot(1,3,1),imshow(X1,map1)
subplot(1,3,2),imshow(X2,map2)
subplot(1,3,3),imshow(X3,map3)
figure(2);
%subimage函数与subplot结合使用,在一个图形中显示多个图像
subplot(1,3,1),subimage(X1,map1)
subplot(1,3,2),subimage(X2,map2)
subplot(1,3,3),subimage(X3,map3)
运行结果如下:
100200300
100
200
200400
100
200
300
100200300400500
100
200
300
400
500
由图可知,在imshow和subimage函数分别与subplot函数结合显示图像的过程中,比较最后结果,除了最后读入的lena图像的显示结果是一样的,其他图像均有偏差,且subimage函数所显示的输出图像是正确的,而imshow函数在多图像的显示中出现了失真。
我们还可以两个图像的显示,四个图像的显示等多图显示的过程中,对imshow和subimage函数进行比较,得到的结果也是一样的。
因此,我们可以推测,subimage函数与subplot函数结合使用,是在多图显示中不出现较大失真的较好的且可行的方法。
当然,这只是一种推测,要得出结论,还需进一步验证。
结
论
在本次实验中,通过对Matlab中常用图像处理函数和Matlab工具箱中提供的对图像进行预处理的函数的练习,掌握了有关图像处理常用的语句,也熟悉了Matlab在进行图
像处理时的一些技巧,并能通过图像处理结果,对各函数在图像处理中的优缺点进行比较,收获较多,基本达到实验目的。
2010年 4 月 2 日教师
批阅
年月日。