数字图像处理实验_阈值分割算法

合集下载

数字图像处理实验报告——图像分割实验

数字图像处理实验报告——图像分割实验

实验报告课程名称数字图像处理导论专业班级_______________姓名 _______________学号_______________电气与信息学院与谐勤奋求就是创新一.实验目得1.理解图像分割得基本概念;2.理解图像边缘提取得基本概念;3.掌握进行边缘提取得基本方法;4.掌握用阈值法进行图像分割得基本方法.二。

实验内容1.分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。

比较三种算子处理得不同之处;2.设计一个检测图1中边缘得程序,要求结果类似图2,并附原理说明。

3.任选一种阈值法进行图像分割、图1 图2三.实验具体实现1.分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。

比较三种算子处理得不同之处;I=imread(’mri、tif');imshow(I)BW1=edge(I,’roberts’);figure ,imshow(BW1),title(’用Roberts算子’)BW2=edge(I,’sobel’);figure,imshow(BW2),title(’用Sobel算子 ')BW3=edge(I,’log’);figure,imshow(BW3),title(’用拉普拉斯高斯算子’)比较提取边缘得效果可以瞧出,sober算子就是一种微分算子,对边缘得定位较精确,但就是会漏去一些边缘细节.而Laplacian—Gaussian算子就是一种二阶边缘检测方法,它通过寻找图象灰度值中二阶过零点来检测边缘并将边缘提取出来,边缘得细节比较丰富。

通过比较可以瞧出Laplacian-Gaussian算子比sober算子边缘更完整,效果更好。

