文档视界 最新最全的文档下载
当前位置:文档视界 › kmeans聚类图像分割 matlab

kmeans聚类图像分割 matlab

kmeans聚类图像分割 matlab
kmeans聚类图像分割 matlab

function [mu,mask]=kmeans(ima,k) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%

%

% kmeans image segmentation

%

% Input:

% ima: grey color image

% k: Number of classes

% Output:

% mu: vector of class means

% mask: clasification image mask

%

% Author: Jose Vicente Manjon Herrera

% Email: jmanjon@fis.upv.es

% Date: 27-08-2005

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%

% check image

ima=double(ima);

copy=ima; % make a copy

ima=ima(:); % vectorize ima

mi=min(ima); % deal with negative

ima=ima-mi+1; % and zero values

s=length(ima);

% create image histogram

m=max(ima)+1;

h=zeros(1,m);

hc=zeros(1,m);

for i=1:s

if(ima(i)>0) h(ima(i))=h(ima(i))+1;end;

end

ind=find(h);

hl=length(ind);

% initiate centroids

mu=(1:k)*m/(k+1);

% start process

while(true)

oldmu=mu;

% current classification

for i=1:hl

c=abs(ind(i)-mu);

cc=find(c==min(c));

hc(ind(i))=cc(1);

end

%recalculation of means

for i=1:k,

a=find(hc==i);

mu(i)=sum(a.*h(a))/sum(h(a));

end

if(mu==oldmu) break;end;

end

% calculate mask

s=size(copy);

mask=zeros(s);

for i=1:s(1),

for j=1:s(2),

c=abs(copy(i,j)-mu);

a=find(c==min(c));

mask(i,j)=a(1);

end

end

mu=mu+mi-1; % recover real range

实验六-图像分割教学文稿

实验六-图像分割

信息工程学院实验报告 课程名称:数字图像处理 实验项目名称:实验六图像分割实验时间:2016.12.16 班级:姓名:学号: 一、实验目的 1. 使用MatLab 软件进行图像的分割。使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。 2. 要求学生能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能。能够掌握分割条件(阈值等)的选择。完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。 二、实验内容与步骤 1.边缘检测 (1)使用Roberts 算子的图像分割实验 调入并显示图像room.tif图像;使用Roberts 算子对图像进行边缘检测处理; Roberts 算子为一对模板: (a)450方向模板(b)1350方向模板 图 1 matlab 2010的Roberts算子模板 相应的矩阵为:rh = [0 1;-1 0]; rv = [1 0;0 -1];这里的rh 为45度Roberts 算子,rv 为135度Roberts 算子。分别显示处理后的45度方向和135方向的边界检测结果;用“欧几里德距离”和“街区距离”方式计算梯度的模,并显示检测结果;对于检测结果进行二值化处理,并显示处理结果。 提示:先做检测结果的直方图,参考直方图中灰度的分布尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意为止。 (2)使用Prewitt 算子的图像分割实验

(a)水平模型(b)垂直模板 图2. Prewitt算子模板 使用Prewitt 算子进行内容(1)中的全部步骤。 (3)使用Sobel 算子的图像分割实验 使用Sobel (a)水平模型(b)垂直模板 图3. Sobel算子模板 (4)使用LoG (拉普拉斯-高斯)算子的图像分割实验 使用LoG (拉普拉斯-高斯)算子进行内容(1)中的全部步骤。提示1:处理后可以直接显示处理结果,无须另外计算梯度的模。提示2:注意调节噪声的强度以及LoG (拉普拉斯-高斯)算子的参数,观察处理结果。 (5) 打印全部结果并进行讨论。 下面是使用sobel算子对图像进行分割的MATLAB程序 f=imread('room.tif'); [gv,t1]=edge(f,'sobel','vertical');%使用edge函数对图像f提取垂直边缘 imshow(gv) [gb,t2]=edge(f,'sobel','horizontal');%使用edge函数对图像f提取水平边缘 figure,imshow(gb) w45=[-2 -1 0;-1 0 1;0 1 2];%指定模版使用imfilter计算45度方向的边缘 g45=imfilter(double(f),w45,'replicate'); T=0.3*max(abs(g45(:))); %设定阈值 g45=g45>=T; %进行阈值处理 figure,imshow(g45); 在函数中使用'prewitt'和'roberts'的过程,类似于使用sobel边缘检测器的过程。

基于Matlab的彩色图像分割

