用matlab实现数字图像处理几个简单例子
数字图像处理MATLAB程序【完整版】

第一部分数字图像处理实验一图像的点运算实验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数字数字图像处理函数汇总:1、数字数字图像的变换①fft2:fft2函数用于数字数字图像的二维傅立叶变换,如:i=imread('104_8.tif');j=fft2(i);②ifft2::ifft2函数用于数字数字图像的二维傅立叶反变换,如:i=imread('104_8.tif');j=fft2(i);k=ifft2(j);2、模拟噪声生成函数和预定义滤波器①imnoise:用于对数字数字图像生成模拟噪声,如:i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声②fspecial:用于产生预定义滤波器,如:h=fspecial('sobel');%sobel水平边缘增强滤波器h=fspecial('gaussian');%高斯低通滤波器h=fspecial('laplacian');%拉普拉斯滤波器h=fspecial('log');%高斯拉普拉斯(LoG)滤波器h=fspecial('average');%均值滤波器2、数字数字图像的增强①直方图:imhist函数用于数字数字图像的直方图显示,如:i=imread('104_8.tif');imhist(i);②直方图均化:histeq函数用于数字数字图像的直方图均化,如:i=imread('104_8.tif');j=histeq(i);③对比度调整:imadjust函数用于数字数字图像的对比度调整,如:i=imread('104_8.tif');j=imadjust(i,[0.3,0.7],[]);④对数变换:log函数用于数字数字图像的对数变换,如:i=imread('104_8.tif');j=double(i);k=log(j);⑤基于卷积的数字数字图像滤波函数:filter2函数用于数字数字图像滤波,如:i=imread('104_8.tif');h=[1,2,1;0,0,0;-1,-2,-1];j=filter2(h,i);⑥线性滤波:利用二维卷积conv2滤波, 如:i=imread('104_8.tif');h=[1,1,1;1,1,1;1,1,1];h=h/9;j=conv2(i,h);⑦中值滤波:medfilt2函数用于数字数字图像的中值滤波,如:i=imread('104_8.tif');j=medfilt2(i);⑧锐化(1)利用Sobel算子锐化数字数字图像, 如: i=imread('104_8.tif');h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子j=filter2(h,i);(2)利用拉氏算子锐化数字数字图像, 如: i=imread('104_8.tif');j=double(i);h=[0,1,0;1,-4,0;0,1,0];%拉氏算子k=conv2(j,h,'same');m=j-k;3、数字数字图像边缘检测①sobel算子如:i=imread('104_8.tif');j = edge(i,'sobel',thresh)②prewitt算子如:i=imread('104_8.tif');j = edge(i,'prewitt',thresh)③roberts算子如:i=imread('104_8.tif');j = edge(i,'roberts',thresh)④log算子如:i=imread('104_8.tif');j = edge(i,'log',thresh)⑤canny算子如:i=imread('104_8.tif');j = edge(i,'canny',thresh)⑥Zero-Cross算子如:i=imread('104_8.tif');j = edge(i,'zerocross',thresh)4、形态学数字数字图像处理①膨胀:是在二值化数字数字图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:a=imread('104_7.tif'); %输入二值数字数字图像b=[0 1 0;1 1 1;0 1 0];c=imdilate(a,b);②腐蚀:函数imerode执行腐蚀,如:a=imread('104_7.tif'); %输入二值数字数字图像b=strel('disk',1);c=imerode(a,b);③开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:a=imread('104_8.tif');b=strel('square',2);c=imopen(a,b);④闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:a=imread('104_8.tif');b=strel('square',2);c=imclose(a,b);数字数字图像增强1. 直方图均衡化的Matlab 实现1.1 imhist 函数功能:计算和显示数字数字图像的色彩直方图格式:imhist(I,n)imhist(X,map)说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引色数字数字图像X 的直方图,map 为调色板。
数字图像处理在MATLAB中的应用实例

数字图像处理在MATLAB中的应用实例数字图像处理是计算机科学和工程中一个重要的领域,它涉及图像获取、图像处理、图像分析和图像显示等方面。
近年来,随着计算机技术的迅猛发展,数字图像处理在各个领域得到了广泛的应用。
本文将以MATLAB为工具,介绍数字图像处理在实际应用中的一些例子,并探讨其中的算法和原理。
首先,我们将从图像滤波的应用例子开始。
图像滤波是指对图像中的噪声进行抑制或者对图像进行平滑处理的方法。
在MATLAB中,有多种滤波器可以使用,例如均值滤波器、中值滤波器和高斯滤波器等。
在医学影像处理中,图像滤波经常用于增强图像的质量,减少噪声的干扰。
在这里,我们以平滑算法为例,介绍如何使用MATLAB进行图像滤波。
平滑算法是一种常用的图像处理技术,它通过利用像素点周围邻域像素的灰度值来估计该像素点的灰度值,从而达到平滑图像的效果。
在MATLAB中,可以使用conv2函数来实现平滑滤波。
下面是一个简单的示例代码:```I = imread('image.jpg');h = ones(5,5)/25;I_smooth = conv2(I, h, 'same');imshow(I_smooth);```其中,I是输入的图像,h是一个5x5的平滑滤波器,I_smooth是滤波后的图像。
通过改变滤波器的大小和权重,可以得到不同程度的平滑效果。
除了图像滤波,数字图像处理还有许多其他的应用。
例如,图像分割是将图像分成不同的区域,以便更好地分析和理解图像内容。
在MATLAB中,有许多图像分割的算法可以使用,如基于阈值的分割、基于边缘的分割和基于区域的分割等。
以下是一个应用基于阈值的分割算法的示例代码:```I = imread('image.jpg');I_gray = rgb2gray(I);level = graythresh(I_gray);BW = imbinarize(I_gray, level);imshow(BW);```在这个例子中,首先将彩色图像转换为灰度图像,然后使用graythresh函数自动计算一个合适的阈值,最后使用imbinarize函数将图像二值化,并显示分割结果。
数字图像处理及matlab实现

THANKS
05 数字图像处理的应用案例
医学影像处理
1 2 3
医学影像诊断
数字图像处理技术可以用于医学影像的预处理、 增强、分割和识别,帮助医生更准确地诊断疾病。
医学图像重建
通过数字图像处理技术,可以从低质量的医学图 像中重建出高质量的图像,提高医学影像的清晰 度和诊断价值。
医学图像配准与融合
数字图像处理技术可以实现不同模态医学图像之 间的配准与融合,提供更全面的医学信息。
离散余弦变换
将图像从空间域转换到余弦函数构成的系数矩阵,用于数据压缩 和去噪。
Matlab中的图像恢复实现
超分辨率
通过多幅低分辨率图像合成一幅高分辨率图 像,提高图像的分辨率。
去噪
利用各种滤波技术去除图像中的噪声,恢复 原始图像。
失真校正
对由于拍摄、传输等原因造成的图像失真进 行校正,提高图像质量。
数字图像处理及 Matlab实现
目录
Contents
• 数字图像处理基础 • Matlab基础 • 数字图像处理技术 • Matlab在数字图像处理中的应用 • 数字图像处理的应用案例
01 数字图像处理基础
图像的数字化
总结词
将连续的图像转化为离散的像素点阵列。
详细描述
通过将连续的图像转化为离散的像素点阵列,数字图像处理能够将图像信息转 化为计算机能够处理的数字信息。每个像素点由其位置和灰度值表示,形成数 字图像。
图像的灰度级别
总结词
描述像素的亮度级别。
详细描述
图像的灰度级别决定了像素的亮度范围。灰度级别越高,图像的亮度范围越丰富, 细节表现力越强。常见的灰度级别有256级(0-255)和16级(0-15)。
用matlab数字图像处理四个实验

