您现在的位置:首页 >> 技术文章 >> 图像语音处理 >> 内容

阈值分割-毕业设计论文

时间:2017-6-30 17:36:52 点击:

  核心提示:阈值分割...

图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域。本文是在阅读大量国内外相关文献的基础上,主要针对基于各像素值的阈值分割算法进行图像分割的技术做处理。

 

关键词:图像分割  阈值选取  全局阈值  局部阈值  直方图

1 阈值分割

 1.1 图像分割的概述

在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,预先定义的目标可以对应单个区域,也可以对应多个区域。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。

所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提。同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。

阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。

1.2 阈值分割的基本原理

图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。

clc

clear all;

%%%%%%%%%%%%极小值图像切割%%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('C:\Documents and Settings\Administrator\桌面\课程设计题目\2.bmp');

figure(1);

subplot(121),imhist(I); % 观察灰度直方图, 灰度80处有谷,确定阈值T=80

title('直方图');

subplot(1,2,2),imshow(I);

title('原图')

I1=im2bw(I,80/255); % im2bw函数需要将灰度值转换到[0,1]范围内

figure(2)

subplot(3,2,1),imshow(I1);

title('极小值点阈值切割');

%%%%%%%%%%%%%%%%%迭代法图像切割%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('C:\Documents and Settings\Administrator\桌面\课程设计题目\2.bmp');

[x,y]=size(I);

a=imhist(I);

I=double(I);  

max=1;

for i=2:x

    if a(max)<a(i)

        max=i;

    end

end

min=1;

for i=2:x

    if a(min)>a(i)

        min=i;

    end

end      

z0=max

z1=min

T=(z0+z1)/2;                     

TT=0;

S0=0; n0=0;

S1=0; n1=0;

allow=0.5;                      

d=abs(T-TT);

count=0;                       

while(d>=allow)                

    count=count+1;

    for i=1:x

        for j=1:y

            if (I(i,j)>=T)

                S0=S0+I(i,j);

                n0=n0+1;

            end

            if (I(i,j)<T)

                S1=S1+I(i,j);

                n1=n1+1;

            end

        end

    end

    T0=S0/n0;

    T1=S1/n1;

    TT=(T0+T1)/2;

    d=abs(T-TT);

    T=TT;

end

tmax2=T %tmax2 =77.2717

Seg=zeros(x,y);

for i=1:x

    for j=1:y

        if(I(i,j)>=T)

            Seg(i,j)=1;              

        end

    end

end

subplot(322),imshow(Seg);

title('迭代阈值分割1');

SI=1-Seg;  

subplot(323),imshow(SI);

title('迭代阈值分割2');

%%%%%%%%%%%%%%%%%%最优法切割%%%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('C:\Documents and Settings\Administrator\桌面\课程设计题目\2.bmp');

[m,n]=size(I);

dt = 1;

d = 0.3;

I9 = I;

I9=double(I9);

while (abs(dt-d)>0.001)

    background = 0;

    object = 0;

    bm = 0;%背景象素数

    om = 0;%前景象素数

    for i=1:m

        for j=1:n

            if (I9(i,j)<d)

                background = background +I9(i,j);

                bm = bm+1;

            else

                object = object + I9(i,j);

                om = om+1;

            end

        end

    end

    dt = d;

    d = (background/bm+object/om)/2; %假设先验概率相同

end

tmax3=d  %tmax3 =79.9102

for i = 1:m

    for j = 1:n

          if I9(i,j)<d

              I9(i,j)=0;

          else

              I9(i,j)=1;

        end

    end

end

subplot(324),imshow(I9);

title('最优阈值法切割');

%%%%%%%%%%%%%%%%%%%%最大方差法图像切割%%%%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('C:\Documents and Settings\Administrator\桌面\课程设计题目\2.bmp');

[r,t]=size(I);

count=imhist(I);

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;%pq分别是灰度的起始和结束值

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);%求出最大方差对应的灰度级

tmax4=tp % tmax=96

y1=zeros(r,t);

for i=1:r

        for j=1:t

            x1(i,j)=double(I(i,j));

        end

end

for i=1:r

        for j=1:t

            if (x1(i,j)>tp)

                y1(i,j)=x1(i,j);

            else

                y1(i,j)=0;

            end

        end

end

%上面一段代码实现分割

subplot(325),imshow(y1);

title('最大方差法分割的图像');

%%%%%%%%%%%%%%%%%%%最大熵法图像切割%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('C:\Documents and Settings\Administrator\桌面\课程设计题目\2.bmp');

X=double(I);

[M,N]=size(I);

hist=zeros(1,256);

tic;

for i=1:1:M

    for j=1:1:N

        fi=X(i,j);

        hist(fi+1)=hist(fi+1)+1;

    end

end

i=1:1:256;

p=zeros(1,256);

for i=1:1:256

    p(i)=hist(i)/(M*N);

end

E1=zeros(1,256);

E2=zeros(1,256);

P=zeros(1,256);

E=zeros(1,256);

 

for t=1:1:256

    for i=1:1:t

        P(t)=P(t)+p(i);

    end

        if(P(t)>0&&P(t)<1)

           for i=1:1:t

               E1(t)=E1(t)-(p(i)/P(t))*log(p(i)/P(t)+eps);

           end

           for i=t+1:1:256

               E2(t)=E2(t)-(p(i)/(1-P(t)))*log(p(i)/(1-P(t))+eps);

           end

       end

       E(t)=E1(t)+E2(t);

end

MAX=0.000001;

for t=68:1:156

    if(E(t)>MAX)

        MAX=E(t);

        th=t;

    end

end

tmax5=th  %tmax5=84

g=zeros(M,N);

for i=1:1:M

   for j=1:1:N

       if(th<X(i,j))

         X(i,j)=1;

         g(i,j)=X(i,j);

     else X(i,j)=0;

         g(i,j)=X(i,j);

     end

 end

end

X=X.*255;

X=uint8(X);

subplot(326),imshow(X);

title('最大熵阈值分割图');

t_eclapsed=toc;


作者:阈值分割 来源:网络
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2018 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment