• 大小: 2.89MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-27
  • 语言: 其他
  • 标签: 一维OTSU  

资源简介

一维OTSU算法及相应的论文,希望对学习这方面的朋友有所帮。

资源截图

代码片段和文件信息

    function ostu1
    %原始的一维otsu算法
    close all;
    clear all;
    tic;
    I_gray = imread(‘f:\学习\数字图像处理\棉花布匹瑕疵检测\棉花\MyTest\方智图像库\qiche.jpg‘);
    I_gray = rgb2gray(I_gray);
    figureimshow(I_gray);
    I_d = double(I_gray);%转化为双精度
    [widlen] = size(I_gray);
    graylevel = 256;  %灰度级

     %统计直方图
    % hist=imhist(I_gray_h);      %灰度级出现的次数
    hist=zeros(graylevel1);       %直方图
    for i=1:wid
        for j=1:len
            m=uint8(I_gray(ij))+1;        %像素值,加1是因为m作为索引不能为0
            hist(m)=hist(m)+1;      %灰度级出现的次数
        end
    end
    hist=hist/(wid*len);       %直方图归一化灰度级出现的频率

    %整幅图像的均值
    miuT=0;
    for m=1:graylevel
        miuT=miuT+(m-1)*hist(m);
    end

    %遍历所有灰度值求最佳阈值
    xigmaB2=0;
    for k=2:graylevel
        threshold=k-1;

        %两部分各自出现的概率
        omega1=0;
        miu1=0;
        for m=1:threshold               
              omega1=omega1+hist(m);
              miu1=miu1+(m-1)*hist(m);
        end
        omega2=1-omega1;
        miu2=miuT-miu1;

        if omega1==0||omega1==1     %omeiga要做分母不能为0
            continue;
        end
        miu1=miu1/omega1;
        miu2=miu2/omega2;

        %最大类间方差的判断
    %     xigmaB=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;
        xigmaB=omega1*omega2*(miu1-miu2)^2;
        if xigmaB>xigmaB2
            T=threshold;
            xigmaB2=xigmaB;
        end
    end       %阈值归一化
    bin=zeros(widlen);
    for i=1:wid
        for j=1:len
            if I_d(ij)>T
                bin(ij)=1;
            end
        end
    end
    figureimshow(bin);
    toc;
    
    
    
% % 全局变量(迭代阈值)
% function  quanju
% data=imread(‘f:\学习\数字图像处理\棉花布匹瑕疵检测\棉花\MyTest\方智图像库\houzi.jpg‘);
% figureimshow(data);
% data = rgb2gray(data);
% T=0.5*(double(min(data(:)))+double(max(data(:))));%设计初始的估计值(此时如果没有(:)的话,求出来的T是个向量而不是一个数值)
% done=false;    %迭代完成标志(意思是done=0)
% while ~done   %迭代循环(done不为0就执行下面的循环语句;done为0,~done不为0,当done不为0时,~done为0)
%     g=data>=T;
%     Tnext=0.5*(mean(data(g))+mean(data(~g)));   %两范围的均值
%     done=abs(T-Tnext)<0.5;%迭代值与原来的阈值之差小于0.5,迭代结束(满足此条件也直接结束循环)
%     T=Tnext;
% end
% figureimshow(g);
%     

    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-12-06 21:54  一维OTSU\
     文件     3150870  2012-05-07 09:42  一维OTSU\04310076.pdf
     文件        2639  2012-09-15 15:33  一维OTSU\ostu1.asv
     文件        2497  2012-10-25 15:33  一维OTSU\ostu1.m

评论

共有 条评论

相关资源