数字图像处理实验指导书目录实验一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 图像的采样和量化根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类:➢亮度图像(Intensity images)➢二值图像(Binary images)➢索引图像(Indexed images)➢RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
Matlab技术的实际应用案例解析

Matlab技术的实际应用案例解析随着计算机技术的发展,Matlab作为一种高级技术语言,被广泛应用于多个领域。
无论是在科研领域还是工程实践中,Matlab都扮演着重要的角色。
本文将通过几个实际应用案例,探讨Matlab技术在不同领域的应用,以期给读者提供一些启示和参考。
一、图像处理领域图像处理是Matlab的一项重要应用领域。
利用Matlab提供的强大的图像处理工具箱,可以实现各种功能,例如图像增强、滤波、分割和识别等。
以下将介绍一个实际应用案例。
案例一:肿瘤图像分割肿瘤图像的分割对于医学诊断非常关键。
在某医院的研究中,研究人员利用Matlab进行了肿瘤图像的分割工作。
首先,他们先对肿瘤图像进行预处理,包括降噪和增强等操作。
然后,利用Matlab提供的图像分割算法,将肿瘤与周围组织分离出来。
最后,通过对分割后的图像进行计算,可以得到肿瘤的大小、形状等信息,为医生提供诊断依据。
二、信号处理领域信号处理是Matlab的另一个重要应用领域。
通过利用Matlab提供的信号处理工具箱,可以实现信号的滤波、谱分析、峰值检测等功能。
以下将介绍一个实际应用案例。
案例二:语音信号增强在通信领域,语音信号是一种常见的信号类型。
在某通信公司的项目中,研发团队利用Matlab对语音信号进行增强。
首先,他们通过Matlab提供的滤波器设计算法,设计了一种高效的降噪滤波器。
然后,他们利用该滤波器对采集到的语音信号进行滤波处理,去除噪声成分。
最后,通过对处理后的语音信号进行主观听感和客观评价,证明了该算法的有效性。
三、控制系统领域Matlab在控制系统领域的应用也非常广泛。
通过Matlab提供的控制系统工具箱,可以进行控制系统的建模、仿真和优化等操作。
以下将介绍一个实际应用案例。
案例三:智能交通信号优化在城市交通系统中,智能交通信号优化是一个重要的研究方向。
在某城市的交通管理局的项目中,研究人员利用Matlab进行了智能交通信号优化的仿真研究。
MATLAB在图像识别与处理中的应用案例

MATLAB在图像识别与处理中的应用案例图像识别与处理是计算机视觉领域的重要研究方向,它的应用广泛涉及到人脸识别、目标检测、医学图像处理等众多领域。
而MATLAB作为一种强大的工具箱,提供了丰富的图像处理与机器学习算法,成为学术界和工业界广泛使用的工具。
本文将通过几个应用案例,介绍MATLAB在图像识别与处理中的典型应用。
一、人脸识别人脸识别是近年来备受关注的研究领域,它在安防、刑侦、身份验证等方面发挥着重要作用。
而MATLAB提供了强大的图像处理和模式识别算法,可以帮助实现人脸识别功能。
其中,主成分分析(PCA)和线性判别分析(LDA)是常用的人脸识别算法之一。
以PCA为例,其主要思想是通过降维技术将高维图像数据映射到低维空间,然后利用训练样本的统计特性建立模型,并通过计算待识别人脸与模型之间的距离来进行识别。
通过MATLAB的图像处理工具箱,可以提取图像的特征,进而进行人脸识别。
此外,MATLAB还提供了许多其他的人脸识别算法,如基于支持向量机(SVM)和卷积神经网络(CNN)等,可以根据具体需求选择适合的算法。
二、目标检测目标检测是计算机视觉中另一个重要的研究领域,其在自动驾驶、智能监控等方面有着广泛的应用。
而MATLAB提供了强大的图像处理和深度学习工具箱,可以帮助实现目标检测功能。
其中,基于特征的方法和基于深度学习的方法是目标检测的两种常用方法。
基于特征的方法中,常用的算法有Haar特征和HOG(方向梯度直方图)特征。
MATLAB提供了相应的函数和工具箱,可以方便地提取图像的特征,并结合分类器进行目标检测。
基于深度学习的方法中,常用的算法有Fast R-CNN、YOLO (You Only Look Once)和SSD(Single Shot MultiBox Detector)等。
通过MATLAB的深度学习工具箱,可以进行模型训练和预测,实现准确高效的目标检测。
三、医学图像处理医学图像处理是医学影像学领域的核心技术之一,对于疾病的诊断和治疗具有重要意义。
用MATLAB做的图像基本处理

用MATLAB做的图像基本处理MATLAB是一种用于科学计算、数据分析和可视化的编程语言和开发环境。
它在许多领域中被广泛地使用,包括工程、物理学、计算机科学等。
通过MATLAB,可以方便地对图像进行处理和分析。
本文介绍了如何使用MATLAB对图像进行基本处理。
这些处理包括图像的读取、显示、缩放、裁剪、旋转、翻转、颜色转换、灰度化、二值化、滤波等。
图像的读取和显示在MATLAB中,可以使用imread函数读取图像。
例如,下面的代码可以读取一张名为test.jpg的图像:I = imread('test.jpg');读取图像后,可以使用imshow函数显示图像。
例如,下面的代码可以显示上面读取的图像:imshow(I);图像的缩放和裁剪使用MATLAB可以方便地对图像进行缩放和裁剪。
缩放可以使用imresize函数,裁剪可以使用imcrop函数。
例如,下面的代码可以将图像I缩放为原来的一半并显示缩放后的图像:I2 = imresize(I, 0.5);imshow(I2);下面的代码可以将图像I的左上角截取出来并显示:J = imcrop(I, [11 size(I,2)/2 size(I,1)/2]);imshow(J);图像的旋转和翻转使用MATLAB可以方便地对图像进行旋转和翻转。
旋转可以使用imrotate函数,翻转可以使用flip函数。
例如,下面的代码可以将图像I逆时针旋转45度并显示旋转后的图像:I3 = imrotate(I, -45);imshow(I3);下面的代码可以将图像I水平翻转并显示翻转后的图像:I4 = flip(I, 2);imshow(I4);图像的颜色转换和灰度化使用MATLAB可以方便地对图像进行颜色转换和灰度化。
颜色转换可以使用imresize函数,灰度化可以使用rgb2gray函数。
例如,下面的代码可以将彩色图像I转换为灰度图像并显示灰度图像:I5 = rgb2gray(I);imshow(I5);图像的二值化和滤波使用MATLAB可以方便地对图像进行二值化和滤波。
利用Matlab进行图像处理与图像识别的实例