2.设计一个检测图1中边缘得程序,要求结果类似图2,并附原理说明.i=imread('m83、tif’);subplot(1,2,1);imhist(i);title('原始图像直方图');thread=130/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title('分割结果’);3.任选一种阈值法进行图像分割、i=imread('trees、tif’);subplot(1,2,1);imhist(i);title('原始图像直方图’);thread=100/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title('分割结果’)1、分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。

图像分割处理实验报告

图像分割处理实验报告

一、实验目的:1.学会对图像进行二值化处理和直方图均衡化处理2.进一步了解数字图像处理的知识以及matlab软件的使用3.掌握基本的查资料方法二、实验内容把这幅图像分成同样大小的10幅人脸图片然后分别对第一行5幅人脸图像的第3 第4 第5 第二行5幅人脸图像的第1 第5 进行如下处理:1.进行大津法阈值分割的二值化处理2.进行直方图均衡化处理三、实验具体代码以及结果1.实验代码%clcclearsrc_path='D:\histogram matching.bmp'; %原始图片路径dst_path='D:\picture\'; %分割图片后保存路径mkdir(dst_path);A = imread(src_path); %读入原始图片[m,n,l] = size(A); %获得尺寸for i = 1:2for j = 1:5m_start=1+(i-1)*fix(m/2);m_end=i*fix(m/2);n_start=1+(j-1)*fix(n/5);n_end=j*fix(n/5);AA=A(m_start:m_end,n_start:n_end,:); %将每块读入矩阵imwrite(AA,[dst_path num2str(i) '-' num2str(j) '.jpg'],'jpg'); %保存每块图片endendcd 'D:\pic'x1=imread('1-3.jpg');%%%%%%%%%目标读取图像x2=imread('1-4.jpg');x3=imread('1-5.jpg');x4=imread('2-1.jpg');x5=imread('2-5.jpg');% matlab 自带的自动确定阈值的方法level1=graythresh(x1);level2=graythresh(x2);level3=graythresh(x3);level4=graythresh(x4);level5=graythresh(x5);%用得到的阈值直接对图像进行二值化处理并显示BW1=im2bw(x1,level1);BW2=im2bw(x2,level2);BW3=im2bw(x3,level3);BW4=im2bw(x4,level4);BW5=im2bw(x5,level5);figure(1),imshow(BW1);figure(2),imshow(BW2);figure(3),imshow(BW3);figure(4),imshow(BW4);figure(5),imshow(BW5);%直方图均衡化处理%%%%%%%%%%调用直方图均衡化函数 histeq()%%%%%均衡化处理后的灰度级直方图分布figure(6),imhist(histeq(rgb2gray(x1))); figure(7),imhist(histeq(rgb2gray(x2))); figure(8),imhist(histeq(rgb2gray(x3))); figure(9),imhist(histeq(rgb2gray(x4))); figure(10),imhist(histeq(rgb2gray(x5)));%%%均衡化处理后的图像%%%%%%figure(11),imshow(histeq(rgb2gray(x1))); figure(12),imshow(histeq(rgb2gray(x2))); figure(13),imshow(histeq(rgb2gray(x3))); figure(14),imshow(histeq(rgb2gray(x4))); figure(15),imshow(histeq(rgb2gray(x5)));。

自动阈值算法

自动阈值算法

自动阈值算法是一种用于二值化图像的算法,它可以自动地确定图像中的像素值应该是1还是0。

这种算法通常被用于数字图像处理中的图像分割、目标识别和特征提取等任务。

自动阈值算法的基本思想是通过统计图像中像素的灰度值分布情况来确定阈值。

常用的自动阈值算法有以下几种:
1. Otsu算法:Otsu算法是最常用的自动阈值算法之一。

它通过计算图像中像素的灰度值分布直方图来确定阈值,使图像中两个类别(1和0)的类间方差最小。

Otsu算法的优点是快速且准确,但对于噪声较多的图像可能会出现误分类的情况。

2. 均值漂移算法:均值漂移算法是一种基于局部均值的图像分割算法。

它可以自动地确定阈值,将图像中的像素分成两个类别。

该算法的优点是可以处理噪声较多的图像,但对于复杂的图像可能会出现误分类的情况。

3. 基于支持向量机的算法:基于支持向量机的算法是一种基于机器学习的自动阈值算法。

它可以通过训练支持向量机模型来确定阈值,将图像中的像素分成两个类别。

该算法的优点是可以处理复杂的图像,但需要大量的计算资源和时间。

4. 基于神经网络的算法:基于神经网络的算法是一种基于人工神经网络的自动阈值算法。

它可以通过训练神经网络模型来确定阈值,将图像中的像素分成两个类别。

该算法的优点是可以处理复杂的图像,但需要大量的计算资源和时间。

总之,自动阈值算法可以帮助我们快速地对大量的二值化图像进行分类和处理,但需要根据具体的应用场景选择合适的算法。

基于阈值的分割原理

基于阈值的分割原理

基于阈值的分割原理基于阈值的分割原理是数字图像处理中常用的一种分割方法,其基本思想是将图像中的像素根据其灰度值与预设的阈值进行比较,将灰度值高于阈值的像素归为一类,低于阈值的像素归为另一类。

该方法简单易懂,计算量小,因此被广泛应用于图像处理领域。

一、阈值分割基本原理1.1 阈值阈值是指在进行二值化处理时所设定的一个灰度级别,用来区分图像中不同灰度级别的像素点。

通常情况下,我们将图像中所有灰度大于该阈值的点视为目标物体区域内部点,将灰度小于该阈值的点视为背景区域内部点。

1.2 阈值分割过程在进行阈值分割时,我们需要先确定一个合适的初始阈值。

通常情况下,我们可以选择图像中所有像素点灰度平均数作为初始阈值。

然后将所有灰度大于该初始阈值的点视为目标物体区域内部点,将小于该初始阈值的点视为背景区域内部点,并计算出两个区域内像素灰度值的平均数。

将两个平均数再求平均,得到新的阈值,重复上述过程直到新的阈值与上一次计算的阈值相等或者差异小于一个预设的容差范围。

1.3 阈值分割应用阈值分割可以应用于很多领域中,如图像增强、目标检测、字符识别等。

在图像增强中,我们可以通过调整阈值来实现图像亮度和对比度的调整;在目标检测中,我们可以通过设置不同的阈值来实现对不同大小、形状、颜色等特征的物体进行区分;在字符识别中,我们可以通过设置合适的阈值来实现对字符轮廓进行提取和识别。

二、基于全局阈值分割原理2.1 基本思想基于全局阈值分割原理是指在整幅图像中确定一个全局唯一的阈值进行分割。

该方法简单易行且计算量小,适用于灰度变化明显且背景比较简单的图像。

2.2 全局阈值分割方法(1)最大类间方差法:该方法是求使两类间方差最大化时所对应的灰度值作为阈值。

具体而言,我们可以先将图像中所有像素点按照灰度值从小到大排序,然后分别计算每个灰度值下的前景和背景像素点数量、均值和方差。

最后计算出每个灰度下两类之间的类间方差,并选取使类间方差最大的灰度值作为阈值。

《数字图像处理》实验教案

《数字图像处理》实验教案

《数字图像处理》实验教案一、实验目的1. 使学生了解和掌握数字图像处理的基本概念和基本算法。

2. 培养学生运用数字图像处理技术解决实际问题的能力。

3. 提高学生使用相关软件工具进行数字图像处理操作的技能。

二、实验内容1. 图像读取与显示:学习如何使用相关软件工具读取和显示数字图像。

2. 图像基本操作:学习图像的旋转、缩放、翻转等基本操作。

3. 图像滤波:学习使用不同类型的滤波器进行图像去噪和增强。

4. 图像分割:学习利用阈值分割、区域增长等方法对图像进行分割。

5. 图像特征提取:学习提取图像的边缘、角点等特征信息。

三、实验环境1. 操作系统:Windows或Linux。

2. 编程语言:Python或MATLAB。

3. 图像处理软件:OpenCV、ImageJ或MATLAB。

四、实验步骤1. 打开相关软件工具,导入图像。

2. 学习并实践图像的基本操作,如旋转、缩放、翻转等。

3. 学习并实践图像滤波算法,如均值滤波、中值滤波等。

4. 学习并实践图像分割算法,如全局阈值分割、局部阈值分割等。

5. 学习并实践图像特征提取算法,如Canny边缘检测算法等。

五、实验要求1. 每位学生需独立完成实验,并在实验报告中详细描述实验过程和结果。

2. 实验报告需包括实验目的、实验内容、实验步骤、实验结果和实验总结。

3. 实验结果要求清晰显示每个步骤的操作和效果。

4. 实验总结部分需对本次实验的学习内容进行归纳和总结,并提出改进意见。

六、实验注意事项1. 实验前请确保掌握相关软件工具的基本使用方法。

3. 在进行图像操作时,请尽量使用向量或数组进行处理,避免使用低效的循环结构。

4. 实验过程中如需保存中间结果,请使用合适的文件格式,如PNG、JPG等。

5. 请合理安排实验时间,确保实验报告的质量和按时提交。

七、实验评价1. 实验报告的评价:评价学生的实验报告内容是否完整、实验结果是否清晰、实验总结是否到位。

2. 实验操作的评价:评价学生在实验过程中对图像处理算法的理解和运用能力。

阈值分割原理

阈值分割原理

阈值分割原理阈值分割是一种数字图像处理中常用的像素分割方法,其原理主要是基于图像灰度值的统计特性。

其思路是分别统计图像中不同灰度级别的像素个数,通过确定一个灰度值作为阈值,将图像中的像素分成两类,进而实现对图像的分割。

阈值分割的基本原理是通过将图像灰度值分为两个区间,从而将灰度低于或高于阈值的像素分为两类,从而实现图像的二值化处理。

本文将对阈值分割的基本原理、常用的实现方法以及应用进行全面的介绍。

阈值分割的基本原理阈值分割的基本原理是将图像中的像素分为两个部分,一部分为灰度值大于等于阈值的像素,另一部分为灰度值小于阈值的像素。

此时,我们可以将分割出来的灰度值较低的像素赋值为0,灰度值较高的像素赋值为1,从而将其转化为二进制图像。

这种方法通常用于物体检测、图像分割、OCR等领域,其中图像分割是其中应用最为广泛的领域之一。

在将图像进行阈值分割时,需要找到一个合适的阈值。

阈值可以是任何一个位于图像灰度值范围之内的值。

阈值分割方法需要根据具体的场景进行灰度值的筛选,通常可以选择采用迭代法、聚类法、最大间隔法和形态学方法等实现。

1. 迭代法迭代法通常是一种较为常见的方法。

这种方法的基本思路是:先在图像的灰度值范围内随机选取一个阈值,然后对目标二值化图像进行处理,将灰度大于或等于该阈值的像素设为前景像素(白色),将小于该阈值的像素设为背景像素(黑色)。

接着,可以计算出前景和背景的平均灰度值,将其作为新的阈值。

将新阈值作为该算法的输入,重复执行该算法,直到图像中的前景像素和背景像素稳定不变为止。

2. 聚类法聚类法是一种常用的阈值寻找方法。

该方法基于聚类分析的思想,将图像中的像素分为多个簇。

这些簇是按照图像灰度值进行排序的,每个簇的中心都对应一种不同的灰度值。

在这种情况下,我们可以寻找显著区分不同灰度值区间的簇,以确定阈值。

3. 最大间隔法最大间隔法是一种基于统计学原理的方法,它可以有效地找到分离前景像素和背景像素的最佳阈值。

数字图像处理中的算法原理与优化

数字图像处理中的算法原理与优化

数字图像处理中的算法原理与优化数字图像处理是一门运用计算机算法来对图像进行分析、处理和变换的技术。

它在现代社会的许多领域中发挥着重要作用,如医学影像、图像识别和计算机视觉等。

在数字图像处理中,算法的原理和优化是关键的因素,它们决定了图像处理的质量和效率。

本文将从算法原理与优化的角度来探讨数字图像处理中的相关内容。

一、图像处理基础在了解数字图像处理的算法原理与优化之前,我们首先需要了解一些图像处理的基础概念。

图像可以看作是由像素组成的矩阵,每个像素代表图像中的一个点的颜色或亮度值。

常见的图像处理操作包括图像增强、图像滤波、图像分割和图像压缩等。

这些操作的实现离不开各种算法的支持。

二、图像处理算法原理1. 图像增强算法原理图像增强是通过改善图像的视觉效果来提高图像质量的一种方法。

常用的图像增强算法包括直方图均衡化、对比度增强和锐化等。

直方图均衡化通过调整图像的亮度分布来增强图像的对比度,使图像的细节更加清晰。

对比度增强算法通过增加图像的亮度差异来提高图像的对比度,使图像更加鲜明。

锐化算法通过增强图像的边缘来使图像更加清晰。

2. 图像滤波算法原理图像滤波是对图像进行平滑处理的一种方法,它能够消除图像中的噪声并减小图像的细节。

常用的图像滤波算法包括均值滤波、中值滤波和高斯滤波等。

均值滤波通过计算图像局部区域的像素平均值来实现平滑处理。

中值滤波通过计算图像局部区域的像素中值来实现噪声消除。

高斯滤波通过对图像进行卷积操作来实现平滑处理,其中卷积核是一个高斯函数。

3. 图像分割算法原理图像分割是将图像分成若干个具有独立性的区域的过程,其目标是把具有相似性质的像素组成一个区域。

常用的图像分割算法包括阈值分割、边缘检测和区域生长等。

阈值分割通过设置一个或多个阈值来将图像分成若干个部分。

边缘检测通过寻找图像中的边缘来分割图像。

区域生长通过选择种子点并逐渐生长来分割图像。

4. 图像压缩算法原理图像压缩是将图像的数据表示方式转换为更紧凑的形式的过程,以便减少存储空间和传输带宽的消耗。

实验报告8-1

实验报告8-1

实验报告实验名称图像分割课程名称数字图像处理及MATLAB实现专业:通信工程班级:09秋2班学生姓名:杨滨嘉薛靖阳婷学号:090322170903221509032214同组人:指导教师: 刘伟实验日期: 成绩:实验1:直方图阈值法实验实验内容利用直方图阈值法对图像进行分割实验原理利用灰度阈值T对物体面积进行计算的公式是:⎰∞=TdDDHA)(如果阈值对应于直方图的谷,阈值从T增加到T+ΔT只会引起面积略微减少,因此,把阈值设在直方图的谷,可以把阈值选择中的错误对面积测量的影响降低到最低。

实验方法及程序1.完成基本实验内容2.改变阈值的大小,选择最合适的阈值进行图像分割I=imread('cameraman.tif');figure;subplot(2,2,1);imshow(I);title('灰度图像')axis([25,260,25,260]);grid on;axis on;[m,n]=size(I);GP=zeros(1,256);for k=0:255GP(k+1)=length(find(I==k))/(m*n); endsubplot(2,2,2),bar(0:255,GP,'g')title('灰度直方图')xlabel('灰度值')ylabel('出现概率')I1=im2bw(I,100/255);subplot(2,2,3),imshow(I1);title('阈值100的分割图像')axis([25,260,25,260]);grid on;axis on;I2=im2bw(I,160/255);subplot(2,2,4),imshow(I2);title('阈值160的分割图像')axis([25,260,25,260]);grid on;axis on;实验结果 (附图)灰度图像5010015020025050100150200250-100010*******00.010.020.03灰度直方图灰度值出现概率阈值100的分割图像5010015020025050100150200250阈值160的分割图像5010015020025050100150200250结果分析1.分析阈值不同对图像分割的影响当使用阈值规则进行图像分割时,所有灰度值大于或等于某阈值的像素都被判属于物体,所有灰度值小于该阈值的像素被排除在物体之外。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数字图像处理》实验9.编写程序,实现阈值分割算法.%9.编写程序,实现阈值分割算法.%这段代码的想法是通过相邻两个像素的平均值的比较来确定阈值的选取。

%通过f(i-1,j-1),f(i,j),f(x,+1,j+1)这三个两两相邻的像素的平均值来比较。

%若两个平均值的差值小于某一个指定的值,这取这个平均值作为新的阈值。

%这样可以把图像中像素比较平缓的部分和像素差别比较大的部分分割开来。

clear;f = imread('text.jpg');f=rgb2gray(f);f = im2double(f);g=f;[m,n] = size(f);x=0.1; %x作为判断的值,两个平均值的差不小于x;d = false;while ~dfor i=2:m-1 %为确保f(i,j)的取值在原图的范围内需要保证的范围。

for j=2:n-1t = (f(i-1,j-1)+f(i,j))/2; %求三个两两相邻的像素点的像素的平均值 t1 = (f(i,j)+f(i+1,j+1))/2;d = abs(t1-t)<x; %比较这两个平均值的大小,若两个平均值的差值小于xt1 =(t+t1)/2; %则取这两个值的平均值作为新的阈值;endendendb=im2bw(f,t1); %为方便观察将灰度图像转换成黑白二值图像imshow(b);figure,imshow(g);2.编写程序,实现图像的实数倍放大%放大基于像素放大%图像放大,比如600*600的图像放大到800*800,那么就比原来多了200*200行,%那么这200*200行如果没有进行插值填充,那么就会出现黑白点,以下的代码操作结果就是%这样的。

%以下代码的大概想法是:新建一个矩阵,大小与原图像相同,然后对原图像的每个像素进行放%大%放大的倍数为X。

为了确保图像像素为整数,故使用round函数取整a=imread('text.jpg');imshow(a);b=size(a); %生成一个大小与a相同的矩阵原图大小为199*243;x=2; %放大倍数但这个倍数的大小不能<2,因为大于二之后round %(i/x)的值就会为0.for i=1:1:round(x*199); %round取整,取最近的整数;i的取值从1开始,以x*199 %为终点,以1为步长增长。

for j=1:1:round(x*243); %则i的取值范围为1到199*x中的整数值,j的取值 %为 1到243*x的整数值b(i,j)=a(round(i/x),round(j/x)); %将a中i n/x行,j/x的整数列的值 %赋给b的i行j列。

endendfigure,imshow(b);3.编写程序,对图象进行中值滤波,并与实现相同功能的Matlab函数进行运算速度比较.%%自编的中值滤波函数。

%以下代码的主要思想及步骤是:设置一个滤波模版大小为[7,7]。

然后从f的(i,j)开始取出一个大小为[7,7]模版;%计算模版中值并将模版各元素的中值赋给模版中心位置的元素。

%实验中我用了3*3、5*5、7*7三个大小的模版去做测试,我发现3*3的模版中值滤波后的效%果没有5*5、7*7的模版的滤波效果那么好。

%但7*7的模版效果有点过了。

在边界的地方会出现斑点。

%而且这个程序运行的时间明显感觉到比直接用中值滤波函数medifilt2的时间要长。

f=imread('Blue hills.jpg');f = f(:,:,1);g = imnoise(f,'salt & pepper',0.08); %%这部分是自编的中值滤波函数。

首先取出一个模板,将该模板转换成一个行矩阵,利用median 函数取矩阵的中值。

%然后将该中值赋值到模板的中心位置。

其他未被赋值的元素则用原来的值填充。

%如果这个步骤的话,最后结果出来会是一个有黑白点的图片。

n=7; %n的值即为模版的大小;[x,y]=size(g); %取原图像的行数列数g1=double(g);g2=g1;for i=1:x-n+1 %滤波范围for j=1:y-n+1c=g1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板 d =c(1,:); %是c矩阵的第一行for u=2:n %第二到第三行d =[d,c(u,:)]; %将c矩阵变为一个行矩阵endmm=median(d); %mm是中值 median 函数用来求行矩阵e的中值; g2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素endendY = uint8(g2); %其他未被赋值的元素则用原来的值填充.imshow(Y);%显示自己编程运行的中值滤波figure,imshow(g);6.编写程序,对图像进行局部直方图均衡化,并与全局直方图均衡化结果进行比较.%前面部分的全局直方图均衡化是直接利用书本的函数来实现的%后半部分对图像进行分割,并对分割后的一个图像做直方图均衡化。

%我对于局部图像的理解是在原图像中取出一部分像素,%因此就要对取出部分像素之外的像素赋值为0。

%从而得到局部图像,再对该图像做均衡化处理。

%局部图像均衡化处理与全局图像均衡化处理的差别取决于x的值%如果x的值取得比较大,大于原图像的像素点,那么局部图象则与原图像差别不大clear;A=imread('4.png');%---------全局直方图均衡化--------------------f=A(:,:,1); %显示A的色度分量g=histeq(f); %对f做直方图均衡化处理imshow(g);title('对原始图像均衡化');%--------局部直方图均衡化---------------------------%对一个图像进行分割%分割后的图像进行直方图均衡化处理x = 390; %x为任意合适的值。

用于对图像分割[m,n]=size(f); %取f矩阵的行数和列数f=double(f);C=zeros(m,n); %生成一个m行n列的矩阵for i=1:m %i的取值从1到m,for j=1:n %j的取值从j到nif f(i,j)>x %对图像进行分割C(i,j)=0; %像素大于x的将像素值改为0,else%其余的像素点则用原来的像素值C(i,j)=f(i,j);endendendfigure,imshow(mat2gray(C)); %mat2gray对C做归一化处理。

h1=histeq(mat2gray(C)); %对归一化后的图像做均衡化处理figure,imshow(h1)title('对分割后图像做均衡化');7.编写程序,实现彩色图像的中值滤波增强.%7.编写程序,实现彩色图像的中值滤波增强.%对彩色图像进行中值滤波,思路是分别对R、G、B三幅图像进行中值滤波,%分别滤波完成之后再用cat函数将三幅图像连接起来,则可以得到彩色图像的中值滤波函数。

%我是每幅彩色分量图像做一次中值滤波,因为不知道怎么去做这三幅图像的一个循环,所以就相当于三幅图像复制了一份中值滤波的代码。

%其中中值滤布实现部分的代码是自己编程的一段中值滤波代码。

clear;f=imread('Blue hills.jpg');f = uint8(f);R=f(:,:,1); %提取R分量G=f(:,:,2); %提取G分量B=f(:,:,3); %提取G分量subplot(2,3,1),imshow(R);subplot(2,3,2),imshow(G);subplot(2,3,3),imshow(B);%-----------对R分量图像进行中值滤波处理------------------n=7; %n的值即为模版的大小;[x,y]=size(R); %取原图像的行数列数R1=double(R);R2=R1;for i=1:x-n+1 %滤波范围for j=1:y-n+1c=R1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板 d =c(1,:); %是c矩阵的第一行for u=2:n %第二到第三行d =[d,c(u,:)]; %将c矩阵变为一个行矩阵endmm=median(d); %mm是中值 median 函数用来求行矩阵e的中值; R2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素endendY1 = uint8(R2); %其他未被赋值的元素则用原来的值填充.%-------------对G分量图像进行中值滤波----------------------------------n=7; %n的值即为模版的大小;[x,y]=size(G); %取原图像的行数列数B1=double(G);B2=B1;for i=1:x-n+1 %滤波范围for j=1:y-n+1c=B1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板 d =c(1,:); %是c矩阵的第一行for u=2:n %第二到第三行d =[d,c(u,:)]; %将c矩阵变为一个行矩阵endmm=median(d); %mm是中值 median 函数用来求行矩阵e的中值; B2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素endendY2 = uint8(B2); %其他未被赋值的元素则用原来的值填充.。

相关文档
最新文档