QQ登录

只需一步,快速开始

halcon threshold函数介绍

[ 复制链接 ]
1.threshold(Image : Region : MinGray, MaxGray : )
threshold从输入图像Image 中选取灰度值g满足以下条件的像素点:
MinGray <= g <=MaxGray

满足条件的图像的所有点作为一个区域返回。
如果传递多个灰度值间隔(MinGray和MaxGray的元组),
则每个间隔返回一个单独的区域。
对于向量场图像,阈值不应用于灰度值,而是应用于向量的长度。

例程:
read_image(Image,'fabrik')
sobel_dir(Image,EdgeAmp,EdgeDir,'sum_abs',3)
threshold(EdgeAmp,Seg,50,255)
skeleton(Seg,Rand)
connection(Rand,Lines)
select_shape(Lines,Edges,'area','and',10,1000000)


2.threshold_sub_pix(Image : Border : Threshold : )
threshold_sub_pix以亚像素精度提取输入图像Image 的阈值threshold处的 level crossings 。
提取的 level crossings 以XLD轮廓格式保存于Border
与操作符threshold相反,threshold_sub_pix不返回区域,
而是将灰度值小于Threshold 的区域与灰度值大于Threshold 的区域分隔开的线段。


在提取过程中,将输入图像看作是一个表面,
其中的灰度值在各个像素中心之间进行双线性插值。
根据所定义的表面,提取每个像素的水平交叉线,并链接到拓扑声音轮廓中。
这意味着水平交叉等值线在交点处被正确分割。
如果图像包含扩展的灰度值Threshold 为常数的区域,
则只将这些区域的边界作为平交道口返回。


例程:
read_image (Image, 'double_circle')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
threshold_sub_pix (Image, Edges, 128)
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 5, 4, 3)
count_obj (ContoursSplit, Number)
dev_display (Image)
dev_set_draw ('margin')
dev_set_color ('red')
dev_update_window ('off')
for i := 1 to Number by 1
  select_obj (ContoursSplit, ObjectSelected, i)
  get_contour_global_attrib_xld (ObjectSelected, 'cont_approx', Attrib)
  if (Attrib > 0)
    fit_circle_contour_xld (ObjectSelected, 'ahuber', -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
    gen_ellipse_contour_xld (ContEllipse, Row, Column, 0, Radius, Radius, 0, 4 * acos(0), 'positive', 1.0)
    dev_display (ContEllipse)
  endif
endfor

例程简单调用了threshold_sub_pix 提取图像上的轮廓线,
然后将这些轮廓打断,对每条轮廓拟合成圆
  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索