用Matlab来分割彩色图像的过程如下: 1)获取图像的RGB颜色信息。通过与用户的交互操作来提示用户输入待处理的彩色图像文件路径; 2)RGB彩色空间到lab彩色空间的转换。通过函数makecform()和applycform()来实现; 3)对ab分量进行Kmean聚类。调用函数kmeans()来实现; 4)显示分割后的各个区域。用三副图像分别来显示各个分割目标,背景用黑色表示。Matlab程序源码 %文件读取 clear; clc; file_name = input('请输入图像文件路径:','s'); I_rgb = imread(file_name); %读取文件数据 figure(); imshow(I_rgb); %显示原图 title('原始图像'); %将彩色图像从RGB转化到lab彩色空间 C = makecform('srgb2lab'); %设置转换格式 I_lab = applycform(I_rgb, C); %进行K-mean聚类将图像分割成3个区域 ab = double(I_lab(:,:,2:3)); %取出lab空间的a分量和b分量 nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 3; %分割的区域个数为3 [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3); %重复聚类3次 pixel_labels = reshape(cluster_idx,nrows,ncols); figure(); imshow(pixel_labels,[]), title('聚类结果'); %显示分割后的各个区域 segmented_images = cell(1,3); rgb_label = repmat(pixel_labels,[1 1 3]); for k = 1:nColors color = I_rgb; color(rgb_label ~= k) = 0; segmented_images{k} = color;

基于MATLAB的图像分割方法及应用

安徽财经大学 (《图像处理》课程论文) 题目:图像分割算法研究——基于分水岭分割法的彩色图像分割学院:管理科学与工程学院 专业:电子信息工程 姓名:万多荃 学号:20123712 电话: 任课教师:许晓丽 论文成绩: 2015年10月

目录 摘要 图像分割技术是非常重要的图像处理技术之一,无语是在理论研究还是在实际应用中人们都非常的重视。图像分割有许多的种类和方式,一些分割运算能够直接应用于任何图像,而另外一些却只适用于特别种类的图像。图像分割技术是从图像处理技术,再到后期的图像分析的关键步骤,图像分割结果的好坏,可以说对图像的理解有直接影响。

本文根据图像分割原理及人眼视觉的基本理论,研究图像的彩色模型及图像分割的常用方法,比较各方法的特点,并选择合适的方法对图像进行分割。本文采用MATLAB软件对图像进行彩色坐标变换及阈值分割,计算简单,具有较高的运行效率,分割的结果是使图像更符合人眼的视觉特性,获得比较好的效果。 关键字:图像处理;图像分割;人类视觉;MATLAB 1.前言 1.1图像分割技术 图像分割技术是非常重要的图像处理技术之一,无语是在理论研究还是在实际应用中人们都非常的重视。图像分割有许多的种类和方式,一些分割运算能够直接应用于任何图像,而另外一些却只适用于特别种类的图像。图像分割技术是从图像处理技术,再到后期的图像分析的关键步骤,图像分割结果的好坏,可以说对图像的理解有直接影响。 图像数据的模糊和噪声的干扰是分割问题的两大难题。到目前为止,还没有一个完美的图像分割方法,可以根据人的意愿精确地分割任何一种图像。现实图像中景物情况各种不同,具体问题需具体分析,按照实际情况选择得当的方法。分割成果的好坏或正确与否,到现在为止,尚无一个统一的评价和判断标准,分割的好坏务必从分割的效果和现实应用的场合来判断。然而,在人类研究图像的历史长河中,仍然积累了许多经典的图像分割方法。固然这些分割方法不可以适应全部种类的图像分割,可是这些方法却是图像分割方法进一步发展的根基。实际上,当代一些分割算法恰巧是从经典的图像分割方法中产生出来的。图像分割法大致可以分为三个种:边缘检测法,阈值分割法和基于区域的图像分割法。 2研究目的 视觉是人类最高级的感知器官,所以图像在人类感知中承担着非常重要的角色,这是毋庸置疑的。 本文的主要研究目的是对图像的分割方法进行研究,选择适合本论文的设计方法,然后通过对图像的分割,以达到人眼的最佳视觉效果。 本课题主要是通过对人眼的视觉系统研究,然后选择与人眼视觉系统密切相关的颜色模型进行颜色空间模型之间的相互转换,再对图像分割方法进行比较选择合适的分割方法,通过MATLAB平台实现彩色图像分割,最后对分割后的图像进行比较来获得到最佳的视觉效果。

图像处理实验-图像增强和图像分割

