尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

halcon之第3讲--形态学运算以及Blob 连通域分析

halcon之第3讲--形态学运算以及Blob 连通域分析 文章目录前言形态学运算膨胀腐蚀膨胀腐蚀程序展示开运算闭运算开闭运算程序展示顶帽底帽Blob连通域分析前言形态学运算形态学运算是基于图像形状的一组非线性操作通过结构元素与图像进行卷积实现膨胀、腐蚀、开闭运算等。常用于图像预处理、去噪、特征提取。膨胀dilation_circle(Region : RegionDilation : Radius : )参数Region 输入的需要进行膨胀操作的Region RegionDilation 是输出的膨胀完成的Region 由于该算子用圆形卷积核Radius 是半径大小膨胀Dilation就是求局部最大值的操作。解释这里面的局部指的是核的大小例如核大小是3*3的则二值化的图像在核的范围内取最大值作用可以填充孔洞、连接断裂区域。腐蚀erosion_circle(Region : RegionErosion : Radius : )参数Region 输入的需要进行腐蚀操作的Region RegionErosion 是输出的腐蚀完成的Region 由于该算子用圆形卷积核Radius 是半径大小腐蚀Erosion就是求局部最小值的操作。解释这里面的局部指的是核的大小例如核大小是3*3的则二值化的图像在核的范围内取最小值作用可以去除噪声消除小于结构元素的噪声点膨胀腐蚀程序展示*程序运行前图像化窗口和设置的恢复 dev_close_window()dev_clear_window()dev_set_color(white)dev_set_draw(fill)dev_set_line_width(1)*读图片 read_image(Image,pellets)threshold(Image,Dark,120,255)*腐蚀 erosion_circle(Dark,RegionErosion,7.5)*膨胀 dilation_circle(RegionErosion,RegionDilation,7.5)*窗口1原图 dev_open_window(0,0,400,300,black,W1)dev_display(Image)disp_message(W1,原始图像,window,10,10,black,true)*窗口2阈值二值区域 dev_open_window(0,420,400,300,black,W2)dev_display(Dark)disp_message(W2,阈值分割,window,10,10,black,true)*窗口3腐蚀 dev_open_window(320,0,400,300,black,W3)dev_display(RegionErosion)disp_message(W3,腐蚀,window,10,10,black,true)*窗口4膨胀 dev_open_window(320,420,400,300,black,W4)dev_display(RegionDilation)disp_message(W4,膨胀,window,10,10,black,true)运行结果从以上运行结果可以看出腐蚀可以消除小于核的噪点膨胀可以消除孔洞链接断裂区域开运算opening_circle(Region : RegionOpening : Radius : )参数Region 输入的需要进行开运算操作的Region RegionOpening 是输出的开运算完成的Region 由于该算子用圆形卷积核Radius 是半径大小开运算Opening先腐蚀后膨胀作用去掉小噪点、孤立小点物体整体大小几乎不变。适合阈值后消除背景噪声斑点闭运算closing_circle(Region : RegionClosing : Radius : )参数Region 输入的需要进行闭运算操作的Region RegionClosing 是输出的闭运算完成的Region 由于该算子用圆形卷积核Radius 是半径大小闭运算Closing先膨胀后腐蚀作用填补物体内部小孔、小缝隙把目标内部小洞补上。适合目标里面有黑洞孔洞。开闭运算程序展示dev_close_window()dev_clear_window()dev_set_color(white)dev_set_draw(fill)dev_set_line_width(1)read_image(Image,pellets)threshold(Image,Dark,120,255)*开运算 opening_circle(Dark,RegionOpening,3.5)*闭运算 closing_circle(Dark,RegionClosing,3.5)*窗口1原图 dev_open_window(0,0,400,300,black,W1)dev_display(Dark)disp_message(W1,原始图像,window,10,10,black,true)*窗口2阈值二值区域 dev_open_window(0,420,400,300,black,W2)dev_display(RegionOpening)disp_message(W2,阈值分割,window,10,10,black,true)*窗口3腐蚀 dev_open_window(320,0,400,300,black,W3)dev_display(RegionClosing)disp_message(W3,腐蚀,window,10,10,black,true)运行结果开运算结果和原图对比由以上图片结果可以看到开运算消除了背景上的零星小白点闭运算结果和原图对比由以上图片结果可以看到闭运算消除了目标里面的小孔洞没有消除背景上的小白点顶帽顶帽和底帽用于提取图像中的亮细节或暗细节。顶帽Top Hat原图与开运算结果的差值突出亮前景。公式顶帽 原图 − 开运算作用提取小的凸起碎块、小连通域这些碎块小于结构元大于结构元的物体会被过滤掉read_image(Image,D:/learn/halcon/4.png)threshold(Image,Region,30,255)gen_circle(SE,20,20,3)*top_hat拿到被开运算去掉的碎点 top_hat(Region,SE,RegionTopPart)dev_open_window(0,0,300,300,black,W1)dev_display(Region)disp_message(W1,阈值region,window,10,10,red,true)dev_open_window(0,320,300,300,black,W1)dev_display(RegionTopPart)disp_message(W1,顶帽,window,10,10,red,true)运行结果底帽底帽Black Hat闭运算结果与原图的差值突出暗区域。公式bottom_hat closing(Region) − Region作用提取闭运算填补上的孔洞、缝隙。只拿到被闭运算填掉的那一小块区域不是处理整张灰度图。read_image(Image,D:/learn/halcon/5.png)threshold(Image, Region,0,30)gen_circle(SE,20,20,3)*底帽 bottom_hat(Region, SE, RegionBottomHat)* opening得到清理后的完整区域 * opening_circle(Region, RegionClean,3.5)* count_obj(RegionTopPart, N)*N0代表没有毛刺可以提取top_hat自然输出空 dev_open_window(0,0,300,300,black, W1)dev_clear_window()dev_display(Image)disp_message(W1,阈值region,window,10,10,red,true)dev_open_window(0,320,300,300,black, W2)dev_clear_window()dev_display(RegionBottomHat)disp_message(W1,顶帽,window,10,10,red,true)Blob连通域分析BlobBinary Large Object在机器视觉里 图像中的一块连通前景区域也就是连通域。通俗理解图像里和背景颜色 / 灰度不一样、互相挨在一起的一团像素就叫一个 Blob。比如图片里几颗黑色颗粒每一颗颗粒就是 1 个 Blob。举例解释Blob一张图有 3 个分开的零件threshold()阈值分割完返回1个Region 对象把3个零件全部打包在一起调用connection() → 输出 3 个 Region3 个 Blob3 个连通域。不执行 connection你拿到的不是 3 个 Blob是一个大合并区域后续算面积、重心全部出错。Blob连通域分析流程Blob 分析 Blob 连通域分析整套流程1图像滤波2阈值分割分出前景背景3connection 拆分出每一个 Blob4根据面积、圆度、长宽筛选 Blob去掉噪声小点5计算每个 Blob 的位置、大小、角度适用场景颗粒计数、孔洞检测、工件定位、印刷污点检测。容易混淆点1Blob 不是图像是Region 区域对象Halcon 的 Region 数据类型不是 Image2Blob 只关心像素是否相连不关心像素灰度值灰度已经在阈值阶段过滤完了。简单一句话总结Blob 二值图像中相互连通的一团前景像素。Blob 分析就是提取、筛选、测量这一团团斑点。以上内容如果帮到您请点赞收藏如果有错误欢迎指正
返回列表