1

上位机图像处理和嵌入式模块部署(qmacvisual拟合直线)

 1 month ago
source link: https://blog.csdn.net/feixiaoxing/article/details/136894500
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        测量是图像处理的一个基本技能。那么测量的前提,就是我们需要在图像中找出特定的集合图形,比如说直线。当然,发现并找到直线,也会有两个方法,一个方法是直接去寻找,这会比较吃力一点;还有一个方法就是先找出特定形状的点,通过这些点去拟合出一条直线来。今天,我们来讨论的就是后面一个。处理的图片上,有若干个小圆,通过这些小圆正好可以拟合出一条直线出来。

1、创建工程和创建流程

        工程和流程的创建是qmacvisual使用的前提,也是基础。

2、涉及流程

        鉴于处理的图片是一连串的图形小点,我们可以先做图像预处理、切割出小圆,最后基于这些小圆的重心拟合出一条直线出来。当然,为了显示的方便,也可以添加一个显示的功能。整个流程是这样的,

ca64d4b814144dcb9610f34aedeb1e3c.png

3、详细分解

        一开始的时候,还是老规矩,通过【获取图像】的插件导入我们需要处理的图片。实际工作中,这一步一般是通过摄像头实时导入的,

d9a5fc65e35249af8dd02531f35bc0e2.png

        有了图片之后,就可以开始做图像预处理了。处理的步骤就是灰化、二值化、腐蚀。腐蚀的时候,我们调整了一下设置的参数,主要就是结构元素的大小,

eb1f54e74e6d4543894b7119b85bb9a2.png

        这样,预处理之后的效果就是这样的,

f355258dd1044f77a90e5a89251b0a63.png

        预处理完毕之后,就要用上昨天学习的内容了。那就是轮廓特征选择。这里还是选择使用area作为特征进行过滤,最小为10,最大为80,这样就可以把相应的轮廓切割出来,

18f73a6d7f97494998edc20905ead0d6.png

        不出意外的话,我们就可以在打印的地方发现总共有多少个轮廓,面积是多少,重心在什么位置。这些轮廓就是我们将来直线拟合的依据。

5c18d189d1764bbb98871d3a8c7dbd4f.png

        上面都是之前学习过的内容,今天我们可以加上新的东西,那就是直线拟合。它的插件来自于【几何工具】下面的【拟合直线】。配置也是比较简单的,就是把图像和轮廓点集送给插件就可以了。结束后,单击执行就可以看到结果了。

f1e9d4cf1184480fb7d469121e7b26a9.png

        如上图所示,屏幕中蓝色的那条线,就是我们最终拟合出来的直线。直线的斜率是2.06,截距是-107.2。直觉上看,这个数值是错的,这主要是因为,图像的数据向右是x轴递增,向下是y轴递增。大家把向下的y轴递增替换成向上的y轴递增,就可以看出这条线的参数是不是计算的这样了。

        最后还有一个整体输出,这部分之前也提及过,主要就是把处理结果和图像做一个绑定即可。

42f2f7081d2e4f7b9352037f56781990.png

4、更多的直线拟合

        图中的拟合,是对多个轮廓重心进行拟合处理。还有一种处理,就是直接找出最小的轮廓和最大的轮廓,利用它们的重心点进行拟合,这也是一种方法。大家可以多多测试下。有了直线之后,就相当于找到了一个基准,可以进一步判断其他点、线、图形到这个直线的距离,这样我们图像处理做的事情也就越来越多了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK