• Halcon图像分割


    auto_threshold(Image : Regions : Sigma : )
    * 对单通道图像做自动阈值(灰度直方图确定)分割
    Sigma:灰度直方图高斯光滑核(标准差),光滑消除噪声,并且分割区域
    binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
    * 使用二值阈值进行图像分割,用于背景色与前景色色差较为分明的图像,自动选取Sigma值进行高斯光滑处理,光滑直到灰度直方图只有一个最小值,这个最小值就是阈值;
    Method:分割方法,只适用于具有双峰直方图的图像。
        smooth_histo方法提供了与bin_threshold操作符相同的功能。
        max_separability方法倾向于为UsedThreshold确定较小的值。此外,它对距离光谱其余部分很远的柱状图中孤立的薄峰不太敏感,而且通常比smooth_his更快
    LightDark:提取前景色还是背景色 'light' 'dark'
    char_threshold(Image, HistoRegion : Characters : Sigma, Percent : Threshold)
    * 为提取字符执行阈值分割,适用于不是很明显的出现极小值的情况(色差相对小)
    Image:用于提取字符的图像
    HistoRegion:要提取字符所在的Region,可以和Image一样
    Percent:灰度直方图中的灰度差的百分比

    此方法关键在于找到灰度直方图中的最大值,在最大值的左侧寻找关键阈值,Threshold所对应的灰度值频率不能大于最大值频率乘以(100.0-Persent)
    histogram[Threshold]*100.0 < histogram[maximum]*(100.0-Percent)
    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
    * 动态局部阈值分割图像,根据像素周围的情况来决定阈值 OrigImage:单通道原图像 ThresholdImage:用于对比局部阈值的图像,通常是原始图像的平滑版本(如mean_image、binomial_filter、gauss_filter等) RegionDynThresh:阈值分割后获得的区域 Offset:原图像与对比图像的像素值偏移量 LightDark:决定选取暗边界还是亮边界以及相似边界
    'light' OrigImage >= ThresholdImage + Offset
    'dark' OrigImage <= ThresholdImage - Offset
    'equal' ThresholdImage - Offset <= OrigImage <= ThresholdImage + Offset
    'not_equal' ThresholdImage - Offset > OrigImage or OrigImage > ThresholdImage + Offset
    dual_threshold(Image : RegionCrossings : MinSize, MinGray, Threshold : )
    * 通过阈值分割有符号图像(灰度值有正负之分),通常前面伴随着如diff_of_gauss,sub_image等这样的算子使用
    fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
    * 使用全局阈值对图像进行快速阈值化
    MinSize 要提取的对象的最小大小
    在支持SSE2指令集的多核计算机上,threshold很可能比fast_threshold更快。只有在这些特性不可用的情况下,才可能首选fast_threshold而不是threshold,例如在嵌入式平台上
    某些情况下fast_threshold的效果比threshold效果好
    hysteresis_threshold(Image : RegionHysteresis : Low, High, MaxLength : )
    * 对图像执行一个滞后阈值操作(由Canny引入)。在图像上执行一个滞后阈值操作(由Canny引入)。输入图像中灰度值大于或等于High的所有点立即被接受(“安全”点)。
    相反,所有灰度值小于Low的点立即被拒绝。如果“潜在”点的路径连接到“安全”点,则接受在两个阈值之间有灰度值的“潜在”点,这些“潜在”点的长度最多为MaxLength点。

    通过sub_image对两帧图像做差,得到图三的图像,其中中亮部分小车灰度值大于零,暗部分小车灰度值小于零,使用dual_threshold进行分割得到图四。

    dev_close_window ()
    read_image (Traffic1, 'traffic1')
    read_image (Traffic2, 'traffic2')
    get_image_size (Traffic1, Width, Height)
    dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowHandle)
    convert_image_type (Traffic1, ImageConverted1, 'int2')
    convert_image_type (Traffic2, ImageConverted2, 'int2')
    sub_image (ImageConverted1, ImageConverted2, ImageSub, 1, 0)
    dual_threshold (ImageSub, RegionDiff, 500, 20, 10)
    var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
    * 根据掩膜局部均值和标准差来做与会分割
    MaskWidth,MaskHeight:掩膜大小,在此区域求均值方差
    StdDevScale:标准差因子
    AbsThreshold:像素值与均值对比的最差值

    StdDevScale>=0,则
    v(x,y) = max(StdDevScale * d(x,y), AbsThreshold)
    如果参数StdDevScale<0,则
    v(x,y) = min(StdDevScale * d(x,y), AbsThreshold)

    LightDark = 'light' 获得亮边界
    Image(x,y) >= mean(x,y) + v(x,y)

    LightDark = 'dark' 获得暗边界
    Image(x,y) < mean(x,y) - v(x,y)
  • 相关阅读:
    问题 B: 投简历
    问题 C: P4 游戏中的Human角色
    绘制直方图
    绘制条形图
    绘制散点图
    问题 A: E2 驾驭const
    问题 B: 矩形类中运算符重载【C++】
    extjs tips
    extjs
    struts1
  • 原文地址:https://www.cnblogs.com/zhengzc/p/11342874.html
Copyright © 2020-2023  润新知