zoukankan      html  css  js  c++  java
  • 阈值分割算子之OSTU算法

    1、原理参考:https://www.cnblogs.com/guopengfei/p/4759569.html

    2、公式推导:

          

    3、同halcon的binary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold3)算子。

        具体实现如下:

    gray_histo (Region, Image, AbsoluteHisto, RelativeHisto)
    get_image_size (Image, Width, Height)
    TotalSize:=Width*Height
    intensity (Region, Image, avgValue, Deviation)//avgValue图像总平均灰度
    MaxDiff:=0.0
    Diff:=0.0 //方差
    Thre:=0
    delta_max:=0
    for i := 0 to 255 by 1
        w0:=0.0
        u0:=0.0
        w1:=0.0
        u1:=0.0
        uo_temp:=0
        u1_temp:=0
        delta_temp:=0
        **背景部分
        for j:=0 to i by 1      
            w0:=w0+AbsoluteHisto[j]
            uo_temp:=uo_temp+j*AbsoluteHisto[j]
        endfor
        **前景部分
        w1:=TotalSize-w0
        u1_temp:=avgValue*TotalSize-uo_temp
        **计算两类的平均灰度
        if(w0==0 or w1==0)
            u0:=0
            u1:=0
        else
            u0:=uo_temp/w0   
            u1:=u1_temp/w1 
        endif 
        **依次找到最大类间方差下的阈值
        delta_temp:=w0*w1*pow((u0-u1),2)
        if(delta_temp>delta_max)
            delta_max := delta_temp
            Thre:=i
        endif  
    endfor
    return ()
    

    优化后的代码实现如下:

    gray_histo (Region, Image, AbsoluteHisto, RelativeHisto)
    intensity (Region, Image, avgValue, Deviation)//avgValue图像总平均灰度
    wk:=0.0 //分开后前景像素点数占图像的比例
    uk:=0.0 //分开后前景像素数的平均灰度值
    MaxDiff:=0.0
    Diff:=0.0 //方差
    Thre:=0
    for Index := 0 to 255 by 1
        wk:=wk+RelativeHisto[Index]
        uk:=uk+RelativeHisto[Index]*Index
        if(wk<=0.0 or wk>=1.0)
            Diff:=0
        else
            Diff:=(avgValue*wk-uk)*(avgValue*wk-uk )/(wk*(1-wk))
        endif
        if(Diff>MaxDiff)
            MaxDiff:=Diff
            Thre:=Index
        endif
    endfor
    return ()

      

  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/baiyy-daheng/p/11421537.html
Copyright © 2011-2022 走看看