4

上位机图像处理和嵌入式模块部署(qmacvisual预处理实战)

 1 month ago
source link: https://blog.csdn.net/feixiaoxing/article/details/136855477
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、创建项目和工程

        首先创建一个项目和一个工程,为后面的图像打下基础。

2、创建图像

        利用获取图像插件,选择一幅图像打开。如果对图像部分不是很熟悉,可以打开自己做过实验的一幅图像,也是可以的。假设,本次图像处理的目标,就是将图像中蓝色的部分提取出来。

9499cd298e154a6cb01208f6ad1ae36c.png

3、利用预处理开始处理图像

        前面我们说过,图像一般是需要进行一步一步地做预处理的。这里,我们首先进行灰化的操作。灰化,就是把图像从彩色变成黑白图像,这是常规的一种做法。虽然转变的过程当中会损失掉一些信息,但是处理速度会变快很多。而且更多时候,还会对图像的大小做出改变,比如长度和宽度都调整为原来的一半等等。

881ce30ba756448d8164dd98ea88f77b.png

        图像灰化之后,就可以进行二值化运算了。所谓的二值化,就是低于某个数值的像素,全部转成黑色。而大于某个数值的像素则全部变成白色。这中间,选择什么样的阈值,就有讲究了。我们选择了一个简单的最大熵阈值法,主要是因为它不用配置。

6faf988bb2c54721962f31a1e8cdcb41.png

        添加之后的效果还是比较好的。不过我们也隐隐发现,在图像当中还是存在着一些黑色的杂点。这个时候就要用形态运算来解决了。是使用腐蚀,还是用膨胀,这里面有讲究的。如果先腐蚀再膨胀,一般是为了去除杂点;如果先膨胀再腐蚀,往往是为了将相连的物体连接在一起。我们选择了闭运算。大家实际使用的时候,也没有必要去刻意记忆。

ef0d3160445e43eabd4a383823308c1a.png

        看上去整体都慢慢接近于我们想要提取的那个状态了。大家不用着急,下一步可以通过边缘算子,进一步提取图像中的边缘信息。提取之后,我们就可以看到一块一块的像素,被切割成了若干个子模块。这些子模块通过各种各样的参数筛选出来。当然,本次图像处理的目的还是为了提取轮廓,这里我们选择了canny算子。

c67e9ca148a747e99b488b5781310567.png

        图中白色的部分,就是我们想要的轮廓的信息。这幅图像比较简单,我们简单通过长宽面积、长度等一些信息,就可以将需要的部分提取出来了。实际项目中,要比这个复杂得多。但是图像处理的流程都是类似的。预处理往往紧跟着图像的读取,为后面的轮廓提取、直线拟合、测量与判别打下一个坚实的基础。大家可以多多实践、多多练习,慢慢就可以把经验积累出来了。

        当然,如果图像比较大,可能还会涉及到roi截取、旋转和镜像,当然这就是另外一个topic了。放置的插件位置,一般就在图像读取和图像预处理之间进行。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK