基于阈值图像处理的目标检测    

从今天起开始要写一些关于目标检测的文章,涵盖从简单的阈值图像处理检测、霍夫变换(hough transform)检测、模版匹配检测(刚体匹配)、AAM+ASM+ACM(非刚体)匹配检测到近代机器学习方法检测,尽量贴一些代码,这些很实用。本篇就从阈值图像处理检测开始。阈值顾名思义就是一个分界值,做图像处理的都明白阈值的用途,但是考虑到各种观众,干脆把OpenCV中的各种阈值标识符和对应代码示意都贴出来,如(图一)所示:

(图一)

仔细阅读下(图一)中的各种伪代码,就很容易明白阈值函数的工作机制,其中src(x,y)是图像像素点值。下面就给出一个处理答题卡的例子,(图二)是从网上找到的一个答题卡样图,我们的目标是检测到哪些选项被涂黑了,然后根据坐标判定是哪个数字,其实根据坐标是有依据的,因为答题卡四个角有一些对准线,对齐后用扫描仪扫描后紧跟着经过算法处理就可以判断出考生选项,本篇文章就简化流程,考虑到涂的选项是黑色的,因此我们使用第二个阈值方法,经过处理后如(图三)所示。

    

(图二)                                         (图三)

几乎perfect,嘿嘿,下面把代码也贴出来,python版本的。

