随笔分类 - opencv探索

摘要: 在深度学习在图像识别任务上大放异彩之前,词袋模型Bag of Features一直是各类比赛的首选方法。首先我们先来回顾一下PASCAL VOC竞赛历年来的最好成绩来介绍物体分类算法的发展。 从上表我们可以发现,在2012年之前,词袋模型是VOC竞赛分类算法的基本框架,几乎所有算法都是基于词袋模型的阅读全文
posted @ 2017-12-24 09:49 Madcola 阅读(3355) | 评论 (9) 编辑
摘要: 好久没写博客了,因为最近都忙着赶项目和打比赛==| 好吧,今天我打算写一篇关于使用opencv做皮肤检测的技术总结。那首先列一些现在主流的皮肤检测的方法都有哪些: 1. RGB color space 1. Ycrcb之cr分量+otsu阈值化 1. YCrCb中13395 AND G 40 B 2阅读全文
posted @ 2017-11-20 23:45 Madcola 阅读(12832) | 评论 (2) 编辑
摘要: 最近在做票据识别的编码工作时遇到一些问题,就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此,我们必须先对票据图像进行一定的预处理来移除印章干扰,再进行字符识别,这样子识别准确率才有保证。 我们从阅读全文
posted @ 2017-10-08 19:50 Madcola 阅读(6429) | 评论 (7) 编辑
摘要: 搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注。图像标注是件很枯燥又很费人力物力的一件事情,但是又不能回避,毕竟搞深度学习如果没有数据集那一切都是瞎搞。最近我在参加一个有阅读全文
posted @ 2017-09-30 00:19 Madcola 阅读(5652) | 评论 (7) 编辑
摘要: 图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要。 再举一个身边的例子吧,你用你的手机对某一场景拍照,但是你没有办法一次将所有你要拍的景物全部拍下来,所以你对该场景从左往右依次拍了好几阅读全文
posted @ 2017-08-22 15:49 Madcola 阅读(82031) | 评论 (67) 编辑
摘要: 一幅图像中总存在着其独特的像素点,这些点我们可以认为就是这幅图像的特征,成为特征点。计算机视觉领域中的很重要的图像特征匹配就是一特征点为基础而进行的,所以,如何定义和找出一幅图像中的特征点就非常重要。这篇文章我总结了视觉领域最常用的几种特征点以及特征匹配的方法。 在计算机视觉领域,兴趣点(也称关键点阅读全文
posted @ 2017-08-20 21:28 Madcola 阅读(49793) | 评论 (12) 编辑
摘要: 相信很多人手机里都装了个“扫描全能王”APP,平时可以用它来可以扫描一些证件、文本,确实很好用,第一次用的时候确实感觉功能很强大啊算法很牛逼啊。但是仔细一想,其实这些实现起来也是很简单的,我想了下,实现的步骤应该就只有下面三个: 1. 将证件轮廓找到 2. 提取证件矩形轮廓四点进行透视变换 3. 二阅读全文
posted @ 2017-08-09 11:28 Madcola 阅读(15989) | 评论 (21) 编辑
摘要: 我们经常遇到这样的需求:我们在VS写好的程序,需要在一个没有装opencv甚至没有装vs的电脑下运行,跑出效果。比如,你在你的电脑用opencv+vs2015写出一个程序,然后老师叫你把程序发给他,他要看看功能实现的怎么样。老师的电脑肯定没有整套的开发环境的,如果你想只把代码发给他,让他自己编译,肯阅读全文
posted @ 2017-07-31 16:21 Madcola 阅读(8093) | 评论 (2) 编辑
摘要: 近日在做基于sift特征点的图像配准时遇到匹配失败的情况,失败的原因在于两幅图像分辨率相差有点大,而且这两幅图是不同时间段的同一场景的图片,所以基于sift点的匹配已经找不到匹配点了。然后老师叫我尝试手动选择控制点来支持仿射变换。 很可惜opencv里没有这类似的库,查了下资料,看看有没有现成的手动阅读全文
posted @ 2017-07-29 00:41 Madcola 阅读(8189) | 评论 (12) 编辑
摘要: 有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理。一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作。那么如果遇到这样的场景,我们有什么好方法,搭建这类的小型数据库文件?我第一时间想到的是把这些数据全写到文件上,下次我阅读全文
posted @ 2017-07-15 12:27 Madcola 阅读(8192) | 评论 (0) 编辑
摘要: 近日在用opencv做一些图像处理的操作时,需要对一些高分辨率的图像进行保存。比如,在操作一个容量为230M的图像后,并对该图像保存为JPG格式后,发现图像容量变为80M了!针对这个问题,忙了大半天,到处翻阅资料,终于知道为什么了。 先举个例子说明自己遇到的问题,为了看出效果,我特意用了一个高分辨率阅读全文
posted @ 2017-07-08 14:22 Madcola 阅读(24594) | 评论 (2) 编辑
摘要: 在opencv的编程中,遍历访问图像元素是经常遇到的操作,掌握其方法非常重要,无论是Mat类的像素访问,还是IplImage结构体的访问的方法,都必须扎实掌握,毕竟,图像处理本质上就是对像素的各种操作,访问元素就是各种图像处理算法的第一步。 首先先看看图像的是怎么存储的。 单通道图像 多通道图像 M阅读全文
posted @ 2017-06-26 23:09 Madcola 阅读(5545) | 评论 (1) 编辑
摘要: 刚进入实验室导师就交给我一个任务,就是让我设计算法给图像进行矫正。哎呀,我不太会图像这块啊,不过还是接下来了,硬着头皮开干吧! 那什么是图像的矫正呢?举个例子就好明白了。 我的好朋友小明给我拍了这几张照片,因为他的拍照技术不咋地,照片都拍得歪歪扭扭的,比如下面这些照片: 人民币 发票 文本 这些图片阅读全文
posted @ 2017-05-25 10:46 Madcola 阅读(30436) | 评论 (12) 编辑
摘要: 角点检测是计算机视觉系统中用来获取图像特征的一种方法。我们都常说,这幅图像很有特点,但是一问他到底有哪些特点,或者这幅图有哪些特征可以让你一下子就识别出该物体,你可能就说不出来了。其实说图像的特征,你可以尝试说一下这幅图有几个矩形啊几个圆形啊,有几条直线啊,当然啦,你也可以说一下有几个角点。 什么是阅读全文
posted @ 2017-05-24 16:29 Madcola 阅读(15802) | 评论 (1) 编辑
摘要: 绘制点和圆 img:图像。 center:圆心坐标。 radius:圆形的半径。 color:线条的颜色。 thickness:如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。 line_type:线条的类型。见 cvLine 的描述 shift:圆心坐标点和半径值的小数点位数。 画阅读全文
posted @ 2017-05-24 09:25 Madcola 阅读(34818) | 评论 (0) 编辑
摘要: 在OpenCV中我们经常会遇到一个名字:Mask(掩膜)。很多函数都使用到它,那么这个Mask到底什么呢? 一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用。经过查阅大量资料后,也对Mask有一点自己的理解了,下面就说说我的理解。 比如我要对一幅图进行抠图操作,阅读全文
posted @ 2017-05-23 16:29 Madcola 阅读(28139) | 评论 (5) 编辑
摘要: 在图像处理领域,有一个非常重要的名词ROI。 什么是ROI? 它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域。 感兴趣区域,就是我们从图像中选择一个图像区域,这个区域就是图像分析所关注的焦点。我们圈定这个区域,那么我们要处理的图像就从大图像变为一个小图像区域了,这样阅读全文
posted @ 2017-05-23 10:02 Madcola 阅读(16044) | 评论 (2) 编辑
摘要: Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体。所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓。 OpenCV中有一个很强大的函数,它可以从 二值图像 中找到轮廓:findContours函数。 有时我们还需要把找到的轮廓画出来,那就要用到阅读全文
posted @ 2017-05-22 18:55 Madcola 阅读(6297) | 评论 (1) 编辑
摘要: 在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏。如果我们想让这些受到破坏的额图片尽可能恢复到原样,Opencv能帮我们做到吗? OpenCV真的有这个妙手回春的功能!别以为图像修补的工作只能阅读全文
posted @ 2017-05-22 10:08 Madcola 阅读(15234) | 评论 (8) 编辑
摘要: 模板匹配的作用在图像识别领域作用可大了。那什么是模板匹配? 模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术。 说的有点抽象,下面给个例子说明就很明白了。 在上面这幅全明星照中,我们想找出姚明头像的位置,并把它标记出来,可以做到吗? 可以,这就是模板匹配的要做的事情。 阅读全文
posted @ 2017-05-21 11:12 Madcola 阅读(29591) | 评论 (2) 编辑
摘要: 重映射 重映射就是把一幅图像中某个位置的像素放置到另一个图片中指定位置的过程。 用一个数学公式来表示就是: 其中的 f 就是映射方式,也就说,像素点在另一个图像中的位置是由 f 来计算的。 在OpenCV中,用的是remap函数实现重映射。 基本重映射 map_x与map_y分别代表目标图中的(x,阅读全文
posted @ 2017-05-20 18:45 Madcola 阅读(6582) | 评论 (3) 编辑
摘要: 我们如何在图像中快速识别出其中的圆和直线?一个非常有效的方法就是霍夫变换,它是图像中识别各种几何形状的基本算法之一。 霍夫线变换 霍夫线变换是一种在图像中寻找直线的方法。OpenCV中支持三种霍夫线变换,分别是标准霍夫线变换、多尺度霍夫线变换、累计概率霍夫线变换。 在OpenCV中可以调用函数Hou阅读全文
posted @ 2017-05-20 11:09 Madcola 阅读(9321) | 评论 (2) 编辑
摘要: 边缘检测的一般步骤: 1. 滤波——消除噪声 2. 增强——使边界轮廓更加明显 3. 检测——选出边缘点 Canny算法 Canny边缘检测算法被很多人推崇为当今最优秀的边缘检测算法,所以我们第一个就介绍他。 opencv中提供了Canny函数。 看了canny算法提取的轮廓图,感觉真是厉害,居然把阅读全文
posted @ 2017-05-19 16:51 Madcola 阅读(43006) | 评论 (3) 编辑
摘要: 对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像。 要缩小图像,一般推荐使用CV_INETR_AREA来插值;若要放大图像,推荐使用CV_INTER_LINEAR。 现在说说调用方式 第一种,规定好你要图片的尺寸,就是你填入你要的图阅读全文
posted @ 2017-05-19 09:35 Madcola 阅读(16327) | 评论 (0) 编辑
摘要: 腐蚀和膨胀是最基本的形态学运算。 腐蚀和膨胀是针对白色部分(高亮部分)而言的。 膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。 膨胀 膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩阅读全文
posted @ 2017-05-18 16:57 Madcola 阅读(34680) | 评论 (0) 编辑
摘要: 滤波处理分为两大类:线性滤波和非线性滤波。OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法。 线性滤波:方框滤波、均值滤波、高斯滤波 方框滤波 均值滤波 均值滤波就是方框滤波的一个特殊情况。 均值滤波的缺点就是不能很好地保护细节,在图像去燥的同时也破坏了图像的而细节部分,从而阅读全文
posted @ 2017-05-18 14:29 Madcola 阅读(9710) | 评论 (0) 编辑
摘要: opencv图像初始化操作 运行效果 使用 均值滤波实现图像模糊 运行效果 canny边缘检测 思路:将原始图像转化为灰度图,用blur函数进行图像模糊以降噪,然后用canny函数进行边缘检测。 运行效果 基础图像操作 创建窗口:namedWindow() void namedWindow(cons阅读全文
posted @ 2017-05-18 12:01 Madcola 阅读(12226) | 评论 (12) 编辑
摘要: 我的电脑64位Win10系统,现在利用VS2015安装opencv3.10。安装之路颇为艰辛,从一开始的VS2015的安装,到opencv的安装,都充满挑战,历经千辛万苦终于把opencv开发环境搭建好了,现把opencv3.10的安装步骤记录下来,以助于以后再次安装少走弯路。 VS2015的安装就阅读全文
posted @ 2017-05-11 11:46 Madcola 阅读(23230) | 评论 (2) 编辑