利用Matlab进行图像处理与图像识别的实例引言:在现代科技的发展中,图像处理和图像识别成为了热门的研究领域。
利用计算机视觉技术对图像进行处理和分析,可以广泛应用于医学影像、安防监控、人脸识别等领域。
而Matlab作为一款功能强大的科学计算软件,提供了丰富的图像处理和识别工具箱,极大地便利了研究者在图像领域的工作。
本文将通过几个实例来介绍如何利用Matlab进行图像处理和图像识别。
一、Matlab中的图像处理工具箱Matlab提供了大量的图像处理函数和工具箱,方便用户进行图像的处理和分析。
其中,图像处理工具箱是最常用的一部分。
通过该工具箱,用户可以对图像进行滤波、增强、分割等操作。
例如,可以用imfilter函数进行均值滤波,用imadjust函数对图像进行直方图均衡化。
图像处理工具箱的使用非常简单,只需要调用相应的函数并传入参数即可。
二、实例1:图像滤波图像滤波是图像处理中常用的操作之一。
通过滤波可以去除图像中的噪声或者增强图像的细节。
在Matlab中,可以使用不同的滤波函数来实现不同的效果。
下面以均值滤波和中值滤波为例来介绍。
1. 均值滤波均值滤波是一种简单的线性滤波方法。
在Matlab中,可以使用imfilter函数来进行均值滤波。
例如,对一张灰度图像进行均值滤波的代码如下:```img = imread('image.jpg');h = fspecial('average', [3 3]);filtered_img = imfilter(img, h, 'replicate');```上述代码中,imread函数用于读取图像,fspecial函数用于创建一个3x3的均值滤波模板,imfilter函数用于对图像进行滤波操作。
'replicate'参数表示在边界处使用边界像素值进行补充。
2. 中值滤波中值滤波是一种非线性滤波方法,常用于去除椒盐噪声。
数字图像处理技术的MATLAB实现案例

数字图像处理技术的MATLAB实现案例MATLAB材料科学图片处理案例I = imread('bag.png');%读入系统自带的图片bag.pngfigure, imshow(I);%创建图形窗口,在窗口中显示读入的图像E = entropyfilt(I);Eim = mat2gray(E);imshow(Eim);%BW1 = im2bw(Eim, .8);imshow(BW1);%figure, imshow(I);%创建新图形窗口BWao = bwareaopen(BW1,2000);%这里可以看到BWao是BW+area+open的缩写imshow(BWao); %nhood = true(9);closeBWao = imclose(BWao,nhood);%对前面的开启运算得到的图像再进行闭合运算imshow(closeBWao)%roughMask = imfill(closeBWao,'holes');%填充孔洞imshow(roughMask);figure, imshow(I);I2 = I;I2(roughMask) = 0;%图像透过遮罩,遮罩图像黑色部分可以透过去,白色部分透不过imshow(I2);E2 = entropyfilt(I2);E2im = mat2gray(E2);% 将矩阵转换成灰度图像imshow(E2im);BW2 = im2bw(E2im,graythresh(E2im));imshow(BW2)figure, imshow(I);mask2 = bwareaopen(BW2,1000);imshow(mask2);texture1 = I;%将图像I复制为texture1texture1(~mask2) = 0;%这里有个运算符号~,逻辑非,作用是将mask2黑白颠倒texture2 = I;%将图像I复制为texture2texture2(mask2) = 0;%在MA TLAB中,~A代表“取逻辑非”的意思。
MATLAB图像处理技术与实例展示

MATLAB图像处理技术与实例展示引言图像处理是一门涉及数字图像处理和计算机视觉的重要学科,它在日常生活中的应用范围非常广泛。
MATLAB作为一种强大的数值计算和可视化工具,提供了许多图像处理的函数和工具箱,能够帮助实现各种图像处理任务。
本文将介绍一些常用的MATLAB图像处理技术,并提供相应的实例展示。
一、图像加噪与去噪图像加噪是指在原始图像上添加一些随机扰动,使原始图像的细节模糊或失真。
在实际应用中,图像往往会受到各种因素的影响,如传感器噪声、压缩噪声等。
为了恢复原始图像的质量,需要进行去噪处理。
MATLAB提供了许多图像加噪和去噪的函数和工具箱。
例如,使用imnoise函数可以在图像上添加高斯噪声、椒盐噪声等。
而使用imnlmfilt函数可以实现非局部均值去噪算法,通过对邻域像素的均值进行补偿,可以有效降低噪声。
实例展示:下面以一个简单的实例展示图像去噪的过程。
首先,我们使用imnoise函数在一张原始图像上添加高斯噪声:```MATLABI = imread('original_image.jpg');noisy_image = imnoise(I, 'gaussian', 0, 0.02);```然后,我们使用imnlmfilt函数对添加噪声的图像进行去噪处理:```MATLABdenoised_image = imnlmfilt(noisy_image);```最后,我们可以将原始图像、添加噪声的图像和去噪后的图像进行对比,以评估去噪效果。
二、图像增强图像增强是指通过一系列的处理方法,改善图像的质量和视觉效果,使图像更加清晰、鲜艳。
图像增强的方法有很多,其中包括直方图均衡化、对比度增强、锐化等。
在MATLAB中,可以使用histeq函数实现直方图均衡化,通过重新分布图像灰度级的分布,增强图像的对比度和细节。
而使用imadjust函数可以进行对比度增强,通过调整图像对比度和亮度来增强图像的视觉效果。
图像处理实例(含Matlab代码)

1. 图像一的细胞计数
将该图形进行一系列处理,计算得到途中清晰可见细胞的个数。 转为灰度图,二值化,中值滤波,图像取反,计数,再次中值滤 波,再次计数
1. 图像一的细胞计数
clear;close all; Image = imread('1.jpg'); figure,imshow(Image),title('原图'); Image=rgb2gray(Image); figure,imshow(Image),title('灰度图'); Theshold = graythresh(Image); Image_BW = im2bw(Image,Theshold); Reverse_Image_BW22=~Image_BW; figure,imshow(Image_BW),title('二值化图像'); Image_BW_medfilt= medfilt2(Image_BW,[3 3]); figure,imshow(Image_BW_medfilt),title('中值滤波后的二值化图像'); Reverse_Image_BW = ~Image_BW_medfilt; figure,imshow(Reverse_Image_BW),title('图象取反'); Image_BW_medfilt2= medfilt2(Reverse_Image_BW,[20 20]); figure,imshow(Image_BW_medfilt2),title('第二次中值滤波的二值化图像'); [Label, Number]=bwlabel(Image_BW_medfilt,8);Number [Label, Number]=bwlabel(Image_BW_medfilt2,8);Number
matlab图像处理的几个实例

