图像处理
文章平均质量分 71
蒙特卡洛家的树
计算机视觉工程师
展开
-
opencv实现二维码检测
title: opencv实现二维码检测date: 2020-07-03 14:03:44tags: [opencv]categories:图像处理opencv调用opencv从4代之后推出了二维码识别接口.调用方法是这样的.‘’’import cv2img = cv2.imread(‘data/qrcode.jpg’)img = cv2.imread(‘qrcode/11.jpg’)qrcode = cv2.QRCodeDetector()result, points, c.转载 2020-07-03 20:07:03 · 20210 阅读 · 3 评论 -
目标检测-Faster RCNN
哈喽大家好,我是蒙特卡洛家的树。时间到了2016年,fastrcnn问世一年,何凯明老师就立刻提出了更快的算法,fast的名字被占用了,所以干脆就叫faster rcnn了。之前fastrcnn上说他跑一帧只需要0.几秒,其实这里玩了一个文字游戏,因为这里跑一帧只是神经网络部分,并没有涵盖region proposal的时间。而fast rcnn最耗时的部分就是region proposal部分...原创 2019-12-27 16:31:01 · 875 阅读 · 0 评论 -
目标检测-Fast RCNN
哈喽大家好,我是蒙特卡洛家的树,时间来到2015年,经历了一年的发展,官方版的快速RCNN问世了。这次出的这个fast rcnn主要借鉴了SPP的方法,共享了featuremap,大大提升了RCNN的效率,另外他自己也有一些创新。就是舍弃了之前的SVM和bbox回归两步,直接在神经网络中完成分类和回归。他的过程分这么几步。首先是CNN,整张图片输入到神经网络中,算出一个大的featuremap。...原创 2019-12-27 14:15:09 · 396 阅读 · 1 评论 -
目标检测-SPPNet
RCNN横空出世之后,人们开始把目标检测的重心放在了神经网络上。但是RCNN有个非常明显的缺点,就是速度慢,以为有2000个候选框需要计算,所以跑了2000次前向传播。这样跑一张图片就需要五十多秒。何凯明老师提出了一种新的思想,大大的提升了性能,这个方法叫做空间金字塔池化。这个空间金字塔池化使用了比例池化,可以不关心输入大小,也能够输出固定维度的特征,从而代替全连接层.其实就是规定把图片分成几份...原创 2019-12-09 08:46:02 · 509 阅读 · 0 评论 -
极简解释inception V1 V2 V3 V4
Inception v1inception的核心就是把google net的某一些大的卷积层换成1*1, 3*3, 5*5的小卷积,这样能够大大的减小权值参数数量。直接上一张完整的图片 可以看到,卷积了几步之后就开始出现并行的过程,换成几个1*1, 3*3, 5*5的卷积并列。然后再把分别卷积的结果作为层数维度上的合并。 比方说这一层本来是一个28*28大小的卷积核,一共输出224层,...原创 2018-06-24 15:34:32 · 35799 阅读 · 10 评论 -
PCL入门<八> RANSAC的实现
之前发国一篇文章讲解了ransac的基本原理,PCL也有相应的代码的实现,今天来讲以下如何使用。先看PCL官网的示例:#include <iostream>#include <pcl/ModelCoefficients.h>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#inclu...原创 2018-04-24 09:35:13 · 10119 阅读 · 4 评论 -
什么是卷积呢
话不多说,首先我先上一张动图! 这幅图展示的就是一个二维卷积的过程,也就是一般二维图像的滤波过程。 首先左边的5*5的绿色区域代表的是待卷积对象,这里理解为一幅图像的一个维度,例如灰度图就是图像的灰度值,RGB彩色图就是RGB中的某一个通道;中间在移动的黄色区域是卷积核(注意右下角的红字才是卷积核的一部分,中间的黑字是属于绿色原图的,不信你看卷积核在移动的时候中间的黑字是不变的原创 2016-11-01 08:29:27 · 1026 阅读 · 1 评论 -
pooling池化操作的代码详解
池化这个操作原理非常简单,相信大家都很容易搞懂,那么这篇博客就主要从代码来谈谈吧。首先还是简单介绍一下原理(不是我偷懒想要简单介绍,是因为这个东西介绍起来本身就很简单)所谓的池化目的就是抽象,把一大片面积总结成一个数,比方说一副100*100的图,我们每50*50的区域就取一个最大值,共计能取4个最大值,那么这个2*2的最大值图像就是池化后的图像了。原创 2017-01-09 20:08:49 · 10401 阅读 · 1 评论 -
腐蚀、膨胀以及开闭操作等形态学处理
上一篇我讲过什么叫做卷积,而且提到了卷积与滤波其实不完全相同,因为部分滤波是非线性的,比方说中值滤波,就是取每个局部地区的中位数,也就是中间大小的数。如果展开了类比,如果取局部最大值或者局部最小值会是什么样的呢?大值滤波?小值滤波?哈哈,其实取大值滤波的官方学名叫做膨胀,小值滤波叫做腐蚀。一句话概括,腐蚀就是取局部最小值的滤波,膨胀就是取局部最大值的滤波。原创 2016-11-07 12:32:06 · 1839 阅读 · 0 评论 -
Gabor滤波的层层总结
声明:这篇博客是我学习gabor滤波的笔记,根据进度层层总结,在完全学会前会看起来很混乱,但是我保证在终止连载以后一定马上整理成Gabor的介绍博客。我学习的起因是阅读了《Human Age Estimation Using Bio-inspired Features》这篇文章。核的大小:文章里面出现了这样一个表格:这个表格的右半部份是gabor滤波的参数,其中含义是当周期原创 2017-01-08 10:12:16 · 1293 阅读 · 1 评论 -
关于LBP(Local Binary Pattern)特征<二> 几种变种
旋转不变的LBP: 关于旋转不变,其实很好解决,那就是让不管如何旋转结果都一样就可以了(废话),至于怎么一样,我们定义一个规则,通常定义取最小值,也就是对于每幅图,不同角度都做一遍LBP,对于每个点取几遍中的最小值就可以了。实际操作起来其实可以不用做几遍LBP。因为每个点的相对关系做一遍都已经知道了,剩下的就是给他们重新排列一下就可以了。代码随后补上。原创 2016-12-01 15:19:40 · 861 阅读 · 0 评论 -
关于LBP(Local Binary Pattern)特征
LBP是英文Local Binary Pattern的缩写,顾名思义,他是一个局部的二值特征。所谓局部,就是他的提取方法是根据他附近点的信息来计算的,所谓二值,就是特征只有0和1了。具体操作其实也非常简单,就是做一个判断的滤波器,什么叫判断的滤波器呢?就是判断附近的点是不是比中间的点大,如果大就是1,小就是0,等于的话就看规定了,可以规定0也可以规定1,但是规定一定要统一,不能一会是0一会是1原创 2016-11-30 19:06:33 · 1040 阅读 · 0 评论