图像处理实验 图像增强和图像分割 一、实验目的: 掌握用空间滤波进行图像增强的基本方法,掌握图像分割的基本方法。 二、 实验要求: 1、测试图像1中同时含有均值为零的均匀分布噪声和椒盐噪声。用大小为5×5的算术均值滤波器和中值滤波器对图像进行处理,在不同窗口中显示原图像及各处理结果图像,并分析哪一种滤波器去噪效果好? 2、对测试图像2进行图像分割,求出分割测试图像2的最佳阈值。分别显示原图、原图的直方图(标出阈值)、和分割后的二值图。 实验内容: 1. 实验原理 1) 图像增强:流程图: 图像增强可以通过滤波的方式来完成,即消除一部分的噪声。滤波又可以分为均值滤波和中值滤波。 1. 中值滤波原理:中值滤波就是选用一个含有奇数个像素的滑动窗口,将该窗口在图像上扫描,把其中所含像素点按灰度级的升(或降)序排列,取位于中间的灰度值来代替窗口中心点的灰度值。

对于一维序列{N f }: 21,},...,,...,{-=∈=+-m u N i f f f M e d y u i i u i i 对于二维序列{ij F }:为滤波窗口W y ij F Med W ij }{= 2. 均值滤波原理:对于含噪声的原始图像g(s,t)的每一个像素点去一个领 域N ,用N 中所包含的相速的灰度平均值,作为领域平均处理后的图像f(x,y)的像素值,即: ∑∈=xy S t s t s g mn y x f ),(),(1),(? 2) 图像分割: 图像分割:依据图像的灰度、颜色等特征,将一幅图像分为若干个互不重叠的、具有某种同质特征的区域。

本实验中我们是根据灰度值,将灰度值大于阈值T的像素统一置为255,小于的则置为0。如何求出最合适的分割阈值,则需要用到迭代算法。 迭代法算法步骤: (1) 初始化阈值T (一般为原图像所有像素平均值)。 (2) 用T分割图像成两个集合:G1 和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素。 (3) 计算G1中像素的平均值m1及G2中像素的平均值m2。 (4) 计算新的阈值:T =(m1+m2)/2 。 (5)如果新阈值跟原阈值之间的差值小于一个预先设定的范围,停止循环,否则继续(2)-(4)步。 2.程序代码与分析: 1)图像增强: clear all;clc; %读入图像 I1=imread('Fig5.12(b).jpg'); %均值滤波模板 h1=ones(5,'uint8'); %获取分辨率 [a,b]=size(I1); %创建变量 I2=zeros(a+4,b+4,'uint8'); I3=zeros(a+4,b+4,'uint8'); %复制原始图像 for n=3:a+2 for m=3:b+2 I2(n,m)=I1(n-2,m-2); I3(n,m)=I1(n-2,m-2); end end

基于谱聚类的图像分割

本科生毕业设计 姓名:学号: 学院:计算机科学与技术学院 专业:计算机科学与技术 设计题目:基于谱聚类的图像分割 专题:图像分割的设计与实现 指导教师:职称:副教授

大学毕业设计任务书 学院计算机专业年级学生姓名 任务下达日期: 毕业设计日期: 毕业设计题目: 毕业设计专题题目 毕业设计主要内容和要求: 院长签章:指导教师签字:

中国矿业大学毕业设计指导教师评阅书 指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等): 成绩:指导教师签字: 年月日

中国矿业大学毕业设计评阅教师评阅书 评阅教师评语(①选题的意义;②基础理论及基本技能的掌握;③综合运用所学知识解决实际问题的能力;③工作量的大小;④取得的主要成果及创新点;⑤写作的规范程度;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等): 成绩:评阅教师签字: 年月日

中国矿业大学毕业设计答辩及综合成绩

需求分析 一、利用前台,得到一张原始JPG图片; 二、把这张图片传到后台,JAVA通过JRI调用R; 三、利用R调用K-Means的改进算法,实现对这张图片的处理,由于一张图片的 像素值是一个矩阵,可以得到一组关于像素值的数据; 四、把这组像素值进行分类,对各类赋予不同的颜色进行标记,从而区分出需要的 图片信息; 五、把得到的新图片传到前台; 六、前台对进行处理后的图片进行显示,从图像中得到需要的信息,从而实现图像 的分割。

基于MATLAB的图像阈值分割技术

