首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenCV从零基础-检测及分割图像的目标区域

作者:王抒伟

编辑:王抒伟

本文5555字15图,阅读约10分钟

算了

爱看多久看多久

参考目录:

1.获取图片

2.转换灰度并去噪声

3.提取图像的梯度

4.我们继续去噪声

5.图像形态学(牛逼吧、唬人的)

6.细节刻画

7.找出昆虫区域的轮廓

8.画出轮廓

9.裁剪出来就完成啦

第一天:

老师:你知道么,今天有人问了我一个问题。

~.我:什么?

老师:他说很难。

~.我:关于什么的?

老师:图像处理。

~.我:喔,你说说看,我确实做了不少图像处理的东西(心里默念,你不知知道你给过我多少图像吗?)

老师:好嘞!在用深度学习的时候,比如说面对一张图像,对某个区域感兴趣怎么办?

~.我:他傻啊,切割出来啊,只需要训练感兴趣的部分就好啦。

老师:哎,那你给我一个教程,我正好顺手把他的问题解决了。

~.我:好的(黑人脸.gif)

老师:我回头把图片数据发给你。

~.我:好的好的,老师,by the way, 有多少数据啊?

老师:也不多,一个U盘够了,这样吧,明天你过来拷一下吧。

~.我:好的(hello?一个U盘?)

第二天

有这么一个文件

看了里面。。。我要爆炸了。

> 598M * 15 = 8970M = 8.97G 我的个亲娘嘞

打开一看 全是密密麻麻的------虫子!!!

为了视觉体验,自动屏蔽,请大家自行去谷歌:虫子、worm、bug、insects。

三天后

~.我: 老师, 我就给一个方法啊, 不同的虫子他们可以自己调阈值和方法,我已经有写说明文件。

老师: 好的,我看看。

考虑到**视觉忍受能力**,我用一个可爱的虫子做为一个示例,其他的都差不多,大家自行尝试。

目标是把虫子区域抠出来

运行环境:

环境:

例图:谷歌,可爱的虫子–image

软件:Anaconda 4.20,Opencv3.2

OpenCv的安装:

1.1安装Python3.60

1.2下载安装opencv3.2

具体思路:

1.获取图片,这个简单哈

看,这不就是你处理初始的样子?

2.转换灰度并去噪声

我们可以得到这两张图,第一张是灰度图,第二张是去噪之后的。

另外说一下,去噪咱们有很多种方法,均值滤波器、高斯滤波器、中值滤波器、双边滤波器等。

这里取高斯是因为高斯去噪效果是最好的。

3.提取图像的梯度

用Sobel算子计算x,y方向上的梯度,之后在x方向上 minus y方向上的梯度。

通过这个操作,会留下具有高水平梯度和低垂直梯度的图像区域。

此时,我们会得到

4.我们继续去噪声

考虑到图像的孔隙 首先使用低通滤泼器平滑图像, 这将有助于平滑图像中的高频噪声。 低通滤波器的目标是降低图像的变化率。

如将每个像素替换为该像素周围像素的均值, 这样就可以平滑并替代那些强度变化明显的区域。

对模糊图像二值化,顾名思义,就是把图像数值以某一边界分成两种数值,细节我会附在文章底部,如果还是不懂,去cao文档吧

此时,我们会得到

其实就算手动分割我们也是需要找到一个边界吧,可以看到轮廓出来了,但是我们最终要的是整个轮廓,所以内部小区域就不要了

5.图像形态学(牛逼吧、唬人的)

在这里我们选取ELLIPSE核,采用CLOSE操作,具体细节你依旧可以参考我的附录文档,及拓展。

此时,我们会得到

6.细节刻画

从上图我们可以发现和原图对比,发现有细节丢失,这会干扰之后的昆虫轮廓的检测,要把它们扩充,分别执行4次形态学腐蚀与膨胀(附录文档)

此时,我们会得到

7.找出昆虫区域的轮廓

此时用cv2.findContours()函数

第一个参数是要检索的图片,必须是为二值图,即黑白的(不是灰度图)

8.画出轮廓

找到轮廓了,接下来,要画出来的,即用cv2.drawContours()函数

此时,我们会得到

9.裁剪出来就完成啦

方法嘛,这不就是么,找到这四个点切出来就好啦

我们放大一点看一下细节

其实,box里保存的是绿色矩形区域四个顶点的坐标。 我将按下图红色矩形所示裁剪昆虫图像。

找出四个顶点的x,y坐标的最大最小值。新图像的高=max(Y)-min(Y),宽=max(X)-min(X)

终于我们得到了可爱的小虫子。

得到了目标区域,那么你想拿它干什么就干什么!我不管你哈。

考虑到现在的python教程一般都是一上来就是list、tuple什么的,而不是文件的读写和保存,包括批量读取等等

我特地加入了python版的文件批量读写和保存等附录文件

代码与附录:

附录

多谢大家支持公众号

看! 小编我给你们跪下了

相关知识和其他问题

欢迎大家留言或者加群在群中探讨

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G0LAPV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券