【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们学习了拟合直线,今天继续学习下拟合圆和拟合椭圆。其实除了最后一步不同,两者的逻辑是差不多的。一般都是,读取图片-》灰化-》轮廓筛选-》拟合圆(拟合椭圆)-》显示图形。所以今天的学习更多的是一种复习和总结。
1、创建项目和创建流程
第一步还是创建项目和创建流程,这是所有工作开展的基础。
2、读取图像
暂时我们还没有camera设备,所以暂时先用图片进行测试。读取图像的插件位于【图像处理】-》【获取图像】,所以这部分直接copy过来,配置一下即可。
3、图像灰化
之前的图像是彩色的。所以,这边还需要利用【预处理】插件进行一个灰化的操作。插件位于【图像处理】-》【预处理】。拖过来之后,我们需要手动添加图像灰度化功能。添加好,并且运行之后,就可以看到黑白图片了。
4、轮廓提取
从图片上可以看出,图像中是一个一个分离的小块。大部分小块都是离散的,部分小块是黏在一起的。对于黏在一起的小块,我们需要用某个属性把他们剔除出去。这里,我们选用了面积这个用的比较多的数值。经过选择后,只剩下一部分点参与最终的拟合圆操作。
5、拟合圆
所有数据都准备好了之后,就可以开始拟合圆的操作。插件位于【几何工具】-》【拟合圆】。它的输入主要有两个部分,一个是原来的图像,一个各个轮廓的重心点,有了这两个数据,就可以完成拟合圆的操作了。这部分和之前的拟合直线是一样的。那输出的结果也是非常直接的,一个是圆心的位置,一个是半径的大小。
6、图像显示
如果流程跑起来,我们一般是看不到图像效果的,所以通常我们都会通过图像显示的插件,把结果显示到主窗口上面。显示插件的位置位于【图像处理】-》【图像显示】。在插件中,要做的只是把相应的图像和显示的窗口做一个绑定而已。
所以,整体来看,这个demo的处理逻辑并不复杂,它的流程就应该是这样的,
7、拟合椭圆
前面我们讲过,拟合直线、拟合圆和拟合椭圆的流程是非常相似的。所以,这里如果完成的目标是拟合椭圆,那么只需要把第四个插件换成拟合椭圆就可以了。一样的图像输入,一样的轮廓重心输入,单击执行之后,我们就可以看到对应的结果。
和拟合圆相比较,拟合椭圆的结果稍微复杂一点。它主要有四个输出,分别是椭圆中心坐标、椭圆角度、椭圆长轴长度、椭圆短轴长度。其中椭圆角度比较有意思,这意味生成的椭圆不一定是横平竖直的,它完全有可能是有一点倾斜角度的。