基于MATLAB 的图像阈值分割技术 摘要:本文主要针对图像阈值分割做一个基于MATLAB 的分析。通过双峰法,迭代法以及OUTS 法三种算法来实现图像阈值分割,并且就这三种算法做了一定的分析和比较,在加椒盐的图片上同时进行三种实验,做出比较,最终得出实践结论。 关键词:图像分割 MATLAB 阈值分割 算法 引言:图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准,图像阈值分割即是其中的一种方法。 阈值分割技术因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术,已被应用于很多的领域,在很多图像处理系统中都是必不可少的一个环节。 1、阈值分割思想和原理 若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值T 进行分割。这样就可以用阈值分割灰度级的方法在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。 在物体与背景有较强的对比度的图像中,此种方法应用特别有效。比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的 设图像为f(x,y),其灰度集范围是[0,L],在0和L 之间选择一个合适的灰度阈值T ,则图像分割方法可由下式描述: 这样得到的g(x,y)是一幅二值图像。 (一)原理研究 图像阈值分割的方法有很多,在这里就其中三种方法进行研究,双峰法,迭代法,以及OUTS 法。 方法一:双峰法 T y x f T y x f y x g ≥<),(),(10){,(

基于Matlab的彩色图像分割

3 Matlab编程实现 3.1 Matlab编程过程 用Matlab来分割彩色图像的过程如下: 1)获取图像的RGB颜色信息。通过与用户的交互操作来提示用户输入待处理的彩色图像文件路径; 2)RGB彩色空间到lab彩色空间的转换。通过函数makecform()和applycform()来实现; 3)对ab分量进行Kmean聚类。调用函数kmeans()来实现; 4)显示分割后的各个区域。用三副图像分别来显示各个分割目标,背景用黑色表示。3.2 Matlab程序源码 %文件读取 clear; clc; file_name = input('请输入图像文件路径:','s'); I_rgb = imread(file_name); %读取文件数据 figure(); imshow(I_rgb); %显示原图 title('原始图像'); %将彩色图像从RGB转化到lab彩色空间 C = makecform('srgb2lab'); %设置转换格式 I_lab = applycform(I_rgb, C); %进行K-mean聚类将图像分割成3个区域 ab = double(I_lab(:,:,2:3)); %取出lab空间的a分量和b分量 nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 3; %分割的区域个数为3 [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3); %重复聚类3次 pixel_labels = reshape(cluster_idx,nrows,ncols); figure(); imshow(pixel_labels,[]), title('聚类结果'); %显示分割后的各个区域 segmented_images = cell(1,3); rgb_label = repmat(pixel_labels,[1 1 3]); for k = 1:nColors

图像分割实验报告

实验七图像分割 一、实验目的 利用光谱特征进行遥感图像的分割和分割后处理。 二、实验要求 1. 能够根据图像的特征,综合使用不同的方法分割出地物对象。 2. 熟练掌握图像直方图的应用。 3. 掌握彩色图像分割的基本方法 4. 掌握利用波段组合进行图像分割的工作流程 5. 熟悉数学形态学基本方法的应用。 三、实验准备 ●软件准备:ENVI软件 ●数据:兰花.jpg 文字测原始图像.bmp IKNOSm14 nj Hroad ●基本知识: ?图像分割的原则:(1)依据像素灰度值的不连续性进行分割。假定不同区域像素的灰度值具有不连续性,因而可以对其进行分割。(2)依据同一区域内部 像素的灰度值具有相似性进行分割。这种方法一般从一个点(种子)出发,将 其邻域中满足相似性测量准则的像素进行合并从而达到分割的目的。依据像素 的不连续性进行分割的方法只要是区域增长法。 ?图像分割的工作流程:(1)确定待分割的对象;(2)选择对分割对象敏感的波段;(3)选择分割方法进行分割;(4)将分割后的结果图像转为矢量图。 ?图像分割:(1)图像分割是指把图像分成各具特性的区域并提取出感兴趣的目标的技术和过程。从数学角度来看,图像分割是将数字图像划分成互不相交的 区域的过程。图像分割的过程也是一个标记的过程,即将属于同一个区域的像 素赋予相同的编号的过程。(2)目的:将一幅图像分为几个区域,这几个区域 之间具有不同的属性,同一区域中各像素具有某些相同的性质。 ?图像分割的方法:(1)灰度阀值法,它在目标与背景之间存在强对比时特别有效(直方图方法);(2)数学形态学方法,腐蚀、膨胀、开运算和闭运算; ?波段运算:ENVI Band Math是一个灵活的图像处理工具,其中许多功能是无法在任何其它的图像处理系统中获得的。由于每个用户都有独特的需求,利用 此工具用户自己定义处理算法,应用到在ENVI打开的波段或整个图像中,用 户可以根据需要自定义简单或复杂的处理程序。例如:可以对图像进行简单加、 减、乘、除运算,或使用IDL编写更复杂的处理运算功能。 ?波段运算实质是对每个像素点对应的像素值进行数学运算。

kmeans聚类图像分割 matlab

function [mu,mask]=kmeans(ima,k) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% % % kmeans image segmentation % % Input: % ima: grey color image % k: Number of classes % Output: % mu: vector of class means % mask: clasification image mask % % Author: Jose Vicente Manjon Herrera % Email: jmanjon@fis.upv.es % Date: 27-08-2005 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% % check image ima=double(ima); copy=ima; % make a copy ima=ima(:); % vectorize ima mi=min(ima); % deal with negative ima=ima-mi+1; % and zero values s=length(ima); % create image histogram m=max(ima)+1; h=zeros(1,m); hc=zeros(1,m); for i=1:s if(ima(i)>0) h(ima(i))=h(ima(i))+1;end; end ind=find(h); hl=length(ind); % initiate centroids mu=(1:k)*m/(k+1);

图像分割 实验报告

实验报告 课程名称医学图像处理 实验名称图像分割 专业班级 姓名 学号 实验日期 实验地点 2015—2016学年度第 2 学期

050100150200250 图1 原图 3 阈值分割后的二值图像分析:手动阈值分割的阈值是取直方图中双峰的谷底的灰度值作为阈值,若有多个双峰谷底,则取第一个作为阈值。本题的阈值取

%例2 迭代阈值分割 f=imread('cameraman.tif'); %读入图像 subplot(1,2,1);imshow(f); %创建一个一行二列的窗口,在第一个窗口显示图像title('原始图像'); %标注标题 f=double(f); %转换位双精度 T=(min(f(:))+max(f(:)))/2; %设定初始阈值 done=false; %定义开关变量,用于控制循环次数 i=0; %迭代,初始值i=0 while~done %while ~done 是循环条件,~ 是“非”的意思,此 处done = 0; 说明是无限循环,循环体里面应该还 有循环退出条件,否则就循环到死了; r1=find(f<=T); %按前次结果对t进行二次分 r2=find(f>T); %按前次结果重新对t进行二次分 Tnew=(mean(f(r1))+mean(f(r2)))/2; %新阈值两个范围内像素平均值和的一半done=abs(Tnew-T)<1; %设定两次阈值的比较,当满足小于1时,停止循环, 1是自己指定的参数 T=Tnew; %把Tnw的值赋给T i=i+1; %执行循坏,每次都加1 end f(r1)=0; %把小于初始阈值的变成黑的 f(r2)=1; %把大于初始阈值的变成白的 subplot(1,2,2); %创建一个一行二列的窗口,在第二个窗口显示图像imshow(f); %显示图像 title('迭代阈值二值化图像'); %标注标题 图4原始图像图5迭代阈值二值化图像 分析:本题是迭代阈值二值化分割,步骤是:1.选定初始阈值,即原图大小取平均;2.用初阈值进行二值分割;3.目标灰度值平均背景都取平均;4.迭代生成阈值,直到两次阈值的灰 度变化不超过1,则稳定;5.输出迭代结果。

部分图像分割的方法(matlab)

部分图像分割的方法(matlab)

大津法: function y1=OTSU(image,th_set) image=imread('color1.bmp'); gray=rgb2gray(image);%原图像的灰度图 low_high=stretchlim(gray);%增强图像,似乎也不是一定需要gray=imadjust(gray,low_high,[]); % subplot(224);imshow(gray);title('after adjust'); count=imhist(gray); [r,t]=size(gray); n=r*t; l=256; count=count/n;%各级灰度出现的概率 for i=2:l if count(i)~=0 st=i-1; break end end %以上循环语句实现寻找出现概率不为0的最小灰度值 for i=l:-1:1 if count(i)~=0; nd=i-1; break end end %实现找出出现概率不为0的最大灰度值 f=count(st+1:nd+1); p=st;q=nd-st;%p和分别是灰度的起始和结束值 u=0; for i=1:q; u=u+f(i)*(p+i-1); ua(i)=u; end

