精华内容
下载资源
问答
  • dyn_threshold

    2020-11-23 10:00:44
    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark ) 参数分析: OrigImage:需要进行阈值分割的原始图像 ThresholdImage: 通过一定图像预处理得到的阈值图像(这个预处理通常是对原图...

    在图像处理的时候会遇到背景和ROI区域难以提取的情况。不能简单的使用一个全局阈值来对图像进行分割。这时会用到动态阈值分割的方法:

    1. 算子结构

    首先看dyn_threshold 算子参数
    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark )
    参数分析:
    OrigImage:需要进行阈值分割的原始图像

    ThresholdImage: 通过一定图像预处理得到的阈值图像(这个预处理通常是对原图应用mean_image/gauss_image/binomial_filter 处理后的图像)
    RegionDynThresh: 对原图进行阈值分割后输出图像
    Offset: 是一个阈值调节值,在做对比时,需要和ThresholdImage上某一点像素值同时作用。
    LightDark:是一个关键选择,’dark’, ‘light’, ‘equal’, ‘not_equal’一共有4种选择,明、暗、同、不同

    2. 分析

    根据Halcon帮助文档种给出的 dyn_threshold的分割阈值的计算方式
    g_o=g_[OrigImage]
    g_t=g_[ThresholdImage]
    当选择light模式
    阈值计算公式:
    for LightDark = ‘light’ is:
    g_o >= g_t + Offset
    即为原图中大于等于g_t + Offset点的像素值被选中。

    当选择dark 模式
    For LightDark = ‘dark’ the condition is:
    g_o <= g_t - Offset
    即为原图中小于等于g_t - Offset点的像素值被选中。

    当选择equal 模式时:
    For LightDark = ‘equal’ it is:
    g_t - Offset <= g_o <= g_t + Offset
    原图中像素值在g_t - Offset 和 g_t + Offset之间的像素点被选中。

    当选择not_equal模式时
    Finally, for LightDark = ‘not_equal’ it is:
    g_t - Offset > g_o or g_o > g_t + Offset
    原图中像素值在g_t - Offset 和 g_t + Offset之外的像素点被选中。

    展开全文
  • dyn_threshold 算子

    2020-10-15 16:53:47
    dyn_threshold 算子 ** 一、dyn_threshold 算子参数: 1、输入参数:OrigImage:需要进行阈值分割的原始图像 2、输入参数:ThresholdImage: 通过一定图像预处理得到的阈值图像 3、输出参数:RegionDynThresh: 对原图...

    **

    dyn_threshold 算子

    **
    一、dyn_threshold 算子参数:
    1、输入参数:OrigImage:需要进行阈值分割的原始图像
    2、输入参数:ThresholdImage: 通过一定图像预处理得到的阈值图像
    3、输出参数:RegionDynThresh: 对原图进行阈值分割后输出图像
    4、Offset: 进行阈值调节
    5、LightDark:进行阈值分割的类型选择

    二、通过dyn_threshold 、gray_opening_shape 、gray_closing_shape 三个算子即局部阈值分割、基于灰度的开运算、闭运算,就可以识别出电路板上的短线检测以及一些器件的毛边检测

    *执行灰度开运算(先腐蚀再膨胀)
    gray_opening_shape (Image, ImageOpening, 7, 7, 'octagon')
    
    *执行灰度闭运算(先膨胀后腐蚀)
    gray_closing_shape (Image, ImageClosing, 7, 7, 'octagon')
    
    *局部阈值操作,分割出电路断线()
    dyn_threshold (ImageOpening, ImageClosing, RegionDynThresh, 70, 'not_equal')
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Halcon dyn_threshold详解

    2020-05-22 21:02:12
    dyn_threshold 原型 dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 功能 利用局部阈值分割图像 参数列表 OrigImage (input_object):原始图像 ThresholdImage (input_object)...

    dyn_threshold

    原型

    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )

    功能

    利用局部阈值分割图像

    参数列表

    OrigImage (input_object):原始图像
    ThresholdImage (input_object):处理后图像(一般采用滤波处理)
    RegionDynThresh (output_object):分割后区域
    Offset (input_control):灰度值偏移量。
    LightDark (input_control):提取区域类型( ‘dark’, ‘equal’, ‘light’, ‘not_equal’)

    详解

    如果满足给定的条件,算子会分割出不同区域。具体如下图
    在这里插入图片描述
    ThresholdImage图可以通过mean_image, binomial_filter, gauss_filter等滤波方式处理。
    滤波选择的掩膜尺寸越大,提取的区域越大。根据经验,掩膜大小选择应该是要提取目标直径的两倍。参数Offset不要设置0,否则将会提取到很多小的噪点区域,一般介于5-40最佳,其值越大,提取的区域越小。

    举例

    在这里插入图片描述
    在这里插入图片描述

    代码

    主函数

    * 像素偏移值
    Offset := 15
    * 加载一幅图像
    read_image (Image, 'letters')
    * 获取图像尺寸
    get_image_size (Image, ImageWidth, ImageHeight)
    * 均值滤波
    mean_image (Image, ImageMean, 5, 5) 
    * Halcon算子
    dyn_threshold (Image, ImageMean, OriLightRegion, Offset, 'light')
    dyn_threshold (Image, ImageMean, OriDarkRegion, Offset, 'dark')
    dyn_threshold (Image, ImageMean, OriEqualRegion, Offset, 'equal')
    dyn_threshold (Image, ImageMean, OriNotEqualRegion, Offset, 'not_equal')
    * 获取亮、暗、类似、不同Region(根据文档实现算子)
    DynThreshold (Image, ImageMean, LightRegion, DarkRegion, EqualRegion, NotEqualRegion, ImageWidth, ImageHeight, Offset)
    

    子函数(速度有点慢,主要目的是加深算子理解)

    * 数组存储下标初始化
    LightTime := 0
    DarkTime := 0
    EqualTime := 0
    NotEqualTime := 0
    * 满足条件数组初始化
    tuple_gen_const (0, 0, LightPixelsPositionRowTuple)
    tuple_gen_const (0, 0, LightPixelsPositionColTuple)
    tuple_gen_const (0, 0, DarkPixelsPositionRowTuple)
    tuple_gen_const (0, 0, DarkPixelsPositionColTuple)
    tuple_gen_const (0, 0, EqualPixelsPositionRowTuple)
    tuple_gen_const (0, 0, EqualPixelsPositionColTuple)
    tuple_gen_const (0, 0, NotEqualPixelsPositionRowTuple)
    tuple_gen_const (0, 0, NotEqualPixelsPositionColTuple)
    * 区域初始化
    gen_empty_region (LightRegion)
    gen_empty_region (DarkRegion)
    gen_empty_region (EqualRegion)
    gen_empty_region (NotEqualRegion)
    * 遍历一幅图,寻找满足条件的点位置
    for ColIndex := 0 to ImageWidth - 1 by 1
        for RowIndex := 0 to ImageHeight - 1 by 1
            * 分别获取两张图对应位置的灰度值
            get_grayval (ImageMean, RowIndex, ColIndex, ImageMeanGrayval)
            get_grayval (ImageOrig, RowIndex, ColIndex, ImageGrayval)
            * 寻找亮区域
            if (ImageGrayval - ImageMeanGrayval >= Offset)
                LightPixelsPositionRowTuple[LightTime] := RowIndex
                LightPixelsPositionColTuple[LightTime] := ColIndex
                LightTime := LightTime + 1
           endif
           
           * 寻找暗区域
           if (ImageMeanGrayval - ImageGrayval >= Offset)
               DarkPixelsPositionRowTuple[DarkTime] := RowIndex
               DarkPixelsPositionColTuple[DarkTime] := ColIndex
               DarkTime := DarkTime + 1
           endif
           
           * 寻找类似区域
           if (abs(ImageGrayval - ImageMeanGrayval) <= Offset)
               EqualPixelsPositionRowTuple[EqualTime] := RowIndex
               EqualPixelsPositionColTuple[EqualTime] := ColIndex
               EqualTime := EqualTime + 1
           endif
           
           * 寻找不同区域
           if ((ImageMeanGrayval - ImageGrayval > Offset) or (ImageGrayval - ImageMeanGrayval > Offset))
               NotEqualPixelsPositionRowTuple[NotEqualTime] := RowIndex
               NotEqualPixelsPositionColTuple[NotEqualTime] := ColIndex
               NotEqualTime := NotEqualTime + 1
           endif
        endfor
    endfor
    * 根据获取的点位信息生成亮区域
    tuple_gen_const (LightTime, 0, PhiTuple)
    tuple_gen_const (LightTime, 0.1, Length1Tuple)
    tuple_gen_const (LightTime, 0.1, Length2Tuple)
    gen_rectangle2 (LightRegion, LightPixelsPositionRowTuple, LightPixelsPositionColTuple, PhiTuple, Length1Tuple, Length2Tuple)
    union1 (LightRegion, LightRegion)
    
    * 根据获取的点位信息生成暗区域
    tuple_gen_const (DarkTime, 0, PhiTuple)
    tuple_gen_const (DarkTime, 0.1, Length1Tuple)
    tuple_gen_const (DarkTime, 0.1, Length2Tuple)
    gen_rectangle2 (DarkRegion, DarkPixelsPositionRowTuple, DarkPixelsPositionColTuple, PhiTuple, Length1Tuple, Length2Tuple)
    union1 (DarkRegion, DarkRegion)
    
    * 根据获取的点位信息生成类似区域
    tuple_gen_const (EqualTime, 0, PhiTuple)
    tuple_gen_const (EqualTime, 0.1, Length1Tuple)
    tuple_gen_const (EqualTime, 0.1, Length2Tuple)
    gen_rectangle2 (EqualRegion, EqualPixelsPositionRowTuple, EqualPixelsPositionColTuple, PhiTuple, Length1Tuple, Length2Tuple)
    union1 (EqualRegion, EqualRegion)
    
    * 根据获取的点位信息生成不同区域
    tuple_gen_const (NotEqualTime, 0, PhiTuple)
    tuple_gen_const (NotEqualTime, 0.1, Length1Tuple)
    tuple_gen_const (NotEqualTime, 0.1, Length2Tuple)
    gen_rectangle2 (NotEqualRegion, NotEqualPixelsPositionRowTuple, NotEqualPixelsPositionColTuple, PhiTuple, Length1Tuple, Length2Tuple)
    union1 (NotEqualRegion, NotEqualRegion)
    return ()
    
    展开全文
  • dyn_threshold()使用

    2020-12-08 18:01:25
    首先看dyn_threshold 算子参数 dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark ) 根据阈值进行图像分割处理 参数分析: OrigImage:需要进行阈值分割的原始图像 ThresholdImage: ...

    1. 算子结构

    首先看dyn_threshold 算子参数
    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark )

    根据阈值进行图像分割处理
    参数分析:
    OrigImage:需要进行阈值分割的原始图像

    ThresholdImage: 通过一定图像预处理得到的阈值图像(这个预处理通常是对原图应用mean_image/gauss_image/binomial_filter 处理后的图像)

    RegionDynThresh: 对原图进行阈值分割后输出图像

    Offset: 是一个阈值调节值,在做对比时,需要和ThresholdImage上某一点像素值同时作用。

    LightDark:是一个关键选择,’dark’, ‘light’, ‘equal’, ‘not_equal’一共有4种选择,明、暗、同、不同

    2. 关键点分析

    根据Halcon帮助文档种给出的 dyn_threshold的分割阈值的计算方式
    g_o=g_[OrigImage]
    g_t=g_[ThresholdImage]
    当选择light模式
    阈值计算公式:
    for LightDark = ‘light’ is:
    g_o >= g_t + Offset
    即为原图中大于等于g_t + Offset点的像素值被选中。

    当选择dark 模式
    For LightDark = ‘dark’ the condition is:
    g_o <= g_t - Offset
    即为原图中小于等于g_t - Offset点的像素值被选中。

    当选择equal 模式时:
    For LightDark = ‘equal’ it is:
    g_t - Offset <= g_o <= g_t + Offset
    原图中像素值在g_t - Offset 和 g_t + Offset之间的像素点被选中。

    当选择not_equal模式时
    Finally, for LightDark = ‘not_equal’ it is:
    g_t - Offset > g_o or g_o > g_t + Offset
    原图中像素值在g_t - Offset 和 g_t + Offset之外的像素点被选中。

    展开全文
  • 算子dyn_threshold解析

    2019-12-09 14:46:32
    首先看dyn_threshold 算子参数 dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark ) 参数分析: OrigImage:需要进行阈值分割的原始图像 ThresholdImage: 通过一定图像预处理得到的...
  • 算子:dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark ) 功能:利用局域阈值(区域内的明亮黑暗)分割图像 dyn_threshold 这个算子就是根据一套灰度值比较规则来选择原图像中...
  • HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测
  • Name:dyn_threshold — Segment an image using a local threshold. Signature:dyn_threshold(OrigImage, ThresholdImage: RegionDynThresh: Offset, LightDark:) 1、算子参数的解析: OrigImage:原始图...
  • Halcon阈值算子 – dyn_threshold HALCON有很多阈值算子,接下来将一一介绍。本文先介绍dyn_threshold。 以下介绍主要参考HALCON帮助文档,并加上自己的体会。如有纰漏,欢迎留言指出 理论介绍 dyn_threshold算子的...
  • dyn_threshold(动态阈值)解析

    千次阅读 2019-06-09 17:35:49
    在图像处理的时候会遇到背景和ROI区域难以提取的情况。不能简单的使用一个全局阈值来对图像进行分割。此时会用到动态阈值分割的...dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDar...
  • 转载 文章关于图像分割 dyn_threshold对物体轮廓提取很有用的一个阈值分割算子
  • 动态阈值分割 dyn_threshold算子理解

    千次阅读 2019-04-09 13:17:25
    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) OrigImage:源图像,这是经过灰度处理的图像; ThresholdImage:阈值图像,是OrigImage图像经过滤波处理的图像; ...
  • halcon学习(一)dyn_threshold

    万次阅读 2016-04-06 10:03:28
    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 当前背景之间差异明显时,可以设定全局阈值进行threshold,但很多情况下由于背景不均一,目标体经常表现为比背景局部亮...
  • dyn_threshold 算子原理说明

    千次阅读 2017-09-18 08:58:13
    dyn_threshold(OrigImage, ThresholdImage ,RegionDynThresh ,Offset, LightDark )在比较理想的情况下,我们可以通过全局阈值来分离背景和边缘。但是,有时往往得不到光照均匀的图像(很常见)。像这种局部亮暗的...
  • dyn_threshold(OrigImage,MeanImage,SmallRaw,3,'light') //动态阈值分割 threshold()//全局固定阈值灰度分割, 当前背景之间差异明显时,可以设定全局阈值进行threshold,但很多情况下由于背景不均一,目标体...
  • 手册里面的particle例子,例子的任务是分析颗粒在液体...所以采用先将大块不需要检测的部分去除掉,再通过灰度动态阈值dyn_threshold分割图像得到想要的内容。 处理图片和结果图片: 以下是代码: ...
  • 动态阈值分割 dyn_threshold

    千次阅读 2017-05-15 09:34:47
    手册里面的particle例子,例子的任务是分析颗粒在液体中。...所以采用先将大块不需要检测的部分去除掉,再通过灰度动态阈值dyn_threshold分割图像得到想要的内容。 处理图片和结果图片: 以下是代码:
  • 知识点一: 1、mean_image (Image, ImageMean, 59, 59) ... dyn_threshold动态阈值算子一般和均值滤波算子一起使用,先用mean_image算子得到平滑后的图像,然后将原始图像和均值滤波后的图像对...
  • dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) ThresholdImage是我们用来作为灰度值参考的另外一幅图像,在实际使用过程中通常都是对原图像OrigImage进行一次平滑处理,然后...
  • 手册里面的particle例子,例子的任务是分析颗粒在液体中。在这个应用程序的主要困难:存在两种类型...所以采用先将大块不需要检测的部分去除掉,再通过灰度动态阈值dyn_threshold分割图像得到想要的内容。以下是代码:
  • 一、threshold 全局阈值 threshold(Image : Region : MinGray, MaxGray : ) 对应参数分别为输入图像、输出区域、阈值下限、阈值上限 使用全局阈值分割图像,阈值选择输入图像中灰度值g满足以下条件的像素: ...
  • 1. threshold(Image : Region : MinGray, MaxGray : ) 全局阈值分割,适用于环境稳定,目标与背景存在明显的灰度差的场合。 应用1:利用灰度直方图确定阈值进行图像分割。一般是物体与背景之间存在一个明显的灰度...
  • Halcon算子学习:图像分割 threshold 算子

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

dyn_threshold