文档视界 最新最全的文档下载
当前位置:文档视界 › 用matlab实现自适应图像阈值分割最大类方差法代码

用matlab实现自适应图像阈值分割最大类方差法代码

用matlab实现自适应图像阈值分割最大类方差法代码
用matlab实现自适应图像阈值分割最大类方差法代码

%用matlab实现自适应图像阈值分割最大类方差法代码clear;

warning off;

SE = strel('diamond',4);

BW1 = imread('cameraman.tif');

BW2 = imerode(BW1,SE);

BW3 = imdilate(BW2,SE);

BW4 = BW1-BW3;

%rgb转灰度

if isrgb(BW4)==1

I_gray=rgb2gray(BW4);

else

I_gray=BW4;

end

figure,imshow(I_gray);

I_double=double(I_gray);%转化为双精度

[wid,len]=size(I_gray);

colorlevel=256; %灰度级

hist=zeros(colorlevel,1);%直方图

%threshold=128; %初始阈值

%计算直方图

for i=1:wid

for j=1:len

m=I_gray(i,j)+1;

hist(m)=hist(m)+1;

end

end

hist=hist/(wid*len);%直方图归一化

miuT=0;

for m=1:colorlevel

miuT=miuT+(m-1)*hist(m);

end

xigmaB2=0;

for mindex=1:colorlevel

threshold=mindex-1;

omega1=0;

omega2=0;

for m=1:threshold-1

omega1=omega1+hist(m);

end

omega2=1-omega1;

miu1=0;

miu2=0;

for m=1:colorlevel

if m

miu1=miu1+(m-1)*hist(m);

else

miu2=miu2+(m-1)*hist(m);

end

end

miu1=miu1/omega1;

miu2=miu2/omega2;

xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;

xigma(mindex)=xigmaB21;

if xigmaB21>xigmaB2

finalT=threshold;

xigmaB2=xigmaB21;

end

end

fT=finalT/255%阈值归一化

T=graythresh(I_gray)%matlab函数求阈值

for i=1:wid

for J=1:len

if I_double(i,j)>finalT

bn(i,j)=1;

else

bin(i,j)=0;

end

end

end

figure,imshow(bin);

figure,plot(1:colorlevel,xigma);

clear;

warning off;

SE = strel('diamond',4);

BW1 = imread('img1.bmp');

BW2 = imerode(BW1,SE);

BW3 = imdilate(BW2,SE);

BW4 = BW1-BW3;

%rgb转灰度

if isrgb(BW4)==1

I_gray=rgb2gray(BW4);

else

I_gray=BW4;

end

figure,imshow(I_gray);

I_double=double(I_gray);%转化为双精度

[wid,len]=size(I_gray);

colorlevel=256; %灰度级

hist=zeros(colorlevel,1);%直方图

%threshold=128; %初始阈值

%计算直方图

for i=1:wid

for j=1:len

m=I_gray(i,j)+1;

hist(m)=hist(m)+1;

end

end

hist=hist/(wid*len);%直方图归一化

miuT=0;

for m=1:colorlevel

miuT=miuT+(m-1)*hist(m);

end

xigmaB2=0;

for mindex=1:colorlevel

threshold=mindex-1;

omega1=0;

omega2=0;

for m=1:threshold-1

omega1=omega1+hist(m);

end

omega2=1-omega1;

miu1=0;

miu2=0;

for m=1:colorlevel

if m

miu1=miu1+(m-1)*hist(m);

else

miu2=miu2+(m-1)*hist(m);

end

end

miu1=miu1/omega1;

miu2=miu2/omega2;

xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;

xigma(mindex)=xigmaB21;

if xigmaB21>xigmaB2

finalT=threshold;

xigmaB2=xigmaB21;

end

end

fT=finalT/255%阈值归一化

T=graythresh(I_gray)%matlab函数求阈值

for i=1:wid

for J=1:len

if I_double(i,j)>finalT

