首页 > 其他分享 >Halcon区域分割之分水岭分割法

Halcon区域分割之分水岭分割法

时间:2024-11-03 18:18:26浏览次数:3  
标签:区域分割 距离 Halcon 区域 灰度 图像 像素 分水岭

        现实中我们见到过有山有湖的景象,那么一定是水绕山、山围水的情形。当然可在需要的时候人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山与水的界线以及湖与湖之间的间隔,就是分水岭。
       分水岭分割法是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看做是地形学上的拓扑地貌,图像中的每一点像素的灰度值表示该点的海拔高度,高灰度值代表山脉,低灰度值代表盆地,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界形成了分水岭。
      有时直接使用图像灰度值代表高度来实现分水岭算法太困难,需要进行距离变换,下面简单介绍距离变换。
      距离变换是针对二值图像的一种变换。在二维空间中,一幅二值图像可以认为仅仅包括目标和背景两种像素,目标的像素值为1,背景的像素值为0。距离变换的结果不是另一幅二值图像,而是一幅灰度值图像,即距离图像,图像中每个像素的灰度值为该像素与距其最近的背景像素间的距离,距离变换也就是此点的灰度值,代表此点到边界的距离。距离边界越近,灰度值越小;距离边界越远,灰度值越大。中心像素的灰度值最大,边界为零。
      最常见的距离变换算法是通过连续的腐蚀操作来实现的,腐蚀操作的停止条件是所有前景像素都被完全腐蚀。因此,根据腐蚀的先后顺序,可以得到各个前景像素点到前景中心骨架像素点的距离。根据各个像素点的距离值,设置不同的灰度值。这样就完成了二值
      下面简单介绍使用分水岭分割法时可能用到的算子。

      1):distance _ transform ( Region ; DistanceImage : Metric . Foreground . Width , Height )
      功能:对区域作距离变换,获得距离变换图。
      Region :距离变换目标区域。
      Distancelmage :获得距离信息图。
      Metric :度量距离类型,包括' City - block ',' chessboard ',' euclidean '
      Foreground :为' true ',则针对前景区域( Region )作距离变换;为" false ',则针对背景区域(整个区域减去 Region )作距离变换。
      Width 、 Height :输出图像的宽、高。
      2):watersheds ( Image : Basins . Watersheds )
      功能:直接提取图像的盆地区域和分水岭区域。
      Image :需要分割的图像(图像类型只能是 byte 、uint2、 real )。
      Basins :盆地区域。
      Watersheds :分水岭区域(至少一个像素宽)。
      3):watersheds _ threshold ( Image : Basins ; threshold )
      功能:阈值化提取分水岭盆地区域。
      Image :需要分割的图像(图像类型只能是 byte 、uint2、 real )。
      Basins :分割后得到的盆地区域。
      Threshold :分割时的阈值。
      应用分水岭分割法的算子时分为两步:第一步计算分水岭不使用阈值,如用算子 watersheds ;第二步使用阈值,此阈值是合并相邻两个盆地区域时使用的,如果两个盆地的最小灰度值与分水岭上最小灰度值的差的最大值都小于此阈值,那么这两个盆地区域就会合并。假设B1、B2分别表示相邻盆地区域的最小灰度值, W 表示两盆地的分水岭最小灰度值,若满足式(5-47),则分水岭操作会被取消。 Max ( W - BI , W -B2)< Threshold

案例分析

目标:获取圆形区域内矩形区域

疑难点:目标区域连通

   

  解决方案:

1):开运算分割

2):分水岭分割

代码

read_image (Image1, 'E:/数据/资源图片/截图/2.png')
rgb1_to_gray (Image1, GrayImage)
scale_image_max (GrayImage, ImageScaleMax)
threshold (ImageScaleMax, Region, 0, 120)
gauss_filter (ImageScaleMax, ImageGauss1, 7)
watersheds (ImageGauss1, Basins1, Watersheds1)
intersection (Basins1, Region, SegmentedPellets)
region_features (SegmentedPellets, 'area', Value)
select_shape (SegmentedPellets, SelectedRegions, 'area', 'and', 1500, 4999)
region_features (SelectedRegions, 'row', RowValue)
select_shape (SegmentedPellets, SelectedRegions, 'row', 'and', min(RowValue)-5, min(RowValue)+5)
dev_display (Image1)
dev_display (SelectedRegions)