Matlab图像处理的几个实例(初学者用)1.图像的基本信息及其加减乘除clear,clc;P=imread('yjx.jpg');whos PQ=imread('dt.jpg');P=im2double(P);Q=im2double(Q);gg1=im2bw(P,0.3);gg2=im2bw(P,0.5);gg3=im2bw(P,0.8);K=imadd(gg1,gg2);L=imsubtract(gg2,gg3);cf=immultiply(P,Q);sf=imdivide(Q,P);subplot(421),imshow(P),title('郁金香原图');subplot(422),imshow(gg1),title('0.3');subplot(423),imshow(gg2),title('0.5');subplot(424),imshow(gg3),title('0.8');subplot(425),imshow(K),title('0.3+0.5');subplot(426),imshow(L),title('0.5-0.3');subplot(427),imshow(cf),title('P*Q');subplot(428),imshow(sf),title('P/Q');2.图像缩放clear,clc;I=imread('dt.jpg');A=imresize(I,0.1,'nearest');B=imresize(I,0.4,'bilinear');C=imresize(I,0.7,'bicubic');D=imresize(I,[100,200]);F=imresize(I,[400,100]);figuresubplot(321),imshow(I),title('原图');subplot(322),imshow(A),title('最邻近插值');subplot(323),imshow(B),title('双线性插值');subplot(324),imshow(C),title('二次立方插值');subplot(325),imshow(D),title('水平缩放与垂直缩放比例为2:1'); subplot(326),imshow(F),title('水平缩放与垂直缩放比例为1:4');灰度变换、直方图变换clear,clc;fg=imread('fg.jpg');zl=imread('zl.jpg');hfg=rgb2gray(fg);fg1=double(hfg);out1=255*(fg1/255).^0.7;out1(find(out1>255))=255;fg1=uint8(fg1);out1=uint8(out1);img=rgb2gray(zl);[harm,x]=imhist(img);J=histeq(hfg,harm);figuresubplot(421),imshow(fg1),title('复古灰度图');subplot(422),imhist(fg1),title('复古灰度图的直方图');subplot(423),imshow(out1),title('对复古灰度图像进行幂次变换'); subplot(424),imhist(out1),title('幂次变换图像的直方图');subplot(425),imshow(img),title('朱莉');subplot(426),imhist(img),title('朱莉图像对应的直方图');subplot(427),imshow(J),title('直方图变换后的复古图');subplot(428),imhist(J),title('直方图变换后的复古图对应的直方图');傅里叶变换、频域滤波1.傅里叶变换clear,clc;rgb=imread('zl.jpg');rgb=imresize(rgb,0.7,'bilinear');rgb=im2double(rgb);fR=rgb(:,:,1);fG=rgb(:,:,2);fB=rgb(:,:,3);flyfR=fft2(fR);flyfG=fft2(fG);flyfB=fft2(fB);Frgb(:,:,1)=flyfR;Frgb(:,:,2)=flyfG;Frgb(:,:,3)=flyfB;tzR=fftshift(flyfR);tzG=fftshift(flyfG);tzB=fftshift(flyfB);tzF(:,:,1)=tzR;tzF(:,:,2)=tzG;tzF(:,:,3)=tzB;iflyfR=ifft2(flyfR);iflyfG=ifft2(flyfG);iflyfB=ifft2(flyfB);out(:,:,1)=iflyfR;out(:,:,2)=iflyfG;out(:,:,3)=iflyfB;figuresubplot(221),imshow(rgb),title('原图');subplot(222),imshow(Frgb),title('图像频谱');subplot(223),imshow(tzF),title('调整中心后的图像频谱'); subplot(224),imshow(out),title('逆变换得到的原图');2.频域滤波clear,clc;I=rgb2gray(imread('ml.jpg'));J=imnoise(I,'gaussian',0.1);Jzz1=medfilt2(J,[3 3]);Jzz2=medfilt2(J,[10 10]);XJ=imnoise(I,'salt & pepper');f=im2double(XJ);g=fft2(f);g=fftshift(g);[M,N]=size(g);nn=2;d0=50;m=fix(M/2);n=fix(M/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h1=1/(1+0.414*(d/d0)^(2*nn));result1(i,j)=h1*g(i,j);endendresult1=ifftshift(result1);J2=ifft2(result1);J3=im2uint8(real(J2));figuresubplot(231),imshow(I),title('原图的灰度图像');subplot(232),imshow(J),title('加高斯噪声');subplot(233),imshow(Jzz1),title('模板3*3中值滤波后的图像'); subplot(234),imshow(Jzz2),title('模板10*10中值滤波后的图像'); subplot(235),imshow(J3),title('低通滤波图');彩色图像处理clear,clc;rgb=imread('yjx.jpg');fR=rgb(:,:,1);fG=rgb(:,:,2);fB=rgb(:,:,3);R=rgb;R(:,:,[2 3])=0;G=rgb;G(:,:,[1 3])=0;B=rgb;B(:,:,[1 2])=0;yiq=rgb2ntsc(rgb);fY=yiq(:,:,1);fI=yiq(:,:,2);fQ=yiq(:,:,3);fR=histeq(fR,256);fG=histeq(fG,256);fB=histeq(fB,256);RGB=cat(3,fR,fG,fB);figuresubplot(341),imshow(rgb),title('原图');subplot(342),imshow(R),title('图像的红色分量');subplot(343),imshow(G),title('图像的绿色分量');subplot(344),imshow(B),title('图像的蓝色分量');subplot(345),imshow(yiq),title('NTSC彩色空间');subplot(346),imshow(fY),title('亮度');subplot(347),imshow(fI),title('色调');subplot(348),imshow(fQ),title('饱和度');subplot(349),imshow(RGB),title('rgb均衡化后的彩色图像');原图最邻近插值双线性插值二次立方插值水平缩放与垂直缩放比例为2:1水平缩放与垂直缩放比例为1:4郁金香原图0.30.50.80.3+0.50.5-0.3P*Q P/Q原图图像的红色分量图像的绿色分量图像的蓝色分量NTSC 彩色空间亮度色调饱和度rgb 均衡化后的彩色图像原图图像频谱调整中心后的图像频谱逆变换得到的原图word 格式-可编辑-感谢下载支持原图的灰度图像加高斯噪声模板3*3中值滤波后的图像模板10*10中值滤波后的图像低通滤波图。
在MATLAB中进行图像处理的方法

在MATLAB中进行图像处理的方法引言图像处理是一门研究如何对数字图像进行分析、处理和识别的学科。
在现代社会中,图像处理已经广泛应用于各个领域,如医学影像、电子商务和计算机视觉等。
MATLAB是一种强大的数值计算环境和编程语言,被广泛用于图像处理领域。
在本文中,我们将介绍在MATLAB中进行图像处理的一些常见方法。
一、图像读取与显示在MATLAB中,可以使用imread函数读取图像文件,并使用imshow函数显示图像。
例如,可以使用以下代码读取并显示一张图像:```matlabimg = imread('image.jpg');imshow(img);```二、图像增强图像增强是指通过改变图像的外观或质量,以提高图像的观感和可识别性。
在MATLAB中,有多种方法用于图像增强。
下面介绍其中的几种方法:1. 灰度转换灰度转换是将彩色图像转换为灰度图像的过程。
在MATLAB中,可以使用rgb2gray函数将彩色图像转换为灰度图像。
例如,可以使用以下代码实现灰度转换:```matlabgray_img = rgb2gray(img);imshow(gray_img);```2. 直方图均衡化直方图均衡化是一种常用的图像增强方法,用于提高图像的对比度。
在MATLAB中,可以使用histeq函数实现直方图均衡化。
例如,可以使用以下代码实现直方图均衡化:```matlabeq_img = histeq(gray_img);imshow(eq_img);```3. 锐化锐化是一种增强图像边缘和细节的方法。
在MATLAB中,可以使用imsharpen 函数对图像进行锐化处理。
例如,可以使用以下代码实现图像锐化:```matlabsharp_img = imsharpen(img);imshow(sharp_img);```三、图像滤波图像滤波是指对图像进行平滑处理以去除噪声或减小图像细节的过程。
在MATLAB中,有多种滤波方法可供选择。
用matlab实现数字图像处理几个简单例子

实验报告实验一图像的傅里叶变换(旋转性质)实验二图像的代数运算实验三filter2实现均值滤波实验四图像的缩放朱锦璐04085122实验一图像的傅里叶变换(旋转性质)一、实验内容对图(1.1)的图像做旋转,观察原图的傅里叶频谱和旋转后的傅里叶频谱的对应关系。
图(1.1)二、实验原理首先借助极坐标变换x=rcosθ,y=rsinθ,u=wcosϕ,v=wsinϕ,,将f(x,y)和F(u,v)转换为f(r,θ)和F(w,ϕ).f(x,y) <=> F(u,v)f(rcosθ,rsinθ)<=> F(wcosϕ,wsinϕ)经过变换得f( r,θ+θ。
)<=>F(w,ϕ+θ。
)上式表明,对f(x,y)旋转一个角度θ。
对应于将其傅里叶变换F(u,v)也旋转相同的角度θ。
F(u,v)到f(x,y)也是一样。
三、实验方法及程序选取一幅图像,进行离散傅里叶变换,在对其进行一定角度的旋转,进行离散傅里叶变换。
>> I=zeros(256,256); %构造原始图像I(88:168,120:136)=1; %图像范围256*256,前一值是纵向比,后一值是横向比figure(1);imshow(I); %求原始图像的傅里叶频谱J=fft2(I);F=abs(J);J1=fftshift(F);figure(2)imshow(J1,[5 50])J=imrotate(I,45,'bilinear','crop'); %将图像逆时针旋转45°figure(3);imshow(J) %求旋转后的图像的傅里叶频谱J1=fft2(J);F=abs(J1);J2=fftshift(F);figure(4)imshow(J2,[5 50])四、实验结果与分析实验结果如下图所示(1.2)原图像(1.3)傅里叶频谱(1.4)旋转45°后的图像(1.5)旋转后的傅里叶频谱以下为放大的图(1.6)原图像(1.7)傅里叶频谱(1.8)旋转45°后的图像(1.9)旋转后的傅里叶频谱由实验结果可知1、从旋转性质来考虑,图(1.8)是图(1.6)逆时针旋转45°后的图像,对比图(1.7)和图(1.9)可知,频域图像也逆时针旋转了45°2、从尺寸变换性质来考虑,如图(1.6)和图(1.7)、图(1.8)和图(1.9)可知,原图像和其傅里叶变换后的图像角度相差90°,由此可知,时域中的信号被压缩,到频域中的信号就被拉伸。
MATLAB图像处理(实例+代码)

MATLAB图像处理(1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %测量交角(线性拟合的思想)%Step 1: Load image%Step 2: Extract the region of interest%Step 3: Threshold the image%Step 4: Find initial point on each boundary%Step 5: Trace the boundaries%Step 6: Fit lines to the boundaries%Step 7: Find the angle of intersection%Step 8: Find the point of intersection%Step 9: Plot the results.clc;clear;close all;%Step 1: Load imageRGB = imread('gantrycrane.png');imshow(RGB);%Step 2: Extract the region of interest% pixel information displayed by imviewstart_row = 34;start_col = 208;cropRGB = RGB(start_row:163, start_col:400, :);figure, imshow(cropRGB)% Store (X,Y) offsets for later use; subtract 1 so that each offset will% correspond to the last pixel before the region of interestoffsetX = start_col-1;offsetY = start_row-1;%Step 3: Threshold the imageI = rgb2gray(cropRGB);threshold = graythresh(I);BW = im2bw(I,threshold);BW = ~BW; % complement the image (objects of interest must be white) figure, imshow(BW)%Step 4: Find initial point on each boundarydim = size(BW);% horizontal beamcol1 = 4;row1 = min(find(BW(:,col1)));% angled beamrow2 = 12;col2 = min(find(BW(row2,:)));%Step 5: Trace the boundariesboundary1 = bwtraceboundary(BW, [row1, col1], 'N', 8, 70);% set the search direction to counterclockwise, in order to trace downward. boundary2 = bwtraceboundary(BW, [row2, col2], 'E', 8, 90,'counter'); figure, imshow(RGB); hold on;% apply offsets in order to draw in the original imageplot(offsetX+boundary1(:,2),offsetY+boundary1(:,1),'g','LineWidth',2); plot(offsetX+boundary2(:,2),offsetY+boundary2(:,1),'g','LineWidth',2);%Step 6: Fit lines to the boundariesab1 = polyfit(boundary1(:,2), boundary1(:,1), 1);ab2 = polyfit(boundary2(:,2), boundary2(:,1), 1);%Step 7: Find the angle of intersectionvect1 = [1 ab1(1)]; % create a vector based on the line equationvect2 = [1 ab2(1)];dp = dot(vect1, vect2);% compute vector lengthslength1 = sqrt(sum(vect1.^2));length2 = sqrt(sum(vect2.^2));% obtain the larger angle of intersection in degreesangle = 180-acos(dp/(length1*length2))*180/pi%Step 8: Find the point of intersectionintersection = [1 ,-ab1(1); 1, -ab2(1)] \ [ab1(2); ab2(2)];% apply offsets in order to compute the location in the original,% i.e. not cropped, image.intersection = intersection + [offsetY; offsetX]%Step 9: Plot the results.inter_x = intersection(2);inter_y = intersection(1);% draw an "X" at the point of intersectionplot(inter_x,inter_y,'yx','LineWidth',2);text(inter_x-60, inter_y-30, [sprintf('%1.3f',angle),'{\circ}'],...'Color','y','FontSize',14,'FontWeight','bold');interString = sprintf('(%2.1f,%2.1f)', inter_x, inter_y);text(inter_x-10, inter_y+20, interString,...'Color','y','FontSize',14,'FontWeight','bold');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%检测一段圆弧的半径(圆形拟合)%Step 1: Read image%Step 2: Threshold the image%Step 3: Extract initial boundary point location%Step 4: Trace the boundaries%Step 5: Fit a circle to the boundary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%2006.6.23基于特征的与运算>> load imdemos dots box>> imshow(dots)>> figure,imshow(box)>> logical_and=box&dots;>> imshow(logical_and);>> [r,c]=find(logical_and);>> feature_and=bwselect(dots,c,r);>> figure,imshow(feature_and); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%利用逻辑运算,提取含有细胞核的细胞load imdemos bacteria;imshow(bacteria);bact_bw=(bacteria>=100);%figure,imshow(bact_bw);bact_bw=~bact_bw;figure,imshow(bact_bw); %直接二值取反figure,imshow(bact_bw)%细胞和细胞核重叠在一起,无法区分%进行Laplace算子滤波,突出核与胞的区别filtered=filter2(fspecial('laplacian'),bacteria);>> figure,imshow(filtered) %先拉氏滤波>> bact_granules=(filtered>-4);figure,imshow(bact_granules); %“-4”运算bact_granules=bact_granules&bact_bw; %特征与运算figure,imshow(bact_granules);erode_bw=erode(bact_bw); %%figure,imshow(erode_bw);nobord=imclearborder(erode_bw); %fill_bw=imfill(nobord,'holes');figure,imshow(fill_bw);%fill_bw=bwfill(erode_bw,'holes');%figure,imshow(fill_bw);bact_granules_0=(bact_granules==0); %判0运算的结果,等价与figure,imshow(bact_granules_0); %下边的取反运算!%bact_granules_anti=~bact_granules;%figure,imshow(bact_granules_anti);>> granules=fill_bw&bact_granules_0; %尽可能多地把“核”提取出来>> figure,imshow(granules)>> [r,c]=find(granules);>> result=bwselect(bact_bw,c,r);>> figure,imshow(bacteria);>> figure,imshow(result) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%2006.7.15%按顺序标记每一个连通区域clc;clear;close all;%Step 1: Read image%Step 2: Threshold the image%Step 3: Remove the noise%Step 4: Find the boundaries%Step 5: Determine which objects are round>> RGB = imread('pillsetc.png');>> imshow(RGB)>> I = rgb2gray(RGB);>> threshold = graythresh(I);>> bw = im2bw(I,threshold);>> bw = bwareaopen(bw,30);>> se = strel('disk',2);>> bw = imclose(bw,se);>> bw = imfill(bw,'holes');>> [B,L] = bwboundaries(bw,'noholes');>> figure,imshow(label2rgb(L, @jet, [.5 .5 .5]))>> hold on>> data=regionprops(L,'all');>> centr=[data.Centroid]; %标记在重心上>> nums=1:length(B); %需要标记的物体个数for k = 1:length(B)boundary = B{k};plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)signal=num2str(nums(k));text(centr(2*k-1),centr(2*k),signal) %按序标记物体endfor k=1:length(B) %画出每个区域的最小凸边形plot(data(k).ConvexHull(:,1),data(k).ConvexHull(:,2),'b','LineWidth',2) end>> stats = regionprops(L,'Area','Centroid');>> stats = regionprops(L,'Area','Centroid');threshold = 0.94;for k = 1:length(B)boundary = B{k};delta_sq = diff(boundary).^2;perimeter = sum(sqrt(sum(delta_sq,2)));area = stats(k).Area;metric = 4*pi*area/perimeter^2;metric_string = sprintf('%2.2f',metric);if metric > thresholdcentroid = stats(k).Centroid;plot(centroid(1),centroid(2),'ko');endtext(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',...'FontSize',14,'FontWeight','bold');end>> title(['Metrics closer to 1 indicate that ',...'the object is approximately round']);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%2006.7.17%果穗梗、花椒籽分离%d:\matlab7\toolbox\images\images\truesize.m*(308行)clear;close all;clc>> i=imread('huaj_600_rgb.tif');>> figure,imshow(i);>> ig=rgb2gray(i);>> imed=medfilt2(ig);>> imedcanny=edge(imed,'canny');>> se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(imedcanny,[se90 se0]);%>> figure,imshow(bwsdil)>> ifill=imfill(bwsdil,'holes');>> bwero=imerode(ifill,[se90 se0]);>> nosmall=bwareaopen(bwero,3000,4);>> nobord=imclearborder(nosmall,4);figure,imshow(nobord);>> [labeled,numobjects]=bwlabel(nobord,4);rgb_label=label2rgb(labeled,@spring,'c','shuffle');figure,imshow(rgb_label);mexdata=regionprops(labeled,'all');hold on;centr=[mexdata.Centroid]; %寻找重心位置nums=1:numobjects;for k = 1:numobjectssoli=mexdata(k).Solidity;soli_string=sprintf('%2.2f',soli); %等价于转字符串% signal=num2str(nums(k));signal=sprintf('%d',k); %直接使用打印语句打印序号text(centr(2*k-1),centr(2*k),signal) %按序标记物体text(centr(2*k-1)-30,centr(2*k)-30,soli_string) %标注每个Solidity值end%画最小凸多边形>> for k=1:numobjectsplot(mexdata(k).ConvexHull(:,1),mexdata(k).ConvexHull(:,2),...'b','Linewidth',2)endhold off;%作出Solidity值的分布图,以之选定阈值>> figure,hist([mexdata.Solidity],255)%只显示Solidity>0.92的物体的图像>> idx = find([mexdata.Solidity] > 0.95);>> nut = ismember(labeled,idx);>> figure,imshow(nut)>> [labnut,numnut]=bwlabel(nut,4);>> numnut %数出花椒籽的粒数>> %只显示Solidity<0.92的物体的图像idx = find([mexdata.Solidity] < 0.75);peduncle = ismember(labeled,idx);figure,imshow(peduncle)>> [labped,numped]=bwlabel(peduncle,4);>> numped %数出含果穗梗的花椒数>> %只显示无果穗梗的花椒图像idx = find([mexdata.Solidity]>=0.75&[mexdata.Solidity]<=0.95);pure = ismember(labeled,idx);figure,imshow(pure)>> [labpure,numpure]=bwlabel(pure,4);>> numpure %纯净花椒的粒数%分别对籽,皮,梗使用regionprops函数>> nutdata=regionprops(labnut,'all');>> peddata=regionprops(labped,'all');>> puredata=regionprops(labpure,'all'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%封装成一个函数function huaj();%对花椒图像进行处理imname=input('input an image name:','s');i=imread(imname);figure,imshow(i);ig=rgb2gray(i);imed=medfilt2(ig);imedcanny=edge(imed,'canny');se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(imedcanny,[se90 se0]);%figure,imshow(bwsdil)ifill=imfill(bwsdil,'holes');bwero=imerode(ifill,[se90 se0]);nosmall=bwareaopen(bwero,3000,4);nobord=imclearborder(nosmall,4);figure,imshow(nobord);[labeled,numobjects]=bwlabel(nobord,4);rgb_label=label2rgb(labeled,@spring,'c','shuffle');figure,imshow(rgb_label);mexdata=regionprops(labeled,'all');hold on;centr=[mexdata.Centroid]; %寻找重心位置nums=1:numobjects;for k = 1:numobjectssoli=mexdata(k).Solidity;soli_string=sprintf('%2.2f',soli); %等价于转字符串% signal=num2str(nums(k));signal=sprintf('%d',k); %直接使用打印语句打印序号text(centr(2*k-1),centr(2*k),signal) %按序标记物体text(centr(2*k-1)-30,centr(2*k)-30,soli_string) %标注每个Solidity值end%画最小凸多边形for k=1:numobjectsplot(mexdata(k).ConvexHull(:,1),mexdata(k).ConvexHull(:,2),...'b','Linewidth',2)endhold off;%作出Solidity值的分布图,以之选定阈值figure,hist([mexdata.Solidity],255)%只显示Solidity>0.92的物体的图像idx = find([mexdata.Solidity] > 0.92);nut = ismember(labeled,idx);figure,imshow(nut)[labnut,numnut]=bwlabel(nut,4);numnut %数出花椒籽的粒数%只显示Solidity<0.75的果穗梗图像idx = find([mexdata.Solidity] < 0.75);peduncle = ismember(labeled,idx);figure,imshow(peduncle)[labped,numped]=bwlabel(peduncle,4);numped %数出含果穗梗的花椒数%只显示无果穗梗的花椒果皮图像idx = find([mexdata.Solidity]>=0.75&[mexdata.Solidity]<=0.92);pure = ismember(labeled,idx);figure,imshow(pure)[labpure,numpure]=bwlabel(pure,4);numpure %纯净花椒的粒数%分别对籽,皮,梗使用regionprops函数nutdata=regionprops(labnut,'all');peddata=regionprops(labped,'all');puredata=regionprops(labpure,'all');%封装成一个函数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%2006.7.18%命令文件%rice_1.m>> i=imread('rice.png');>> imshow(i);>> background=imopen(i,strel('disk',15));>> i2=imsubtract(i,background);>> figure,imshow(i2);>> i3=imadjust(i2,stretchlim(i2),[0 1]);>> figure,imshow(i3);>> level=graythresh(i3);>> bw=im2bw(i3,level);>> figure,imshow(bw);>> [labeled,numobjects]=bwlabel(bw,4);%函数文件%rice.mfunction y=rice;str=input('enter a image name:','s');i=imread(str);imshow(i);background=imopen(i,strel('disk',15));i2=imsubtract(i,background);figure,imshow(i2);i3=imadjust(i2,stretchlim(i2),[0 1]);figure,imshow(i3);level=graythresh(i3);bw=im2bw(i3,level);figure,imshow(bw);[labeled,numobjects]=bwlabel(bw,4);label_rgb=label2rgb(labeled,@spring,'c','shuffle');y=label_rgb; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%用if-else-end结构来控制循环,使之跳出或中断for或while循环a(1)=1;a(2)=2;for i=2:50a(i+1)=a(i-1)+a(i);i=i+1;if a(i)>10000 %查找第一个大于10000的元素break %用if语句控制for循环endendi,a(i)%用递归调用形式计算n!%(1)编写递归调用函数文件factor.mfunction f=factor(n);%factor.m 计算n!if n==1f=1;return;elsef=n*factor(n-1);return;end%(2)运行函数文件factor(6)%函数参数传递function sa=circle(r,s);%CIRCLE PLOT A CIRCLE OF RADIUS R IN THE LINE SPECIFIED BY S. %r%s%sa%%circle(r)%circle(r,s)%sa=circle(r)%sa=circle(r,s)if nargin==1%若输入参数数目为1,则该输入参数是指定的半径数值,%默认的圆周线颜色是蓝色s='b';end;clf;t=0:pi/100:2*pi;x=r*exp(i*t);if nargout==0plot(x,s);elsesa=pi*r*r;fill(real(x),imag(x),s)endaxis('square')。
使用Matlab进行图像处理的常用函数介绍

使用Matlab进行图像处理的常用函数介绍引言:图像处理是计算机科学和电子工程领域中的重要分支,它利用数字技术对图像进行各种操作和改变,以实现图像的增强、分割、恢复等目标。
而Matlab作为一种功能强大的科学计算软件,被广泛应用于图像处理领域。
本文将介绍几个常用的Matlab图像处理函数,并结合实例进行详解。
一、图像读取与显示函数1. imread函数imread函数是Matlab中用于读取图像的函数,它可以读取各种图像格式(如JPEG、PNG、BMP等)的图像文件,并将其转换为Matlab中的矩阵形式。
示例:```img = imread('image.jpg');```2. imshow函数imshow函数用于在Matlab中显示图像,它可以接受矩阵形式的图像作为输入,并在新窗口中显示出来。
此外,imshow函数还可以对显示的图像进行一些调整,如调整图像的亮度、对比度等参数。
示例:```imshow(img); % 显示读取的图像```二、图像增强函数1. imadjust函数imadjust函数可以调整图像的亮度和对比度,以增强图像的视觉效果。
它通过对图像的像素值进行映射,将原始图像灰度值的范围进行调整,从而使图像的显示效果更好。
示例:```img_adjusted = imadjust(img, [0.2 0.8], [0 1]);```2. histeq函数histeq函数可以进行直方图均衡化处理,使图像的像素值在不同灰度级之间更均匀分布,从而增强图像的对比度和细节。
示例:```img_equalized = histeq(img);```三、图像滤波函数1. imfilter函数imfilter函数实现了不同类型的图像滤波算法,包括平滑滤波、锐化滤波等。
它可以对图像的每个像素点进行卷积运算,以消除噪声、增强边缘等。
示例:```filter = fspecial('average', [5 5]); % 创建一个平滑滤波器img_filtered = imfilter(img, filter); % 对图像进行平滑滤波```2. medfilt2函数medfilt2函数是一种中值滤波算法,它可以有效地去除图像中的椒盐噪声、脉冲噪声等。
matlab图像处理实例详解

matlab图像处理实例详解图像处理作为一门应用广泛的技术,其优秀的性能特点在各行各业得到了越来越广泛的应用。
MATLAB作为一款由MathWorks开发的广泛使用的数字计算平台,拥有强大的图像处理功能。
本文旨在介绍如何使用MATLAB进行图像处理,并介绍几个典型的图像处理应用实例。
首先,让我们来看一下MATLAB图像处理的基本概念。
图像处理是指对图像进行分析处理,以得到所需的图像信息。
MATLAB图像处理是使用MATLAB语言和MATLAB图像处理工具箱实现图像处理任务的方法。
MATLAB图像处理工具箱有大量工具可用,可以处理各种图像和视频,包括灰度图像、彩色图像、数字图像以及数字视频。
工具箱可以实现图像增强,图像分割,边缘检测,目标识别,视觉测量,图像定标,3D重构,图像注册,图像重建,图像检测等图像处理任务。
其次,让我们看看MATLAB图像处理的常见实例。
这里以基于MATLAB的人脸识别实例为例,介绍其基本的原理以及实现方法,帮助大家迅速掌握MATLAB图像处理的相关技术。
首先,要实现人脸识别,首先要对图像进行预处理,将图像转换为灰度图像,并且将图像转换成矩阵,用于后续处理。
然后,要进行人脸检测,分析图像中是否存在人脸,如果存在则将人脸区域进行分割。
接着,要实现特征提取,可以使用一些经典的特征提取算法,如Haar特征或LBP特征。
然后,要实现人脸识别,可以使用基于SVM或KNN的分类算法,将提取到的人脸特征与已知人脸特征进行比较,得出最佳匹配,从而实现人脸识别。
在此,我们介绍了基于MATLAB实现人脸识别的基本原理。
MATLAB 在图像处理等方向也有着广泛的应用。
接下来,我们将用几个实例来介绍基于MATLAB的常见应用。
第一个实例是基于MATLAB的图像识别与分类。
图像识别与分类是指识别某张图片上的内容,并将其分类,以获得其内容的类别信息。
可以使用许多图像分类算法,如支持向量机,决策树,K最近邻等,实现图像识别与分类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验一图像的傅里叶变换(旋转性质)
实验二图像的代数运算
实验三filter2实现均值滤波
实验四图像的缩放
朱锦璐
04085122
实验一图像的傅里叶变换(旋转性质)
一、实验内容
对图(1.1)的图像做旋转,观察原图的傅里叶频谱和旋转后的傅里叶频谱的对应关系。
图(1.1)
二、实验原理
首先借助极坐标变换x=rcosθ,y=rsinθ,u=wcosϕ,v=wsinϕ,,将f(x,y)和F(u,v)转换为f(r,θ)和F(w,ϕ).
f(x,y) <=> F(u,v)
f(rcosθ,rsinθ)<=> F(wcosϕ,wsinϕ)
经过变换得
f( r,θ+θ。
)<=>F(w,ϕ+θ。
)
上式表明,对f(x,y)旋转一个角度θ。
对应于将其傅里叶变换F(u,v)也旋转相同的角度θ。
F(u,v)到f(x,y)也是一样。
三、实验方法及程序
选取一幅图像,进行离散傅里叶变换,在对其进行一定角度的旋转,进行离散傅里叶变换。
>> I=zeros(256,256); %构造原始图像
I(88:168,120:136)=1; %图像范围256*256,前一值是纵向比,后一值是横向比figure(1);
imshow(I); %求原始图像的傅里叶频谱
J=fft2(I);
F=abs(J);
J1=fftshift(F);figure(2)
imshow(J1,[5 50])
J=imrotate(I,45,'bilinear','crop'); %将图像逆时针旋转45°
figure(3);
imshow(J) %求旋转后的图像的傅里叶频谱
J1=fft2(J);
F=abs(J1);
J2=fftshift(F);figure(4)
imshow(J2,[5 50])
四、实验结果与分析
实验结果如下图所示
(1.2)原图像(1.3)傅里叶频谱
(1.4)旋转45°后的图像(1.5)旋转后的傅里叶频谱以下为放大的图
(1.6)原图像(1.7)傅里叶频谱
(1.8)旋转45°后的图像(1.9)旋转后的傅里叶频谱由实验结果可知
1、从旋转性质来考虑,图(1.8)是图(1.6)逆时针旋转45°后的图像,对比图(1.7)和图(1.9)可知,频域图像也逆时针旋转了45°
2、从尺寸变换性质来考虑,如图(1.6)和图(1.7)、图(1.8)和图(1.9)可知,原图像和其傅里叶变换后的图像角度相差90°,由此可知,时域中的信号被压缩,到频域中的信号就被拉伸。
实验二图像的代数运算
一、实验内容
选择两幅图像,一幅是物体图像,一幅是背景图像,采用正确的图像代数运算方法,分别实现图像的叠加、混合图像的分离和图像的局部效果显示。
二、实验原理
代数运算是指对两幅货两幅以上输入图像进行点对点的加、减、乘、除运算而得到目标图像的运算。
图像处理代数运算的4中基本形式分别如下。
C(x,y)=A(x,y)+B(x,y)
C(x,y)=A(x,y)-B(x,y)
C(x,y)=A(x,y)×B(x,y)
C(x,y)=A(x,y)÷B(x,y)
式中,A(x,y)和B(x,y)为输入图像表达式;C(x,y)为输出图像表达式
三、实验方法及程序
(1)选取两幅大小相同的灰度图像'rice.png'和'cameraman.tif',将两幅图像进行加法运算,程序如下,结果如下图(2.1)
I=imread('rice.png');
J=imread('cameraman.tif');
K=imadd(I,J);
subplot(2,2,1);imshow(I);
subplot(2,2,2);imshow(J);
subplot(2,2,3);imshow(K);
(2.1)两图像相加
(2)以下是自己构造的两幅简单的原始图像,实现的两幅图像的相减运算程序如下,结果如下图(2.2)
>> I=zeros(256,256); %构造原始图像
I(88:168,120:136)=1;
J=zeros(256,256); %构造原始图像
J(124:140,88:168)=1;
K=I-J; %实现两幅图像的相减
subplot(2,2,1);imshow(I);
subplot(2,2,2);imshow(J);
subplot(2,2,3);imshow(K);
(2.2)两图像的相减运算
实验三filter2实现均值滤波
一、实验内容
选取一幅灰度图像,用filter2函数对图像进行处理,实现3*3的均值滤波、5*5的均值滤波及7*7的均值滤波效果
二、实验原理
对一些图像进行线性滤波可以去除图像中某些类型的噪声。
基本思想是:在图像空间内假定一幅N*N个像素的原始图像f(x,y),用领域内的几个像素的平均值去代替图像中的每一个像素点值的操作,经平滑处理后得到一幅图像g(x,y)
三、实验方法及程序
选取一幅灰度图像'heben.jpg',用filter2函数对图像进行处理
程序如下,结果如下图(3.1)(3.2) (3.3) (3.4)
a=imread('heben.jpg');
>> I=rgb2gray(a);
>> imshow(I);
>> K1=filter2(fspecial('average',3),I)/255; %3*3的均值滤波
>> K2=filter2(fspecial('average',5),I)/255; %5*5的均值滤波
>> K3=filter2(fspecial('average',7),I)/255; %7*7的均值滤波
>> figure,imshow(K1);
>> figure,imshow(K2);
>> figure,imshow(K3);
(3.1) 原始图像(3.2) 3*3的均值滤波
(3.3)5*5的均值滤波 (3.4)7*7的均值滤波
四、实验结果与分析
用filter2函数对图像进行处理,可以有效的抑制噪声,但是选取的N*N 个像素的原始
图像f(x,y)N 值越大,图像的模糊程度也越严重。
实验四图像的缩放
一、实验内容
对一副图像实现按比例缩小和不按比例任意缩小的效果,以及图像的成倍放大和不按比例放大效果。
二、实验原理
数字图像的比例缩放是指将给定的图像在x方向和y方向按相同的比例a缩放,从而获得一副新的图像,又称为全比例缩放。
如果x方向和y方向缩放的比例不同,则图像的比例缩放会改变原始图像像素间的相对位置,产生几何畸变。
设原始图像中的点A0(x0,y0)比例缩放后,在新图中的对应点为A1(x1,y1),则A0(x0,y0)和A1(x1,y1)之间的坐标关系可表示如下。
x1 a 0 0 x0
y1 = 0 a 0 y0
1 0 0 1 1
即 x1=ax0
y1=ay0
三、实验方法及程序
选取一幅图像,分别将图像比例放大1.5倍,比例缩小0.7倍,非比例放大到420×384像素,非比例缩小到150×180像素。
程序如下,结果如图所示。
>> A=imread('xiao.jpg');
>> B1=imresize(A,1.5);
>> B2=imresize(A,[420 384]);
>> C1=imresize(A,0.7);
>> C2=imresize(A,[150 180]);
>> figure;
>> imshow(B1);
>> figure;
>> imshow(B2);
>> figure;
>> imshow(C1);
>> figure;
>> imshow(C2);
(4.1)比例放大(4.2)非比例放大图
(4.3)比例缩小图(4.4)非比例缩小图
四、实验结果与分析
由所得结果可以看出,按非比例缩小或放大的图像相对原图有畸变,而按比例缩放的图像没有。
由于x方向和y方向缩放的比例不同,则图像的非比例缩放会改变原始图像像素间的相对位置,产生几何畸变。