bn(i,j)=1;

else

bin(i,j)=0;

end

end

end

figure,imshow(bin);

figure,plot(1:colorlevel,xigma);

otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用

otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果 算法具体描述见otsu论文,或冈萨雷斯著名的数字图像处理那本书 这里给出程序流程: 1、计算直方图并归一化histogram 2、计算图像灰度均值avgValue. 3、计算直方图的零阶w[i]和一级矩u[i] 4、计算并找到最大的类间方差(between-class variance) variance[i]=(avgValue*w[i]-u[i])*(avgValue*w[i]-u[i])/(w[i]*(1-w[i])) 对应此最大方差的灰度值即为要找的阈值 5、用找到的阈值二值化图像 我在代码中做了一些优化,所以算法描述的某些地方跟程序并不一致 otsu代码,先找阈值,继而二值化 // implementation of otsu algorithm // author: onezeros(@https://www.docsj.com/doc/1016468973.html,) // reference: Rafael C. Gonzalez. Digital Image Processing Using MATLAB void cvThresholdOtsu(IplImage* src, IplImage* dst) { int height=src->height; int width=src->width; //histogram float histogram[256]= {0}; for(int i=0; iimageData+src->widthStep*i; for(int j=0; j

基于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;

自适应局部阈值

4.3.4自适应局部阈值 与全局阈值不同,局部阈值主要是通过考查在某一点或某一局部的特点,再根据灵活的判定原则来判定系数是“主噪”,还是“主信”,以实现去噪和保留信号之间的平衡,而且这些判定原则有时并不一定是从系数的绝对值来考虑的,而是从别的方面,例如从概率和模糊隶属度方面来考虑。 Vidakovic 等人利用主信系数和主噪系数在不同尺度中分布的不同特征,在Bayesian 框架下,结合假设检验,给出了一个阈值公式,并以此来对小波系数进行硬、软阈值处理;而Ching 则结合区间估计理论和假设检验的方法给出了另外一种局部阈值萎缩方法。实验结果表明,局部阈值确实比全局阈值对信号的适应能力好。 给定一个有较大白噪声的delmontl.mat图像。由于图像所含的噪声主要是白噪声,而且主要集中在图像的高频部分,所以我们可以通过全部滤掉图像中的高频部分实现图像的去噪。具体去噪过程可按照如下程序进行。 程序清单: %下面装入原始图像,X中含有被装载的图像 load wmandril; %画出原始图像 subplot(221);image(X);colormap(map); title('原始图像'); axis square %产生含噪图像 init=2055615866;randn('seed',init) x=X+38*randn(size(X)); %画出含噪图像 subplot(222);image(x);colormap(map); title('含噪声图像'); axis square; %下面进行图像的去噪处理 %用小波函数sym4对x进行2层小波分解 [c,s]=wavedec2(x,2,'sym4'); %提取小波分解中第一层的低频图像,即实现了低通滤波去噪

基于灰度直方图的图像分割阈值自适应选取方法

中北大学 毕业设计(论文)任务书 学院、系: 专业: 学生姓名:车永健学号: 设计(论文)题目:基于灰度直方图的图像分割阈值自适应选取方法 起迄日期: 2015年3月9日~2015年6月20日设计(论文)地点: 指导教师:郭晨霞 系主任: 发任务书日期:2015年 2 月25 日

任务书填写要求 1.毕业设计(论文)任务书由指导教师根据各课题的具体情况填写,经学生所在系的负责人审查、系领导签字后生效。此任务书应在毕业设计(论文)开始前一周内填好并发给学生; 2.任务书内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,不得随便涂改或潦草书写,禁止打印在其它纸上后剪贴; 3.任务书内填写的内容,必须和学生毕业设计(论文)完成的情况相一致,若有变更,应当经过所在专业及系主管领导审批后方可重新填写; 4.任务书内有关“学院、系”、“专业”等名称的填写,应写中文全称,不能写数字代码。学生的“学号”要写全号(如020*******,为10位数),不能只写最后2位或1位数字; 5.有关年月日等日期的填写,应当按照国标GB/T 7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。如“2004年3月15日”或“2004-03-15”。