标签:区域分割,距离,Halcon,区域,灰度,图像,像素,分水岭
From: https://blog.csdn.net/2202_75557553/article/details/143460670

相关文章

  • Halcon 一维卡尺测量找点之模糊集测量法
        模糊测量是对标准测量的一种扩展,并不意味着测量是“模糊的”,而是用模糊隶属函数来控制边缘的选择。所谓的模糊隶属函数,就是将边缘的特征值转换为隶属度值,基于这些隶属值做出是否选择边缘的决定,即当隶属值大于你设定模糊阈值时,边缘就会被选中,反之则反。这种方法的优......
  • C++ halcon判断图像是否为空
    使用CountObj函数首先,可以使用CountObj函数来检查当前图像是否为空。如果图像为空,则返回的计数为0;否则,返回的计数大于0。示例代码如下:cppCopyCode HTuplehNum;HalconCpp::CountObj(m_hCurrentImg,&hNum);if(hNum==0){qDebug()<<"传入图像为空!";}else{qDebu......
  • Halcon图像颜色通道拆分合并与四则运算
    读取图像并标注目标点灰度值,为后续对比做准备read_image(Image,'E:/Halcon/图片/880720666518444692.jpg')dev_set_draw('margin')dev_set_color('green')dev_get_window(WindowHandle)query_font(WindowHandle,Font)FontWithSize:=Font[0]+'-40&......
  • Halcon 多相机统一坐标系(标定)
        多相机统一坐标系是指将多个不同位置的相机的图像采集到同一个坐标系下进行处理和分析的方法。在计算机视觉和机器视觉领域中,多相机统一坐标系被广泛应用于三维重建、立体视觉、目标跟踪等任务中。以gen_binocular_rectification_map(生成描述图像映射的转换图的双......
  • 使用分水岭算法实现分割图像
    #导包:cv2视觉、numpy数组importcv2importnumpyasnp#加载图片img=cv2.imread('mourse.jpg')cv2.imshow('ori',img)#转换图片为黑白色gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将图片阈值分割ret,thresh=cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)......
  • Halcon双目立体视觉
               双目立体视觉机器视觉的一种重要形式,基于视差原理并由多幅图像获取物体三维几何信息,一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复物体的三维几何信息,......
  • Halcon图像拼接
    read_image(Image13,'E:/vs//13.png')get_image_size(Image13,Width,Height)gen_rectangle1(Rectangle,0,0,Height,Width/2)reduce_domain(Image13,Rectangle,ImageReduced)crop_domain(ImageReduced,Image1)gen_rectangle1(Rectangle,0,W......
  • Halcon缺陷检测之光度立体法
      通过在案例中应用摸索算子的特性,对光度立体法有了进一步认识。基于此重新理解文档,希望能够帮助有疑惑的同志,同时也期望看到博客的同志如果有更深的理解以及应用技巧,共享与大家共同交流进步。photometric_stereoImages(input_object):输入图像输入图像(一个至少包含3......
  • Halcon 创建变异模型
    *create_variation_model(::Width,Height,Type,Mode:ModelID)说明:创建一个ID为ModelID,宽为Width,高为Height,类型为Type的VariationModel,参数Mode决定了创建标准图像和相应的variation图像的方法。'standard'表示标准的训练方法,标准图像的位置是各训练图像位置的平均......
  • Halcon九点标定与旋转标定
    9点标定是通过9个点计算出相机坐标系到机械手坐标系的一个仿射变换,(实际上空间中的二维平面的仿射变换最低只需要3个点就可以,但是为了保证矩阵的准确性,数据点一般采用9-12点)。在实际应用过程中,需要获取像素下特征点的坐标和对应机械手的坐标。联立方程组求解即可得到对应仿射变......