程序二: clc; clear; cd 'D:\My Documents\MATLAB' time = now; I = imread('qr4.bmp'); figure(1),imshow(I),title('p1_1.bmp'); % show the picture I2 = rgb2gray(I); figure(2),imshow(I2),title('I2.bmp'); %?D?μ??2¨ J = medfilt2(I2); figure(3),imshow(J); imwrite(J,'J.bmp'); [M N] = size(J); J1 = J(1:M/2,1:fix(N/2)); J2 = J(1:M/2,fix(N/2)+1:N); J3 = J(M/2+1:M, 1:fix( N/2)); J4 = J(M/2+1:M, fix(N/2)+1:N); % figure(4), img = J1; T1 = test_gray2bw( img ); % figure(5), img = J2; T2 = test_gray2bw( img ); % figure(6), img = J3; T3 = test_gray2bw( img ); % figure(7), img = J4; T4 = test_gray2bw( img ); T = [T1,T2;T3,T4]; figure,imshow(T) % T1 = edge(T,'sobel'); % figure,imshow(T1); % BW = edge(T,'sobel'); % f igure,imshow(BW); function [bw_img] = test_gray2bw( img ) %大津法 [row_img col_img ] = size( img ) all_pix = row_img * col_img % get probability of each pixel(????). count_pix = zeros(1,256) % pro_pix = [] for i = 1 : 1 : row_img for j = 1 : 1 : col_img count_pix(1,img(i,j)+1) = count_pix(1,img(i,j)+1) + 1 %í3??′?êy end en d pro_pix = count_pix / all_pix % choose k value; max_kesi = -1 T = 0 for k = 1 : 1 : while( i <= k ) wa = wa + pro_pix(1,i+1) %?°k??i£?????????μ??ò?è???ê£????êoí ua = ua + i * pro_pix(1,i+1) i = i + 1 end

基于MATLAB的图像分割算法研究毕业设计

基于MA TLAB的图像分割算法研究 基于MATLAB的图像分割算法研究 摘要 本文从原理和应用效果上对经典的图像分割方法如边缘检测、阈值分割技术和区域增长等进行了分析。对梯度算法中的Roberts算子、Sobel算子、Prewitt算子、拉普拉斯(Laplacian)算子、LoG(Laplacian-Gauss)算子、坎尼(Canny)算子的分割步骤、分割方式、分割准则相互比较可以看出根据坎尼(Canny)边缘算子的3个准则得出的边缘检测结果最满意。而阈值分割技术的关键在于阈值的确定,只有阈值确定好了才能有效的划分物体与背景,但这种方法只对于那些灰度分布明显,背景与物体差别大的图像的分割效果才明显。区域增长的基本思想是将具有相似性质的像素集合起来构成新区域。与此同时本文还分析了图像分割技术研究的方向。 关键词:图像处理图像分割 Abstract This article analyses the application effect to the classics image segmentation method like the edge examination, territory value division technology, and the region growth and so on.For comparing the Roberts operator, Sobel operator, Prewitt operator, the operator of Laplacian and the operator of LoG(Laplacian-Gauss),Canny operator in gradient algorithm,the step, the way and the standard of the image segmentation,we can find out the three standard of Canny edge operator the edge detection result of reaching most satisfy. And the key point of threshold segmentation lie in fixing the threshold value, it is good to have only threshold value to determine it then can be effective to divide object and background,but this kind of method is good to those gray scales,the big difference image effect between the background and obiect. The basic idea of area is to form the new region from similar nature.And also, this paper analyses the research direction of image segmentation technology at the same time. Key words: image processing image segmentation operator

数字图像处理实验 图像分割

实验报告 实验名称实验四图像分割 课程名称数字图像处理A 姓名成绩 班级学号 日期地点 1.实验目的 (1)了解并掌握图像分割的基本原理; (2)编写程序使用Hough变换处理图像,进行线检测;

(3)编写程序使用阈值处理方法进行图像分割,根据实验结果分析效果; (4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。 2.实验环境(软件条件) Windws2000/XP MATLAB 7.0 3.实验方法 对256级灰度的数字图像camera.bmp(如图4.1所示)和car.bmp(如图4.2所示)进行如下处理: (1)对图像camera.bmp进行Hough变换进行线检测,显示处理前、后图像: 思考如何利用Hough变换进行圆检测; (2)对图像car.bmp分别利用不同的阈值处理方法进行图像中汽车及车牌的分割,显示处理前、后图像;思考不同的阈值处理算法对分割效果的影响? 4.实验分析 实验原理 Hough变换是最常用的直线提取方法,它的基本思想是:将直线上每一个数据点变换为参数平面中的一条直线或曲线,利用共线的数据点对应的参数曲线相交于参数空间中一点的关系,使直线的提取问题转化为计数问题。Hough变换提取直线的主要优点是受直线中的间隙和噪声影响较小。 思考: Hough变换对圆的检测: Hough变换的基本原理在于,利用点与线的对偶性,将图像空间的线条变为参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线。 圆的方程为:222 ()() x a y b r -+-=,通过Hough变换,将图像空间(,) x y对应到参数空间(,,) a b r。 第一题结果图 图4.1 实验图像camera.bmp 图4.2 实验图像car.bmp

北航数字图象处理实验报告

数字图像处理实验报告 实验二图像变换实验 1.实验目的 学会对图像进行傅立叶等变换,在频谱上对图像进行分析,增进对图像频域上的感性认识,并用图像变换进行压缩。 2.实验内容 对Lena或cameraman图像进行傅立叶、离散余弦、哈达玛变换。在频域,对比他们的变换后系数矩阵的频谱情况,进一步,通过逆变换观察不同变换下的图像重建质量情况。 3. 实验要求 实验采用获取的图像,为灰度图像,该图像每象素由8比特表示。具体要求如下: (1)输入图像采用实验1所获取的图像(Lena、Cameraman); (2)对图像进行傅立叶变换、获得变换后的系数矩阵; (3)将傅立叶变换后系数矩阵的频谱用图像输出,观察频谱; (4)通过设定门限,将系数矩阵中95%的(小值)系数置为0,对图像进行反变换,获得逆变换后图像; (5)观察逆变换后图像质量,并比较原始图像与逆变后的峰值信噪比(PSNR)。 (6)对输入图像进行离散余弦、哈达玛变换,重复步骤1-5; (7)比较三种变换的频谱情况、以及逆变换后图像的质量(PSNR)。 4. 实验结果 1. DFT的源程序及结果 J=imread('10021033.bmp'); P=fft2(J); for i=0:size(P,1)-1 for j=1:size(P,2) G(i*size(P,2)+j)=P(i+1,j); end end Q=sort(G); for i=1:size(Q,2) if (i=size(Q,2)*0.95) t=Q(i); end end G(abs(G)

部分图像分割的方法(matlab)

大津法: function y1=OTSU(image,th_set) image=imread('color1.bmp'); gray=rgb2gray(image);%原图像的灰度图 low_high=stretchlim(gray);%增强图像,似乎也不是一定需要gray=imadjust(gray,low_high,[]); % subplot(224);imshow(gray);title('after adjust'); count=imhist(gray); [r,t]=size(gray); n=r*t; l=256; count=count/n;%各级灰度出现的概率 for i=2:l if count(i)~=0 st=i-1; break end end %以上循环语句实现寻找出现概率不为0的最小灰度值 for i=l:-1:1 if count(i)~=0; nd=i-1; break end end %实现找出出现概率不为0的最大灰度值 f=count(st+1:nd+1); p=st;q=nd-st;%p和分别是灰度的起始和结束值 u=0; for i=1:q; u=u+f(i)*(p+i-1); ua(i)=u; end

%计算图像的平均灰度值 for i=1:q; w(i)=sum(f(1:i)); end %计算出选择不同k的时候,A区域的概率 d=(u*w-ua).^2./(w.*(1-w));%求出不同k值时类间方差[y,tp]=max(d);%求出最大方差对应的灰度级 th=tp+p; if thth) y1(i,j)=x1(i,j); else y1(i,j)=0; end end end %上面一段代码实现分割 % figure,imshow(y1); % title('灰度门限分割的图像');

基于MATLAB的图像分割处理

学号:2011 —2012学年第 1 学期 专业综合课程设计报告 课题:基于MATLAB的图像分割处理 专业:通信工程 班级: 姓名: 指导教师: 成绩: 电气工程系 2011年11月16日

课程设计任务书 学生班级学生姓名:学号: 设计课题:基于MATLAB的图像分割处理 起止日期:2011.11.06—2011.11.16 指导教师: 设计要求: 本设计对图像分割中的小波变换进行了较为详细的综述。简要介绍医学图像分割的研究目的和意义,给出医学图像分割的基本方法及步骤。在对医学图像分割问题的起源、发展和研究现状进行简要综述的基础上,介绍该领域当前的研究热点及论文的主要研究内容。

图像分割是一种重要的图像分析技术。对图像分割的研究一直是图像技术 研究中的热点和焦点。图像分割是一个很关键的图像分析技术,是由图像处理 进到图像分析的关键步骤.它的目的就是把图像中感兴趣的那部分分割出来供 大家研究、处理和分析,一直都是图像技术研究中的热点。但是由于地域的差别,图像分割一直都没有一个比较通用的算法。 而对图像进行分割的方法有多种,阈值法是其中的一种简单实用的方法。本文主要对阈值法和matlab进行研究,并将它们结合起来以提高图像分割的准确性。本文的主要研究内容如下: 1) 分析了阈值分割方法近年来的新进展,并分析了图像阈值分割中的某些经典方法,如全局阈值方法、局部阈值方法、动态阈值方法等。2)讨论了matlab的主要应用及其特点。3) 将matlab应用于阈值分割,并做实验将其实现。 本次的设计报告首先介绍了双峰法以及最大类方差自动阈值法,然后重点介绍一种基于小波变换的图像分割方法,该方法先对图像的灰度直方图进行小波多尺度变换,然后从较大的尺度系数到较小的尺度系数逐步定位出灰度阈值。最后,对这几种算法的分割效果进行了比较。实验结果表明, 本设计能够实时稳定的对目标分割提取,分割效果良好。医学图像分割是医学图像处理中的一个经典难题。图像分割能够自动或半自动描绘出医学图像中的解剖结构和其它感兴趣的区域,从而有助于医学诊断。 关键词:小波变换;图像分割;阈值