毕业设计(论文)任务书

毕业设计(论文)任务书 3.对毕业设计(论文)课题成果的要求〔包括毕业设计(论文)、图纸、实物样品等): 1、论文一份; 2、程序代码及图像结果; 3、英文翻译一份。 4.毕业设计(论文)课题工作进度计划: 起迄日期工作内容 2015年 3月 9 日~ 3 月20日 4 月 1 日~ 4月 20 日 4 月 21 日~ 5月 10 日 5 月 11 日~ 6月 15 日 6 月 16 日~ 6月 19 日查找资料,完成开题报告; 学习有关知识,方案确定,完成中期报告;完善算法并仿真验证; 撰写、修改、评阅毕业论文; 论文答辩 学生所在系审查意见: 系主任: 年月日

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

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

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

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

用matlab实现自适应图像阈值分割最大类方差法代码

%用matlab实现自适应图像阈值分割最大类方差法代码clear; warning off; SE = strel('diamond',4); BW1 = imread('cameraman.tif'); BW2 = imerode(BW1,SE); BW3 = imdilate(BW2,SE); BW4 = BW1-BW3; %rgb转灰度 if isrgb(BW4)==1 I_gray=rgb2gray(BW4); else I_gray=BW4; end figure,imshow(I_gray); I_double=double(I_gray);%转化为双精度 [wid,len]=size(I_gray); colorlevel=256; %灰度级 hist=zeros(colorlevel,1);%直方图 %threshold=128; %初始阈值 %计算直方图 for i=1:wid for j=1:len m=I_gray(i,j)+1; hist(m)=hist(m)+1; end end hist=hist/(wid*len);%直方图归一化 miuT=0; for m=1:colorlevel miuT=miuT+(m-1)*hist(m); end xigmaB2=0; for mindex=1:colorlevel threshold=mindex-1; omega1=0; omega2=0; for m=1:threshold-1 omega1=omega1+hist(m); end omega2=1-omega1; miu1=0; miu2=0; for m=1:colorlevel if m

