石鑫华视觉 发表于 2018-12-27 11:32:17

LabVIEW任意粒子惯性矩旋转外接矩形长宽测量

LabVIEW任意粒子惯性矩旋转外接矩形长宽测量如果对NI VISION比较熟悉的话,就知道,在NI VISION的粒子分析函数中,只能得到粒子的不旋转的外接矩形,如下的视觉助手中效果:视觉助手中的粒子分析效果那么如果我们要想得到该粒子的旋转的外接矩形该如何处理呢?假设是一个标准的长方形产品,用NI VISION中的粒子分析,得到的是不旋转的外接矩形,如果产品正好是水平或垂直摆放时,则应该测量值相对是准确的。而如果产品不是水平或垂直摆放的,那么得到的长宽肯定是不对,比实例的尺寸要大。这时我们应该也是希望在粒子的长宽方向上来测量该粒子的实际的长宽尺寸。当然,如果是长方形的粒子,那么我们还是有许多的方法来实现的。如先找到粒子,然后定位建立坐标系,然后再用卡尺之类的函数来跟随粒子来测其长宽方向的值。但是,如果是一个非标准形状的产品呢,如下面的效果所示的产品:非标准形状产品这样该如何去测量这个产品的长与宽呢?首先就得有一个统一的定义该产品粒子长与宽的标准定义。在这里,可以考虑NI VISION粒子分析中给出的角度来定义产品的方向。NI VISION中粒子分析中的角度定义是这样的,一条通过质量中心的且拥有最小惯性矩(或转动惯量)的直线与水平线的夹角(注意,鉴于下面跟帖中的情况,这里只是利用了这个现成的角度来得到与这个角度相关的测量矩形,但是得到的粒子角度,并不代表了粒子的最小外接矩形前半轴角度,只是在标准、对称形状的粒子中,这两者可以近似相等,其它任意形状的粒子,则不能直接划等号,如果需要最小外接矩形,还得自行想想办法,Halcon中好像有现成的smallest rectangle2)。如果我们看一下长方形的粒子,可以看到该角度就是粒子长方向的中线与水平线的夹角,而如果是其它特征的粒子,也大概可以看到其是延着较长的方向的一个角度。利用该角度,就可以定义任一粒子的长方向的所在的角度了。然后再利用与其垂直的另一条直线(即角度+90度得到),就可以定义宽方向所在的角度了。最后在这两个方向上进行长宽测量,即可得到我们想要的长与宽尺寸。下面的效果图,是视觉论坛实现的效果,大概的功能基本上实现,某些特殊情况,可能未考虑到或已经考虑到但为了提高性能,未设置相应的方法以避免。任一粒子的最佳旋转外接矩形长宽测量上面的效果是对于任一粒子的长宽测量的实际效果。可以看到,可以比较好的测量出相应粒子的长与宽(红色的边框表示的是粒子的长宽,即旋转外接矩形)。粒子的测量ROI(分析图像中的绿色ROI),是自动生成的。我们测量时,默认的是整个图像。功能函数处理了T形粒子的ROI自动生成时,偏向质心的情况,即T形产品的质心可能会有一个比较大的偏移,如果T的横部占比大,则质心偏向横部,而如果T的竖部占比大,则质心会偏向竖部。这时按照粒子生成的ROI可能并未完整的包含整个粒子,这里预留了凸包功能选项(即粒子分析参数中的凸包质心选项),可以将T形粒子的质心尽量往中心偏移。当绿色ROI中有其它小粒子干扰或与ROI接触时,这种情况下,是会测错的,如下图所示:任一粒子的最佳旋转外接矩形长宽测量-ROI中有其它粒子干扰时的情况对于这种情况,该功能函数中,添加了过滤功能(可选项,即卡尺参数中的粒子过滤),可以过滤掉与ROI接触的粒子,以及不满足面积范围的粒子。效果如下,比较理想。但是因为添加了一次过滤功能,速度可以认为下降了一半(粒子过貌似比较耗时)。任一粒子的最佳旋转外接矩形长宽测量-过滤ROI干扰另外对于相连接的粒子,会当成一个粒子来测量,这时也会测错。这种情况,则未做处理。当然,也可以处理一下,如使用形态学腐蚀,将粒子分开,但是这样可能测量得到的值不准,要加补偿。另外也可以使用分割算法,对连接的粒子进行分割。但是多少也会有一些不准的可能性存在。所以这里未做处理。任一粒子的最佳旋转外接矩形长宽测量-粒子连接在一起
演示实例,LabVIEW2015SP1或以上版本,带大恒MER-Gx系列相机驱动程序。VI不加密,可根据实际情况修改。付费下载,费用100元。付款方式,请点顶部导航的充值赞助查看。
淘宝机器视觉商城链接:
LabVIEW任一粒子最佳旋转外接矩形长宽测量 惯性矩长宽自动测量-淘宝网
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-11805635528.40.cf0538c8i6mbZK&id=584993856412
对于回帖中提到的惯性矩方向和最小旋转外接矩形角度不一致的问题,确实是存在的。但是在NI VISION中没有太好的办法能得到粒子的最小外接矩形的角度,除非是自行开发算法。但是在Halcon中就比较容易实现了,可以参考以下主题:LabVIEW基于Halcon的最小旋转外接矩形粒子分析http://visionbbs.com/thread-30596-1-1.html?fromuid=9(出处: 机器视觉论坛)

wang65424773 发表于 2020-12-16 20:21:36

这个方法是有问题的,问题出在这个质量中心的且拥有最小惯性矩(或转动惯量)的直线与水平线的夹角,C:\Users\shaw.wang\Desktop\2020-12-16_201932.png
图上蓝色为不带角度的外接矩形,而绿色线框的矩形就是用旋转惯量求的矩形,这个是明显不是最小外接矩形


页: [1]
查看完整版本: LabVIEW任意粒子惯性矩旋转外接矩形长宽测量

LabVIEW HALCON图像处理入门教程(第二版)
石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24