zl程序教程

您现在的位置是:首页 >  其它

当前栏目

halcon-regiongrowing区域增长法分割图像为区域

图像 分割 增长 区域 HALCON
2023-09-27 14:28:41 时间

 

 

在HDevelop中

dev_update_off()
read_image (Image, 'D:/bb/tu/8.jpg')
get_image_size (Image, Width, Height)
regiongrowing (Image, Regions, 1, 1, 3, 1000)
*区域增长法分割图像为区域
*此方法分割的区域可能有重叠
*参数1:输入图像 *参数2:分割后的输出区域 *参数3Row和参数4Col :定义了在图像内相邻移动的模板的长和宽度大小 *参数5:两个相邻模板中心灰度值差,如果小于这个值就合并为同一区域 *参数6:作为一个限制,限定了用上面方法分割出的区域面积最终不能小于MinSize给定的值,否则不作为区域输出 gen_empty_region (NoPixel) *创建一个空区域 *count_obj返回1 这个区域的面积是0。 expand_region (Regions, NoPixel, RegionExpanded1, 'maximal', 'image') *填充区域之间的间隙或分割重叠区域 *参数1:Regions要膨胀的区域 * 如果是区域:不执行膨胀,而是只分割重叠区域,将重叠区域均匀地分布到各个区域里。 * 因为与原区域的交集是在收缩操作后计算出来的,因此可能会导致输出区域出现间隙。 * 这可以通过第二次调用expand_region来防止,并将原始区域的补集作为ForbiddenArea *参数2:ForbiddenArea禁止膨胀的区域 *参数3:RegionExpanded1膨胀后结果区域 *参数4:迭代次数 * 默认值: 'maximal' 函数一直执行直到不可膨胀 * 建议值: 'maximal'012357101520305070100200 * 传递0的话,返回未重叠的全部区域 * 典型值范围:0≤ Iterations≤ 1000 *参数5:扩展模式 * 'image' 目的是填充区域之间的间隙,输入区域将迭代地膨胀,直到它们触及另一个区域或图像边缘 * 'region' 目的是分割重叠区域 dev_set_colored (10) *设置输出颜色的数量 dev_open_window (10, 10, Width, Height, 'black', WindowHandle) dev_display (RegionExpanded1)

 

 

 

在QtCreator中

  HObject  ho_Image, ho_Regions, ho_NoPixel, ho_RegionExpanded1;
  HTuple  hv_Width, hv_Height, hv_WindowHandle;
  ReadImage(&ho_Image, "D:/bb/tu/8.jpg");
  GetImageSize(ho_Image, &hv_Width, &hv_Height);
  Regiongrowing(ho_Image, &ho_Regions, 1, 1, 3, 1000);
  //区域增长法分割图像为区域
//此方法分割的区域可能有重叠
//参数1:输入图像 //参数2:分割后的输出区域 //参数3Row和参数4Col :定义了在图像内相邻移动的模板的长和宽度大小 //参数5:两个相邻模板中心灰度值差,如果小于这个值就合并为同一区域 //参数6:作为一个限制,限定了用上面方法分割出的区域面积最终不能小于MinSize给定的值,否则不作为区域输出 GenEmptyRegion(&ho_NoPixel); //创建一个空区域 //count_obj返回1 这个区域的面积是0。 ExpandRegion(ho_Regions, ho_NoPixel, &ho_RegionExpanded1, "maximal", "image"); //填充区域之间的间隙或分割重叠区域 //参数1:Regions要膨胀的区域 // 如果是区域:不执行膨胀,而是只分割重叠区域,将重叠区域均匀地分布到各个区域里。 // 因为与原区域的交集是在收缩操作后计算出来的,因此可能会导致输出区域出现间隙。 // 这可以通过第二次调用expand_region来防止,并将原始区域的补集作为ForbiddenArea //参数2:ForbiddenArea禁止膨胀的区域 //参数3:RegionExpanded1膨胀后结果区域 //参数4:迭代次数 // 默认值: 'maximal' 函数一直执行直到不可膨胀 // 建议值: 'maximal',0,1,2,3,5,7,10,15,20,30,50,70,100,200 // 传递0的话,返回未重叠的全部区域 // 典型值范围:0≤ Iterations≤ 1000 //参数5:扩展模式 // 'image' 目的是填充区域之间的间隙,输入区域将迭代地膨胀,直到它们触及另一个区域或图像边缘 // 'region' 目的是分割重叠区域 if (HDevWindowStack::IsOpen()) SetColored(HDevWindowStack::GetActive(),10); //设置输出颜色的数量 SetWindowAttr("background_color","black"); OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle); HDevWindowStack::Push(hv_WindowHandle); if (HDevWindowStack::IsOpen()) DispObj(ho_RegionExpanded1, HDevWindowStack::GetActive());