部分图像分割的方法(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

改进的自适应阈值Canny边缘检测_雒涛

第36卷第11期 光电工程V ol.36, No.11 2009年11月Opto-Electronic Engineering Nov, 2009 文章编号:1003-501X(2009)11-0106-06 改进的自适应阈值Canny边缘检测 雒 涛1, 2,郑喜凤1,丁铁夫1 ( 1. 中国科学院长春光学精密机械与物理研究所,长春130033; 2. 中国科学院研究生部,北京100039 ) 摘要:针对传统Canny边缘检测算法的阈值需要人为设定的缺陷,本文提出了一种新的自适应改进方法。该方法根据梯度直方图信息,提出梯度差分直方图的概念,同时,对图像进行自适应分类处理,使得算法不仅不需要人工设定阈值参数,而且还能有效地避免Canny算法在边缘寻找中的断边和虚假边缘现象。对边缘信息丰富程度不同的灰度图和彩色图像运用该方法寻找边缘的实验结果表明,对于在目标与背景交界处的多数像素梯度幅值较大的图片,该算法具有边缘检测能力强、自适应能力强的优点。 关键词:Canny算法;自适应;边缘检测;图像处理 中图分类号:TN247;TP391 文献标志码:A doi:10.3969/j.issn.1003-501X.2009.11.022 Improved Self-adaptive Threshold Canny Edge Detection LUO Tao1, 2,ZHENG Xi-feng1,DING Tie-fu1 ( 1. Changchun Institute of Optics, Fine Mechanics and Physics, Chinese Academy of Sciences, Changchun 130033, China; 2. Graduate School of Chinese Academy of Sciences, Beijing 100039, China ) Abstract: The two thresholds of classical Canny operator need to be set manually, which limits the application of this algorithm. Therefore, many researches about how to choose threshold adaptively are done to solve this problem. Based on the gradient histogram, a method of threshold-adaptable edge detection is proposed. This method is on the basis of gradient histogram difference diagram with adaptive image classification techniques. It not only automatically sets the two thresholds, but also avoids disconnected or false edges in detection. Experiments prove that the method is threshold-adaptive and advantageous for edge detection in color image whose pixels of larger gradient amplitude are mainly located in the edge between the target and background. Key words: Canny operator; threshold-adaptive; edge detection; image process 0 引 言 边缘是重要的图像特征。因此,边缘检测是图像处理与分析的基础性课题,受到人们广泛而深入的研究。传统边缘的检测算子,如Robert、Prewitt、Kirsch、Sobel、LoG、Canny等,本身存在种种不足,在许多情况下无法达到很好的检测效果。近年来,在传统方法的基础上,相继发展出了一批新的边缘检测方法,如曲面拟合法、基于自适应平滑滤波法、小波变换法等。尽管如此,Canny算子由于具有较好的信噪比和检测精度,仍然在图象处理领域得到广泛应用。 利用Canny算子进行边缘检测时,需要人为确定高、低阈值的参数,而且不同的阈值对边缘检测的结果影响很大。但是,在实际情况中,不同图像取得最佳边缘检测效果的阈值各不相同。如果简单地使用传 收稿日期:2009-05-12;收到修改稿日期:2009-07-14 基金项目:中国科学院东北振兴科技行动计划重点项目(DBZX-2-017);吉林省信息产业发展专项资金项目 作者简介:雒涛(1982-),男(汉族),山东济南人。博士研究生,主要研究图像处理与视频压缩。E-mail: luotaomao@https://www.docsj.com/doc/1016468973.html,。

部分图像分割的方法(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实现最大熵法图像分割程序

%两个程序,亲测可用 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

图像的阈值分割方法研究

第1章相关知识 1.1图像分割的概述 在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,预先定义的目标可以对应单个区域,也可以对应多个区域。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。 所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提。同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。 阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。 1.2 阈值分割的基本原理

基于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

自适应阈值化的函数

自适应阈值化的函数为: AdaptiveThreshold 自适应阈值方法 void cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C, int threshold_type=CV_THRESH_BINARY, int block_size=3, double param1=5 ); src 输入图像. dst 输出图像. max_value 使用CV_THRESH_BINARY 和CV_THRESH_BINARY_INV 的最大值. adaptive_method 自适应阈值算法使用:CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C (见讨论). threshold_type 取阈值类型:必须是下者之一 ?CV_THRESH_BINARY, ?CV_THRESH_BINARY_INV block_size 用来计算阈值的象素邻域大小: 3, 5, 7, ... param1 与方法有关的参数。对方法CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C,它是一个从均值或加权均值提取的常数(见讨论), 尽管它可以是负数。 函数cvAdaptiveThreshold 将灰度图像变换到二值图像,采用下面公式: threshold_type=CV_THRESH_BINARY: dst(x,y) = max_value, if src(x,y)>T(x,y)

一种自适应阈值的运动目标提取算法

万方数据

万方数据

?2382?计算机应用研究第27卷 称为(F,B)的最大类间方根一算术均值距离(maxclusters’squarerootarithmeticmeandivegence,MCSAM)。 2.2算法步骤 自适应阈值的运动目标提取算法的具体步骤如下: a)初始化:Threshold=Ave,No=0,N1=0,Gmyo=0,Gray。=0,MCSAM(F,B)=0,Times=0(表示迭代次数)。 b)如果Times<T(T为阈值调整次数,即最大迭代次数),Times++;否则,转步骤f)。 c)遍历图像,由上述定义分别计算Ⅳo,N。,Grayo,Gray。。 d)计算Aveo,AveI,∞o,∞1,Ave,CSAM(Fi,B1)。 e)如果MCSAM(F,B)<CSAM(f,曰;),则令MCSAM(F,B)=CSAM(Fi,B;),Threshold=Threshold+Step(Step表示阈值调整步长),转步骤b);否则,不变,Threshold=Threshold—Step,转步骤b)。 f)此时的MCSAM(,,鳓就是所要寻找的最佳阈值,算法结束。 将运动目标和背景作为两个聚类,把聚类问的方根一算术均值距离最大作为阈值选择的准则是本算法的核心。背景和运动目标之间的CSAM越大,说明构成图像的两部分差别越大,当部分目标错分为背景或者部分背景错分为目标时,都会导致两部分差别变小,使得CSAM值变小。因此,MCSAM意味着错分的概率最小,该方法能保证运动目标提取的准确性。2.3阈值更新策略 本文的算法主要采用两种方法进行阈值更新。第一种是定时更新,即在规定时间段中(通常3—5min),抽取10张连续图像序列利用该算法计算下一时间段差分图像的分割阈值。这种方式适用于背景缓慢变化的情况,如一天当中太阳光照的缓慢变化。第二种方法¨21是实时更新,若在当前帧图像与背景模型差分后所得差分图像中,∞。大于某一个阈值(通常取80%),则认为整个背景发生了变化;若连续多帧图像中这一比值依然很大,则不仅更新背景模型,同时更新阈值Thresh—old。这种方式适用于背景发生突变时的情况,如室内突然开灯或关灯。此外,如果图像中某些固定区域(非整幅图像)在较长时间内一直保持变化状态,有两种情况:一种是该区域像素灰度均值平稳变化,则认为该处背景的实际状态发生了变化(如户外汽车的停泊和驶走),此时执行分割阈值更新操作;另一种情况是该区域像素灰度均值变化不平稳,则该处背景可能存在显示器屏幕一类的物品,此时标记该区域,只检测该区域以外的图像,进行阈值更新。 3实验结果 利用本文的算法对大量实际视频图像序列进行了运动目标提取的实验,并且在实验中总结了阈值调整次数Tin螂和阈值调整步长Step的最优选择方法。 3.1阈值调整次数和阈值调整步长的确定 阈值调整次数和阈值调整步长为本算法中可调整的参数。对视频中图像序列计算分割阈值时,可通过改变阈值调整步长Step和阈值调整次数Tim鹤的值,比较每帧图像的分割阈值。由实验统计数据可知:分割阈值准确度与阈值调整步长成反 比,与阈值调整次数成正比,即阈值调整步长Step越小,阈值调整次数Times越大,得到的分割阈值准确度越高,但同时也带来了巨大的计算量。因此,本文采用如下办法解决此问题:首先固定Times值,选择阈值变化减缓时的最小Step值;然后固定Step,寻找阈值变化减缓时的最小Times值;将选定的Step作为阈值调整步长,Times作为阈值调整次数。 3.2运动目标提取实验 利用本文算法对不同情况下的多组视频序列进行了运动目标提取实验,视频包括室内、室外、开关照明等场景,并将运动目标区域提取结果与基于背景差法的运动目标提取结果进行了比较。其中,后处理采用数学形态学的开运算。 实验1图3为摄像头获取的室内场景关灯条件下的视频序列,其中,(a1)(a2)(a3)分别是该图像序列中第50、110和150帧图像;图3(c)为利用本文算法分别对图1(a)中图像进行运动目标提取的结果,运动目标完整,且干扰噪声点较少;图3(b)是利用普通背景差法进行运动目标提取的结果,可以看到除由于未进行阴影消除出现伪影外,效果与图3(c)相差不多。 (c)基于自适应闻值运动目标提取算法的提取结果 图3室内人侧面走过摄像头视频(关灯情况下)实验2图4为摄像头获取的室内场景突然开灯情况下的视频序列。其中,(a1)(a2)(a3)分别是该图像序列中第250、310和350帧图像;图4(b)是利用背景差法进行运动目标提取的结果,可以看到,提取效果较差,这是由于照明环境的突然变化,使背景模型发生改变,而运动目标提取阈值固定不变所导致的结果;图4(C)是利用本文算法对运动区域提取阈值进行了自动调整,使得分割更灵活可行,因此,提取结果依然是运动目标完整,且干扰噪声点较少,从而验证了本算法对环境亮度突变的鲁棒性。 实验3图5为摄像头获取的室外场景视频序列,室外场景中通常存在一些微小的变化区域,如树叶的轻微摆动。由于本文算法后处理采用了数学形态学方法,可以有效去除这些微小变化引起的误检。但是,当背景中变动区域的运动幅度非常大,如狂风中摇摆的树木等,则该处理方法便无法完全去除变动区域的影响。 执行时间也是本算法的一个重要检测指标,本文使用1.8GHzIntelPentium@DCPU,512 MB内存的普通Pc机,图像分 万方数据

基于阈值的图像分割方法

基于阈值的图像分割方法

课程结业论文 课题名称基于阈值的图像分割方法姓名湛宇峥 学号1412202-24 学院信息与电子工程学院专业电子信息工程 指导教师崔治副教授 2017年6月12日

湖南城市学院课程结业论文诚信声明 本人郑重声明:所呈交的课程结业论文,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担

目录 摘要 (1) 关键词 (1) ABSTRACT (2) KEY WORDS (2) 引言 (3) 1基于点的全局阈值选取方法 (4) 1.1最大类间交叉熵法 (5) 1.2迭代法 (6) 2基于区域的全局阈值选取方法 (7) 2.1简单统计法 (8) 2.3 直方图变化法 (9) 3局部阈值法和多阈值法 (10) 3.1水线阈值算法 (11) 3.2变化阈值法 (12) 4仿真实验 结论 (12) 参考文献 (13) 附录

基于阈值的图像分割方法 摘要:图像分割多年来一直受到人们的高度重视,至今这项技术也是趋于成熟,图像分割方法类别也是不胜枚举,近年来每年都有上百篇有关研究报道发表。图像分割是由图像处理进到图像分析的关键环节,是指把图像分成各具特性的区域并提取出有用的目标的技术和过程。在日常生活中,人们对图片的要求也是有所提高,在对图像的应用中,人们经常仅对图像中的某些部分感兴趣,这些部分就对应图像中的特定的区域,为了辨识和分析目标部分,就需要将这些有关部分分离提取出来,因此就要应用到图像分割技术。 关键词:图像分割;阈值;matlab

车牌图像分割matlab代码

图像分割matlab代码 作者:佚名发布时间:2010-1-1 阅读次数:498 字体大小: 【小】【中】【大】 % This is a program for extracting objects from an image. Written for vehicle number plate segmentation and extraction % Authors : Jeny Rajan, Chandrashekar P S % U can use attached test image for testing % input - give the image file name as input. eg :- car3.jpg clc; clear all; k=input('Enter the file name','s'); % input image; color image im=imread(k); im1=rgb2gray(im); im1=medfilt2(im1,[3 3]); %Median filtering the image to remove noise% BW = edge(im1,'sobel'); %finding edges [imx,imy]=size(BW); msk=[0 0 0 0 0; 0 1 1 1 0; 0 1 1 1 0; 0 1 1 1 0; 0 0 0 0 0;]; B=conv2(double(BW),double(msk)); %Smoothing image to reduce the number of connected components L = bwlabel(B,8);% Calculating connected components mx=max(max(L)) % There will be mx connected components.Here U can give a value between 1 and mx for L or in a loop you can extract all connected components % If you are using the attached car image, by giving 17,18,19,22,27,28 to L you can extract the number plate completely. [r,c] = find(L==17); rc = [r c]; [sx sy]=size(rc);

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