1、功能:
滤除与检测区域接触的blob区域,得到新的blob区域
2、函数原型:
remove_blobs_touching_border(Image, ROIRegion, BlobRegions : NewBlobRegions : : ErrorCode)
3、参数:
Image (input_object)
image → object
图像
ROIRegion (input_object)
object → object
检测区域
BlobRegions (input_object)
object → object
原始blob区域(包含多个区域的集合)
NewBlobRegions (output_object)
object → object
滤除与检测区域接触的区域后得到的新的blob区域(包含多个区域的集合)
ErrorCode (output_control)
any → (tuple)
返回错误类型。返回值为0,表示函数运行成功;非0,表示函数内部出现异常。
4、函数体:
- try
- ErrorCode:=0
- *确保检测区域在图像内
- intersection (ROIRegion, Image, ROIRegionTemp)
- *检测区域缩小
- erosion_circle (ROIRegionTemp, RegionErosion, 2.5)
- *获取检测区域的边界回型区域
- difference (ROIRegionTemp, RegionErosion, RegionDifference)
- *创建空的新Blob区域
- gen_empty_obj (NewBlobRegions)
- *去除与检测区域接触的blob区域
- *原理:blob区域与检测区域接触,那么必定与检测区域的边界回型区域有交集,有交集,把该区域去掉
- *无交集,把该blob区域保存在新的blob区域
- count_obj (BlobRegions, Number)
- for i:=1 to Number by 1
- *选择一个blob区域
- select_obj (BlobRegions, ObjectSelected, i)
- *求交集,通过交集是否有效,来判断该blob区域是否为与边界接触,不接触,则保存
- intersection (RegionDifference, ObjectSelected, RegionIntersection)
- Area:=0
- area_center (RegionIntersection, Area, Row, Column)
- if(Area>0)
- else
- count_obj (NewBlobRegions, Number1)
- if(Number1=0)
- copy_obj (ObjectSelected, NewBlobRegions, 1, 1)
- else
- concat_obj (NewBlobRegions, ObjectSelected, NewBlobRegions)
- endif
- endif
- endfor
- catch (Exception)
- ErrorCode:=-1
- *创建空的新Blob区域
- gen_empty_obj (NewBlobRegions)
- endtry
- return ()
复制代码
5、使用方法:
解压缩后,把文件《select_max_length_contour.hdvp》放置在halcon安装硬盘的路径
Program Files\MVTec\HALCON-10.0\procedures
关闭并重新启动HDevelop。
6、文件:
|
|