图像分割实验报告汇总

图像分割实验报告 一、实验目的 1. 掌握图像分割的基本思想,了解其分割技术及其计算策略; 2. 学会从图像处理到分析的关键步骤,掌握图像分割过程; 3. 了解图像分割的意义,进一步加深对图像分析和理解; 4. 掌握基本分割方法:迭代分割和OTSU图像分割,并编程实现。 二、实验原理 (一)迭代阈值分割选取的基本思路是:首先根据图像中物体的灰度分布情况,选取一个近似阈值作为初始阈值,一个较好的方法就是将图像的灰度均值作为初始阈值,然后通过分割图像和修改阈值的迭代过程获得认可的最佳阈值。迭代式阈值选取过程可描述如下: 1. 计算初始化阈值g0=(g max+g min) ; 2 2. 根据g0,将图像分为两部分,分别计算灰度值期望,取其平均值为g1; 3. 如此反复迭代,当|g n-g n?1|足够小时,停止迭代,取T=g n即为最终阈值。 (二)OTSU图像分割(最大类间方差法)是一种自适应的阈值确定的方法,是按图像的灰度特性,将图像分成背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别

越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。以最佳门限将图像灰度直方图分割成两部分,使两部分类间方差取最大值,即分离性最大。OTSU阈值选取过程可描述如下: 1.记T为目标与背景的分割阈值,目标点数占图像比例为w1,平均灰度为u1;背景点数占图像比例为w2,平均灰度为u1; 2.图像的总平均灰度为:u=w1*u1+w2*u2; 3.目标和背景图象的方差:g=w1*(u1-u)*(u1-u)+w1*(u2-u)*(u2-u)=w1*w2*(u1-u2)*(u1-u2); 4.当方差g最大时,可以认为此时前景和背景差异最大,此时的灰度T是最佳阈值。 二、实验内容 1. 利用C++编程实现迭代阈值图像分割算法; 2. 利用C++编程实现OTSU动态阈值图像分割算法。 三、实验框图

两个matlab实现最大熵法图像分割程序

%两个程序,亲测可用 clear all a=imread('moon.tif'); figure,imshow(a) count=imhist(a); [m,n]=size(a); N=m*n; L=256; count=count/N;%%每一个像素的分布概率 count for i=1:L if count(i)~=0 st=i-1; break; end end st for i=L:-1:1 if count(i)~=0 nd=i-1; break; end end nd f=count(st+1:nd+1); %f是每个灰度出现的概率 size(f) E=[]; for Th=st:nd-1 %%%设定初始分割阈值为Th av1=0; av2=0; Pth=sum(count(1:Th+1)); %%%第一类的平均相对熵为 for i=0:Th av1=av1-count(i+1)/Pth*log(count(i+1)/Pth+0.00001); end %%%第二类的平均相对熵为 for i=Th+1:L-1 av2=av2-count(i+1)/(1-Pth)*log(count(i+1)/(1-Pth)+0.00001); end E(Th-st+1)=av1+av2; end position=find(E==(max(E))); th=st+position-1

for i=1:m for j=1:n if a(i,j)>th a(i,j)=255; else a(i,j)=0; end end end figure,imshow(a); %%%%%%%%%%%%%%%%%%%%%2-d 最大熵法(递推方法) %%%%%%%%%%% clear all; clc; tic a=imread('trial2_2.tiff'); figure,imshow(a); a0=double(a); [m,n]=size(a); h=1; a1=zeros(m,n); % 计算平均领域灰度的一维灰度直方图 for i=1:m for j=1:n for k=-h:h for w=-h:h; p=i+k; q=j+w; if (p<=0)|( p>m) p=i; end if (q<=0)|(q>n) q=j; end a1(i,j)=a0(p,q)+a1(i,j); end end a2(i,j)=uint8(1/9*a1(i,j)); end

相关文档
相关文档 最新文档