三角形缺陷检测
*方法一:(使用内轮廓)
编写代码
•获取图片:read_image ()
•获取句柄:dev_get_window()
•彩图转灰图:rgb1_to_gray()
•阈值分割:threshold ()
•连通器:connection ()
•筛选:select_shape()
•形态学开运算(先腐蚀后膨胀):opening_circle()
•填充区域:fill_up()
•形状变化:shape_trans()
•内轮廓:boundary()
•展示区域、图像:dev_display ()
*// 获取图片//--------------------- read_image (Image, 'D:/ChuanDingZN/全部学习记录/新/Halcon/day04/案例/产品表面三角缺陷检测/原图.jpg') *// 获取句柄//--------------------- dev_get_window (WindowHandle1) *// 彩图转灰图//--------------------- rgb1_to_gray (Image, GrayImage) *// 阈值分割//--------------------- threshold (GrayImage, Regions, 155, 168) *// 连通//--------------------- connection (Regions, ConnectedRegions1) *// 面积筛选//--------------------- select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 3000, 3500) *// 形态学开运算(先腐蚀后膨胀)//--------------------- opening_circle (SelectedRegions1, RegionOpening1, 3.5) *// 填充区域//--------------------- fill_up (RegionOpening1, RegionFillUp) *// 形状变化 convex 凸出显示 //--------------------- shape_trans (RegionFillUp, RegionTrans1, 'convex') *// 内轮廓//--------------------- boundary (RegionTrans1, RegionBorder, 'inner') *// 展示区域、图像//--------------------- dev_display (Image) *// 展示斑点//--------------------- dev_display (RegionBorder)效果演示
*方法二:(动态阈值分割)
编写代码
•获取图片:read_image ()
•彩图转灰图:rgb1_to_gray()
•二值化阈值自动分割:binary_threshold ()
•从原始图像中抠出需要的形状部分:reduce_domain ()
•均值滤波:mean_image: ()
•动态阈值分割:dyn_threshold ()
•形态学闭运算(先膨胀后腐蚀):closing_circle()
•连通器:connection ()
•筛选:select_shape()
•填充区域:fill_up()
•形状变化:shape_trans()
•提取轮廓:gen_contour_region_xld ()
•展示区域、图像:dev_display ()
*// 获取图片//--------------------- read_image (Image, 'D:/ChuanDingZN/全部学习记录/新/Halcon/day04/案例/产品表面三角缺陷检测/原图.jpg') *// 彩图转灰图//--------------------- rgb1_to_gray (Image, GrayImage) *// 使用二值化阈值自动分割 分离背景和物件//--------------------- binary_threshold (GrayImage, Region, 'max_separability', 'dark', UsedThreshold) *// 裁剪抠图//--------------------- reduce_domain (GrayImage, Region, ImageReduced) *// 生成一个均值滤波//--------------------- mean_image (ImageReduced, ImageMean, 200, 3) *// 动态阈值分割 或者局部阈值分割 和 均值 中值 高斯等算子进行连用//--------------------- * 参数1 原始图片 * 参数2 图像处理之后的图片(均值处理、中值处理、平滑之后的图片) * 参数3 输出的区域 * 参数4 偏移值 原始图像与参考图相减之后的阈值限制 * 参数5 选取的区域的类型 dyn_threshold (ImageReduced, ImageMean, RegionDynThresh, 7, 'light') *// 形态学闭运算(先膨胀后腐蚀)//--------------------- closing_circle (RegionDynThresh, RegionClosing, 3.5) *// 连通//--------------------- connection (RegionClosing, ConnectedRegions) *// 面积筛选//--------------------- select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 500, 2000) *// 填充区域//--------------------- fill_up (SelectedRegions, RegionFillUp) *// 形状变化 convex 凸出显示 //--------------------- shape_trans (RegionFillUp, RegionTrans, 'convex') *// 提取轮廓//--------------------- gen_contour_region_xld (RegionTrans, Contours, 'border') *// 展示区域、图像//--------------------- dev_display (Image) *// 展示斑点//--------------------- dev_display (Contours)效果演示
希望对大家有所帮助, 感谢大家的关注和点赞。