[python] view plaincopy
  1. import numpy as np
  2. import cv2
  3. img=cv2.imread('anwser_sheet.jpg')
  4. grey=cv2.cvtColor(img,cv2.cv.CV_BGR2GRAY)
  5. retval,grey=cv2.threshold(grey,90,255,cv2.cv.CV_THRESH_BINARY_INV)
  6. grey=cv2.erode(grey,None)
  7. grey=cv2.dilate(grey,None)
  8. contours,hierarchy=cv2.findContours(grey.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
  9. newimg=np.zeros_like(grey)
  10. cv2.drawContours(newimg, contours, -1, 255)
  11. cv2.imshow('test',newimg)
  12. cv2.imwrite("processed.jpg",newimg)
  13. cv2.waitKey()

代码流程先是读取图像文件,接着转成灰度图,接着做个开运算(腐蚀后再膨胀),接着阈值处理,最后把目标轮廓画出,根据目标块的坐标可以大概的推算出对应的数字,接着秀一下打印出某个涂项,比如最后一个,那么只需要把

cv2.drawContours(newimg, contours, -1, 255) 改成 cv2.drawContours(newimg, contours, 0, 255)

第三个参数为负数表示打印所有轮廓,0表示打印最后一个选项,打印是倒着数的。如(图四)所示:

(图四)

基于阈值图像处理的目标检测一般只适应于自己能控制颜色和亮度的项目中,这也为什么规定答题卡要尽量使用黑色的(同一颜色方便阈值处理),另外这种方法也可以用在目标的三维重建上,如(图五)所示,用阈值的方法找到汽车上的标定点对后续点云的获取很有帮助,进而完成整个汽车模型的三位重建,此方法虽然简单,但对这几种场景很实用,通过简单的图像处理(各个阶段去噪)后,然后简单的查找下各种闭合小轮廓就OK了,好了,今天就说到这,比较简单,后续会越来越复杂些,用到的数学知识也越来越多。

(图五)

@ 参考:http://www.mathworks.com/matlabcentral/fileexchange/44166-generalized-hough-transform

转载请注明出处:http://blog.csdn.net/cuoqu/article/details/9058735

图像目标检测(Object Detection)原理与实现(一)相关推荐

  1. 同r做一个窗口_目标检测(Object Detection):R-CNN/SPPnet/R-FCN/Yolo/SSD

    这篇文章我是Survey目标检测(Object Detection)系列论文的一个总结. 包括R-CNN系列.SPP-net.R-FCN.YOLO系列.SSD.DenseBox等. 基本概念 目标识别 ...

  2. [Intensive Reading]目标检测(object detection)系列(九) YOLOv3:取百家所长成一家之言

    目标检测系列: 目标检测(object detection)系列(一) R-CNN:CNN目标检测的开山之作 目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享 ...

  3. CV之OD:计算机视觉之目标检测(Object Detection)方向的简介、使用方法、案例应用之详细攻略

    CV之OD:计算机视觉之目标检测(Object Detection)方向的简介.使用方法.案例应用之详细攻略 目录 OD目标检测的简介 1.Selective Search for Object Re ...

  4. 快速目标检测--Object detection at 200 Frames Per Second

    Object detection at 200 Frames Per Second 本文在 Tiny Yolo 的基础上设计了一个目标检测网络,在 Nvidia 1080ti 上可以达到 100帧每秒 ...

  5. 目标检测--Object Detection via Aspect Ratio and Context Aware

    Object Detection via Aspect Ratio and Context Aware Region-based Convolutional Networks https://arxi ...

  6. 深度学习目标检测(object detection)系列(一) R-CNN

    原文链接 R-CNN简介 R-CNN提出于2014年,应当算是卷积神经网络在目标检测任务中的开山之作了,当然同年间还有一个overfeat算法,在这里暂不讨论. 在之后的几年中,目标检测任务的CNN模 ...

  7. 什么是目标检测--Object Detection

    目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割.它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力.目标检测不仅要用算法判断图片中物品的分类, 还要在图片中标记出它 ...

  8. 图像目标检测算法总结(从 R-CNN 到 YOLO v3)

    作者丨江户川柯壮@知乎 来源丨图像目标检测算法总结(从R-CNN到YOLO v3) - 知乎 基于CNN 的目标检测是通过CNN 作为特征提取器,并对得到的图像的带有位置属性的特征进行判断,从而产出一 ...

  9. 深度学习在遥感图像目标检测中的应用综述

    深度学习在遥感图像目标检测中的应用综述 1 人工智能发展 1.1 发展历程 1.2 深度学习的应用 2 深度学习 2.1 机器学习概述 2.2 神经网络模型 2.3 深度学习 2.4 深度学习主要模型 ...

  10. Google开启全新图像目标检测大赛,场景多样性和复杂度史无前例

    铜灵 编译整理 量子位 出品 | 公众号 QbitAI 昨天,谷歌又开启了一场全新的图像目标检测大赛(Google AI Open Images - Object Detection Track). ...

最新文章

  1. PHP脚本批量清除nginx缓存的方法
  2. Java NIO系列教程(五) 通道之间的数据传输
  3. 【深度学习】PyTorch深度学习技术生态
  4. 初一级模拟赛总结(3.15)
  5. Django框架—富文本编辑器
  6. 图片也要查重了?期刊用AI审论文防造假,旋转/翻转/拉伸都不行
  7. 更换session保存的路径
  8. java 类里面对象共享_Java并发编程 - 对象的共享
  9. LeetCode 234 Palindrome Linked List
  10. 递归法:杨辉三角,计算第m层的第n个系数
  11. Hibernate_02
  12. socket的tcp连接中的监听套接字和已连接套接字
  13. 黑盒测试方法之等价类划分
  14. qq令牌64位密钥提取_令牌QQ号代码64位数字+字母只截图保存可转换文字再来获取口令...
  15. 2022年低压电工考试模拟100题及模拟考试
  16. CAD二次开发--->批量快速创建对齐标注插件
  17. 硬核科普:年薪30万的数据分析师,每天到底在干些什么?
  18. linux根下目录都代表什么,Linux根目录下的各个目录结构及作用
  19. python字典第一个元素_如何获取python字典中的第一个值
  20. python 爬取《时间的形状》微信公号

热门文章

  1. golang 学习笔记
  2. 国网“泛在电力物联网”的战略与逻辑
  3. 使用Hyper-V Server创建Linux虚拟机
  4. Design7:数据删除设计
  5. Android--JNI编程详解
  6. python自动化运维之python2.6升级2.7和集中病毒扫描
  7. Java中接口定义成员变量
  8. 编程之美 set 8 区间重合判断
  9. 从市场角度看服务器虚拟化
  10. 【leetcode】390. Elimination Game