对于视觉图像检测的认知,真的需要有所提高才行

OpenCV数字图像处理学习平台获取——淘宝地址:
链接: OpenCV数字图像处理学习平台
OpenCV视觉应用31例获取——淘宝地址:
链接: OpenCV视觉应用31例获取地址

很久以前,专门介绍过关于图像的基础知识,包括什么是数字图像,什么是二值图、灰度图、彩色图、图像通道、图像的位数等。如果对这些概念不清楚的,可以在网上查一下,到处都可以找得到相关的资料。今天我不谈这个问题,我以为了解了这些图像处理基础,能够对视觉图像检测有比较清晰的认识,实际上并非如此。经常和一些不了解数字图像处理的人打交道,因此有一些感触,实际上是想让不了解视觉图像处理的人,明白图像处理并不是想象的那么简单。同时,也想给那些想学视觉图像处理的人一些建议。
在实施视觉图像检测项目的时候,经常会和企业里面很多不懂数字图像的人员打交道。有时候交流起来真的有些困难。比如有些人说,这个我眼睛都看得见,检测肯定没问题,有些人一上来就说我这个检测很简单,就是做个对比结果就出来了。遇到这样的情况,真的很无语。有一次遇到一个人给我说,他觉得中文识别可能有难度,但是字符和数字识别肯定简单,因为数字和字符就那么几个,直接匹配或者对比就出来了。还有一次,遇到做药企说明书检测的,要求检测印刷的说明书上面的文字是否有缺陷,说明书是在线实时打印装盒的。他认为直接模板匹配或者和标准的图像进行相减就可以得到结果。遇到这种情况,做视觉的人能怎么办?根本解释不通,人家觉得你的图像处理根本没什么技术含量,只有不解释了。还有一次遇到一个企业老总,需要做视觉测量,说别人都是用深度学习做的,问我用什么方法做,我说不用深度学习,人家觉得你技术不行,我也只能说我也可以用深度学习做。当然,实际怎么做的,也就不告诉他了,只说也是用深度学习实现的。这篇文章主要是让那些有视觉检测需求的人明白,图像处理并不是那么简单,对于完全没有数字图像基础,又想学习相关知识的人,也想让他们明白,应该学习哪些东西。
对于没有了解过数字图像处理的人来说,判断图像能否处理是靠直觉,靠自己的眼睛,觉得眼睛能看得见,就可以检测。然而实际情况并不是这样。您眼中看到的图像,对于搞图像的人来说,看到的图像是图1所示的样子,是一堆数字,是要从这一堆数字中找出您想要的东西。图1对应在您眼中的图像是什么样子的呢?其实是一个字符“D”,就是图2所示的样子。如果只看到图2,您肯定觉得把“D”提取出来很简单。但是,如果我给您的是图1所示的一堆数字,怎么从这一堆数字中把对应的数字提取出来了呢。这就是搞图像的人做的事情,您是否还是觉得很简单?
图1 数字图像
图2 字符“D”图像
这还只是一个极其简单的例子。原图2448×2048,是500万像素,这里截图的只有61×51大小的图像,在这3000多个数字中提取出我们想要的数字。对于做图像处理的人来说,不是难事。但是,如果图像稍微复杂一点,就不是随随便便就可以实现的。
随着深度学习进入大众视野,人们觉得图像处理好像是万能的一样,觉得什么问题都可以用视觉图像来解决,其实远远不够。就以图3所示的药盒为例,上面的字符相对还比较少。如果要识别上面的字符,采用现有的技术基本上没有什么问题。但是,如果要检测上面的字符是否缺失某些笔画,就不是那么简单了,而这才是一些企业实际需要解决的问题。这只是拿这个药盒做一个例子,有很多产品需要检测的是字符缺陷,而不是识别字符,比如酒瓶上的字符缺陷检测等。识别和缺陷检测两种是不一样的,很多时候就算字符少了某些笔画,还是能够识别出来,但是识别结果无法判断是否有缺陷。不了解图像处理的人可能会说,拿一张没有缺陷的图像,和检测图像进行对比,做个减法不就可以了吗?事实上可行吗?也有人可能说用深度学习进行缺陷检测也可以啊。
图3 药盒字符缺陷检测图像
针对上面说的检测方法,我来说一下有什么问题。首先,和标准图像做对比,进行相减的方法,需要保证两幅图像对应位置完全对齐,要有相同的基准点,而实时采集的图像,每张图像位置都会不一样,角度和大小都会有一点变化,所以是没法相减的,需要想办法将两者变换到相同的位姿,这就不是轻易可以做到的。可能有人会说用仿射变换和透视变换啊。这个问题我不想解释,不然又要写一大堆文字,感兴趣的可以亲自动手试一下,在线采集十几张图像就可以试出结果。对于第二种采用深度学习进行缺陷检测的方法,我想说的是,缺陷是什么样子的?会出现在哪些地方?如果这些无法明确,那怎么训练呢?如果对检测精度要求不高,那没什么可说的。当然,针对这种字符缺陷检测的问题,也是有办法解决的,我想表达的意思是,很多视觉检测不是某些人想的那么简单,做图像检测的人有很多艰辛的付出,别人只看到结果出来了,凭直觉认为检测很简单,实际上并非如此。不可否认,有些视觉检测很简单。但是,每种检测到底是简单还是复杂,只有通过专业的光源打光和专业的相机拍照,拿到图像进行分析才能够判断,而不是凭眼睛看,或者用手机拍几张图像来判断是否能检测。某些检测拿到检测对象凭经验可以判断是否可以检测,对于大部分检测而言,建议都要经过专业的图像采集进行分析来判断。
对于大部分视觉检测要求,都不是采用某种单一的图像图像处理算法可以实现的。比如下面这张图,找出圆心位置,这是一个网友发给我的。可能不少人一开始想到的就是霍夫变换。实际上恐怕不行,首先在时间上可能就无法满足要求,其次,检测准确率可能也会有影响。单一的霍夫变换很难满足这个检测要求。对于这个检测,有些人也会觉得很简单,当然,这个图本身也不难。但是,如果对图像处理函数不能熟练应用,估计也要弄半天看能不能出来结果。对于没有学过视觉图像检测的人,可能会提出不少不切实际的想法,觉得这样或者那样等等都可以实现检测。这个图是应该用几何方法绘制后打印出来的,但是拍成图像之后圆已经变成了椭圆,如果用找圆的方法去找圆心,实际上已经有问题了。图4是原图,图5是我检测出来的结果,有兴趣的也可以把这个图下载下来,然后试下怎么找圆心。
图4 找出图中圆心的位置
图5 检测结果
说实话,最近心里有点烦,所以很久都没有更新了。上面也是我想到哪就说到哪,没有什么章法。对于那些认为视觉检测很简单的人,如果您真的了解图像处理,就不应该有这种想法。您眼睛所看到的的图像以及您所认为的图像处理方法,与实际的图像处理方法,可能完全不同。如果您没有做过视觉图像处理,您所认为的简单的视觉检测,可能最后都没有办法实现,所以最好听一下有经验的人的判断。
对于那些想从事视觉图像处理的人而言,我想说的还是和原来一样,拿图像多练习,熟练掌握每种图像处理函数的用法,深度学习只是众多图像处理算法的一种,包括深度学习在内的各种传统图像处理算法,都需要熟练掌握,运用自如,才能够在这个行业里面走下去。各种传统的图像处理方法我已经集成在这个学习平台上了,有付出才有收获,以前学习的时候,也是自己买了好多书来照着学的。如果只是在网上查一些零散的资料来学习的话,是很难有收获的,反而会失去的是大量宝贵的时间。

OpenCV数字图像处理学习平台获取地址:
链接: OpenCV数字图像处理学习平台
OpenCV视觉应用31例获取地址:
链接: OpenCV视觉应用31例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

系统学习OpenCV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值