目标检测(ObjectDetection)原理与实现.docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目标检测(ObjectDetection)原理与实现

?目标检测(Object Detection)原理与实现基于阈值图像处理的目标检测? 从今天起开始要写一些关于目标检测的文章,涵盖从简单的阈值图像处理检测、霍夫变换(hough transform)检测、模版匹配检测(刚体匹配)、AAM+ASM+ACM(非刚体)匹配检测到近代机器学习方法检测,尽量贴一些代码,这些很实用。本篇就从阈值图像处理检测开始。阈值顾名思义就是一个分界值,做图像处理的都明白阈值的用途,但是考虑到各种观众,干脆把OpenCV中的各种阈值标识符和对应代码示意都贴出来,如(图一)所示:(图一)?仔细阅读下(图一)中的各种伪代码,就很容易明白阈值函数的工作机制,其中src(x,y)是图像像素点值。下面就给出一个处理答题卡的例子,(图二)是从网上找到的一个答题卡样图,我们的目标是检测到哪些选项被涂黑了,然后根据坐标判定是哪个数字,其实根据坐标是有依据的,因为答题卡四个角有一些对准线,对齐后用扫描仪扫描后紧跟着经过算法处理就可以判断出考生选项,本篇文章就简化流程,考虑到涂的选项是黑色的,因此我们使用第二个阈值方法,经过处理后如(图三)所示。?(图二) (图三)几乎perfect,嘿嘿,下面把代码也贴出来,python版本的。import numpy as npimport cv2img=cv2.imread(anwser_sheet.jpg)grey=cv2.cvtColor(img,cv2.cv.CV_BGR2GRAY)retval,grey=cv2.threshold(grey,90,255,cv2.cv.CV_THRESH_BINARY_INV) grey=cv2.erode(grey,None)grey=cv2.dilate(grey,None) contours,hierarchy=cv2.findContours(grey.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)newimg=np.zeros_like(grey) cv2.drawContours(newimg, contours, -1, 255)cv2.imshow(test,newimg)cv2.imwrite(processed.jpg,newimg)cv2.waitKey()代码流程先是读取图像文件,接着转成灰度图,接着做个开运算(腐蚀后再膨胀),接着阈值处理,最后把目标轮廓画出,根据目标块的坐标可以大概的推算出对应的数字,接着秀一下打印出某个涂项,比如最后一个,那么只需要把cv2.drawContours(newimg, contours, -1, 255) 改成 cv2.drawContours(newimg, contours, 0, 255)第三个参数为负数表示打印所有轮廓,0表示打印最后一个选项,打印是倒着数的。如(图四)所示:(图四) 基于阈值图像处理的目标检测一般只适应于自己能控制颜色和亮度的项目中,这也为什么规定答题卡要尽量使用黑色的(同一颜色方便阈值处理),另外这种方法也可以用在目标的三维重建上,如(图五)所示,用阈值的方法找到汽车上的标定点对后续点云的获取很有帮助,进而完成整个汽车模型的三位重建,此方法虽然简单,但对这几种场景很实用,通过简单的图像处理(各个阶段去噪)后,然后简单的查找下各种闭合小轮廓就OK了,好了,今天就说到这,比较简单,后续会越来越复杂些,用到的数学知识也越来越多。(图五)基于霍夫变换和广义霍夫变换的目标检测 上节讨论了基于阈值处理的目标检测,今天就来讨论下基于霍夫投票的目标检测,霍夫投票打算分成两个小节,第一个小节简单的说下霍夫变换和广义霍夫变换(generalized hough transform),他们投票的权重都是相等的,下一节讨论概率空间中的霍夫投票,顾名思义他们的投票权重是不确定的。 先来看下霍夫变换(hough transform),霍夫变换一般适用于有解析表达式的几何形状目标检测,例如直线、圆、椭圆等。用个统一的解析表达式来表达他们:f(x,alpha)=0,其中x 是图形上点,alpha则是解析表达式参数,比如欧式坐标系中直线的参数就是斜率m和截距c(或者极坐标系中的theta和ρ),圆的参数则是原点和半径。霍夫变换的核心就是把图像空间的直线变换到参数空间(也叫霍夫空间),比如一个直线y=mx+c,给定一个点(x’,y’),把它代入直线方程,得到y’=mx’+c,其实此时仍然是一条直线(在参数空间的直线,斜率是-x’,截距是y’),图像空间和霍夫空间的对应关系如(图一)所示:(图一)?(图一)中左图是图像空间,右图是霍夫空间(参数空间),对于图像空间中线段pq上任意一点带入直线方程后,都可以在霍夫空间中得到另外一条直线,二者是对

文档评论(0)

haocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档