Image Processing
文章平均质量分 81
eternity1118_
不积跬步无以至千里,不积小流无以成江海
展开
-
常见传统目标检测算法
一 概览首先,我们先来看下目标检测的发展历程:1.2001年,V-J检测器诞生,主要用于人脸的检测;2.2006年,HOG + SVM的方法出现,主要用于行人的检测;3.2008年,rgb大神(记住这个人,后面的R-CNN系列检测算法也是出自他之手)研究出了著名的DPM算法,在深度学习方法成熟之前的很长一段时间里,就是这个算法一直在目标检测中发挥作用;以上算法是属于传统目标检测的算法...原创 2019-03-29 18:15:57 · 20354 阅读 · 2 评论 -
基于DL的计算机视觉(1)-- Python基础介绍
1.背景计算机视觉/computer vision是一个火了N年的topic。持续化升温的原因也非常简单:在搜索/影像内容理解/医学应用/地图识别等等领域应用太多,大转载 2016-08-11 11:18:50 · 1088 阅读 · 0 评论 -
基于DL的计算机视觉(11)-- 基于DL的快速图像检索系统
1.引言本系统是基于CVPR2015的论文《Deep Learning of Binary Hash Codes for Fast Image Retrieval》实现的海量数据下的基于内容图片检索系统,250w图片下,对于给定图片,检索top 1000相似时间约为1s,其基本背景和原理会在下文提到。2.基本问题与技术大家都知道,基于内容的图像检索系统是根据图像的内容,在已转载 2016-08-11 11:59:19 · 1093 阅读 · 0 评论 -
基于DL的计算机视觉(10)-- 详谈CNN
1. 前言前面九讲对神经网络的结构,组件,训练方法,原理等做了介绍。现在我们回到本系列的核心:计算机视觉,神经网络中的一种特殊版本在计算机视觉中使用最为广泛,这就是大家都知道的卷积神经网络。卷积神经网络和普通的神经网络一样,由『神经元』按层级结构组成,其间的权重和偏移量都是可训练得到的。同样是输入的数据和权重做运算,输出结果输入激励神经元,输出结果。从整体上看来,整个神经网络做的事情,依旧转载 2016-08-11 11:54:37 · 1080 阅读 · 2 评论 -
基于DL的计算机视觉(9)--神经网络之动手实践
1.引言前面8小节,算从神经网络的结构、简单原理、数据准备与处理、神经元选择、损失函数选择等方面把神经网络过了一遍。这个部分我们打算把知识点串一串,动手实现一个简单的2维平面神经网络分类器,去分割平面上的不同类别样本点。为了循序渐进,我们打算先实现一个简单的线性分类器,然后再拓展到非线性的2层神经网络。我们可以看到简单的浅层神经网络,在这个例子上就能够有分割程度远高于线性分类器的效果。转载 2016-08-11 11:52:10 · 797 阅读 · 0 评论 -
自适应直方图均衡(AHE)和限制对比度的自适应直方图均衡(CLAHE)
本文翻译自https://en.wikipedia.org/wiki/Adaptive_histogram_equalization,如有错误还望海涵。。自适应的直方图均衡(Adaptive Histogram Equalization)1.算法简介 AHE是一种用来改善图像对比度的图像处理技术,它与传统的(普通)直方图均衡相比,不同点主要在于,AHE通过计算图像每一个显翻译 2016-05-24 17:37:02 · 22564 阅读 · 4 评论 -
限制对比度的自适应直方图均衡化(CLAHE)在opencv中的使用
1.CLAHE简介 HE直方图增强,大家都不陌生,是一种比较古老的对比度增强算法,它有两种变体:AHE和CLAHE;两者都是自适应的增强算法,功能差不多,但是前者有一个很大的缺陷,就是有时候会过度方法图像中相同区域的噪声问,为了解决这一问题,出现了HE的另一种改进算法,就是CLAHE;CLAHE是另外一种直方图均衡算法,能有效的增强或改善图像(局部)对比度,从而获取更多图像相关细节原创 2016-05-24 13:50:01 · 14783 阅读 · 0 评论 -
算法面试题(一)-- 统计学习与模式识别面试题
题目:答案解析:第一部分:1.统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,又称为统计机器学习;特点:以计算机为平台;以数据为对象;以方法为中心;以概率论、统计学、信息论以及最优化理论等为理论依托;目的是实现对数据的预测和分析;三要素:模型、策略、算法;2.3.特征选择:基于两个问题:1如何评价一组特征是否有效;2寻优算法原创 2016-06-21 12:46:58 · 4002 阅读 · 1 评论 -
卡尔曼(Kalman)滤波(四)--深入浅出Kalman滤波算法
Kalman滤波是一种递归过程,主要有两个更新过程:时间更新和观测更新,其中时间更新主要包括状态预测和协方差预测,主要是对系统的预测,而观测更新主要包括计算卡尔曼增益、状态更新和协方差更新,因此整个递归过程主要包括五个方面的计算:1)状态预测;2)协方差预测;3)卡尔曼增益;4)状态更新;5)协方差更新; 用数学公式表示,如下:状态预测: (1)其中,X(原创 2016-06-04 16:11:40 · 19474 阅读 · 0 评论 -
基于DL的计算机视觉(2)--实现图像分类最简单的方法:KNN
1. 图像分类问题这是人每天自然而然会做的事情,普通到大部分时候,我们都感知不到我们在完成一个个这样的任务。早晨起床洗漱,你要看看洗漱台一堆东西中哪个是杯子,哪个是你的牙刷;转载 2016-08-11 11:21:05 · 2754 阅读 · 0 评论 -
基于DL的计算机视觉(3)-- SVM和Softmax分类器
1. 线性分类器在深度学习与计算机视觉系列(2)我们提到了图像识别的问题,同时提出了一种简单的解决方法——KNN。然后我们也看到了KNN在解决这个问题的时候,虽然实现起来非转载 2016-08-11 11:23:19 · 1674 阅读 · 0 评论 -
基于DL的计算机视觉(4)-- SGD
1. 引言上一节深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器中提到两个对图像识别至关重要的概念:用于把原始像素信息映射到不同类别得分的得分函数/转载 2016-08-11 11:25:39 · 934 阅读 · 0 评论 -
利用OpenCV计算图像二维熵
直接上代码:void calc_2D_entropy(cv::Mat &input, cv::Mat &output){ int height = input.rows; int width = input.cols; cv::Mat out = cv::Mat::zeros(height, width, CV_32FC1); //tem...原创 2018-03-23 15:17:38 · 4004 阅读 · 5 评论 -
图片序列与视频之间的转换
视频转成图片序列图片序列转成视频调用测试视频的读取图片序列的读取视频转成图片序列//将视频转化问AVI格式 int VideoToImage(char* videoName, char* outDir, char* imgExt, int maxFrameCount) { VideoCapture cap(videoName); if (!ca原创 2017-04-27 14:03:03 · 1849 阅读 · 0 评论 -
OpenCV+Tesseract进行OCR学习(二)文字识别
OpenCV的Tesseract使用OpenCV的Tesseract使用Mac端的Tesseract使用iOS端的Tesseract使用Mac端的Tesseract使用Tesseract的安装 Mac上的Tesseract安装很方便,直接利用brew来安装:brew updatebrew install tesseract或者下载源码进行编译安装: Github地址Tesseract的使用原创 2016-09-18 16:57:27 · 14275 阅读 · 0 评论 -
OpenCV+Tesseract进行OCR学习(一)文字提取
使用Tesseract进行OCR学习(一)文字提取使用Tesseract进行OCR学习一文字提取OCR简介文字提取codeOCR简介熟悉OCR的人都了解,OCR大致分为两个部分:-文字提取text extractor -文字识别text recognition其中,第一部分是属于图像处理部分,涉及到图像分割的知识,而第二部分则大多数利用谷歌的Tesseract来进行字符的识别,设计到的东西不多原创 2016-09-18 16:14:22 · 25401 阅读 · 24 评论 -
基于DL的计算机视觉(8)-- 神经网络是如何训练的
1.训练在前一节当中我们讨论了神经网络静态的部分:包括神经网络结构、神经元类型、数据部分、损失函数部分等。这个部分我们集中讲讲动态的部分,主要是训练的事情,集中在实际工程实践训练过程中要注意的一些点,如何找到最合适的参数。1.1 关于梯度检验之前的博文我们提到过,我们需要比对数值梯度和解析法求得的梯度,实际工程中这个过程非常容易出错,下面提一些小技巧和注意点:使用中心化转载 2016-08-11 11:48:32 · 1045 阅读 · 0 评论 -
基于DL的计算机视觉(7)-- 数据的预处理、正则化
1. 引言上一节我们讲完了各种激励函数的优缺点和选择,以及网络的大小以及正则化对神经网络的影响。这一节我们讲一讲输入数据预处理、正则化以及损失函数设定的一些事情。2. 数据与网络的设定前一节提到前向计算涉及到的组件(主要是神经元)设定。神经网络结构和参数设定完毕之后,我们就得到得分函数/score function(忘记的同学们可以翻看一下之前的博文),总体说来,一个完整的神经转载 2016-08-11 11:34:29 · 1550 阅读 · 0 评论 -
基于DL的计算机视觉(6)-- 神经网络
1.神经元与含义大家都知道最开始深度学习与神经网络,是受人脑的神经元启发设计出来的。所以我们按照惯例也交代一下背景,从生物学的角度开始介绍,当然也是对神经网络研究的先驱们致一转载 2016-08-11 11:31:26 · 834 阅读 · 0 评论 -
基于DL的计算机视觉(5)--理解反向传播
1. 引言其实一开始要讲这部分内容,我是拒绝的,原因是我觉得有一种写高数课总结的感觉。而一般直观上理解反向传播算法就是求导的一个链式法则而已。但是偏偏理解这部分和其中的转载 2016-08-11 11:29:21 · 971 阅读 · 0 评论 -
Python计算机视觉Learning(二)-- Matplotlib类库
Matplotlib类库具有比PIL更强大的绘图功能,其中的PyLab接口包含了很多方便用户创建图像的函数。Matplotlib同样是个开源库,下载链接绘制图像,点和线from PIL import Imageform pylab import *#绘制图像#读取图像到数组img = array(Image.open('lena.jpg'))imshow(img)#绘制点原创 2016-07-26 14:19:56 · 484 阅读 · 0 评论 -
Python计算机视觉Learning(一)-- Python图像处理类库--PIL
1.简介PIL(Python Image Library)是一个Python库,它提供了通用的图像处理功能,以及大量有用的基本图像操作,如图像缩放、旋转等,该类库中最重要的模块为Image;PIL库是开源的,点击下载下载链接。2.基本图像操作2.1 图像读取from PIL import Imageimg = Image.open('xxx.jpg');PIL的open()函数可原创 2016-07-25 19:58:20 · 920 阅读 · 0 评论 -
图像处理与计算机视觉开源库汇总
转载自:http://blog.chinaunix.net/uid-24517893-id-3125166.html通用库/General LibraryOpenCV无需多言。RAVLRecognition And Vision Library. 线程安全。强大的IO机制。包含AAM。CImg很酷的一个图像处理转载 2016-05-27 09:21:33 · 1954 阅读 · 0 评论 -
P-N学习
本文翻译自Zdenek Kalal的论文Tracking-Learning-Detection ,PAMI 2010,其中还夹杂我自己的理解,如有错误,还望包涵。 另外,有关P-N学习的更详细知识,可参考Zdenek Kalal的论文PN-learning:Bootstrapping Binary Classifiers by Structural Constraints, Zde翻译 2016-05-25 18:28:52 · 3921 阅读 · 0 评论 -
BOFC、BOF与BOVW
根据名字,可以发现它一定跟BOF有关系,那么就先来说说BOF吧。BOF,Bag Of Features,特征词袋,简单来说就是一种基于SURF的标准视觉词袋(Bag Of Visual Words,简称BOVW或者BOW)技术,可以说在CBIR(Content-Based Image Retrieval)系统中,最流行的方法就是BOF了,由于其具有很好的compactness和rapidity。大原创 2016-04-18 14:23:41 · 3707 阅读 · 0 评论 -
霍夫Hough峰值检测的C++实现
直接上代码,代码里分析峰值检测的基本思想:void ls::houghPeaks(cv::Mat &H,int numpeaks,double thresh,const int *nhood_size,vector &r,vector &c) { bool done = false;//峰值检测布尔值 cv::Mat hnew = H.clone();/原创 2016-05-24 12:20:43 · 5019 阅读 · 1 评论 -
steered BRIEF
我们知道,BRIEF并不支持旋转,为了得到旋转的BRIEF描述子,我们该怎么解决呢?在BRIEF的那篇经典论文(ECCV2010)中,作者提出的方法是对每一个图像块做透视变换后的旋转点集计算BRIEF描述子,但是这种方法所花费的成本是巨大的,所以有人提出了一种更为有效可行的办法,就是根据点的方向来控制BRIEF的生成,叫做steered BRIEF。对于一个点(xi,yi)上由n个二值测原创 2016-05-09 11:59:53 · 2986 阅读 · 0 评论 -
图像匹配之感知哈希(pHash)算法的OpenCV实现
1.前言 目前“以图搜图”的引擎越来越多,可参考博文: http://blog.csdn.net/forthcriminson/article/details/8698175 此篇博文中列出了很多“以图搜图”的引擎,之前很好奇他们是如何进行检索的,偶然间看到了一篇博客,上面说Google和Tineye主要利用的算法是感知哈转载 2016-04-07 18:01:27 · 16505 阅读 · 2 评论 -
Sift与Surf的区别
surf是在sift的基础上改进而生,不仅提高了计算速度,而且更加安全鲁棒性,两者的实现原理很相似,对于两者的区别,也极大程度地体现在了他们的实现步骤上,为了更好地理解两者,可以结合实现方法来分析它们之间的不同。 1.构造图像金字塔尺度空间: sift:计算高斯差分图像(DoG),用于find特征点;金字塔图像中,由于同一个octave中,图像的大小(尺寸)一样但模糊程原创 2016-04-14 15:50:08 · 9712 阅读 · 0 评论 -
书籍切割之书脊边界直线检测算法小结(bookSpines Segmentation)
去年开始一直在做一个关于整理藏书的APP,有关于这方面的app目前国内的有一个‘晒书房’,但是没有用到图像处理的相关知识,只有一个扫ISBN码的入口,或者手动录入ISBN;国外有一个‘Shelfie’,不仅可以扫书码,而且可以直接对着书架拍照,进行识别,虽然速度有点慢,但是准确率还是不错的;所以我们期望做一个功能齐全且在速度上有所提升的这样一个书架app。 关于bookshelf的原创 2016-03-09 11:13:47 · 4846 阅读 · 9 评论 -
FAST
fast(features from accelerated segment test),如同它的名字一样,它的速度非常快,一般被用来检测角点,对于一些实时系统也是绝佳选择,例如并行跟踪。 与sift和surf不同,fast不具有方向性,由于fast特征缺少方向分量,但是计算主方向的方法也很多,像sift是利用梯度直方图,surf是利用haar小波的最大响应处的扇形patch方原创 2016-04-20 12:08:09 · 8771 阅读 · 0 评论 -
混合高斯模型GMM
1.简介 GMM(Gaussian Mixture-based Model)作为一种常见的而聚类算法,可以被用来分离场景中前景和背景的,或者叫做背景扣除,那么什么叫做背景扣除(Background Subtraction)呢?我们知道所谓的监控系统中,通常都是利用静态相机来捕捉场景的,因此其中比较具有挑战的一步就是如何检测出场景中的突然闯入者,传统的应用中都会假设场景中没有这样的原创 2016-05-04 16:15:30 · 9421 阅读 · 0 评论 -
运动跟踪算法CMT(续)之层次凝聚聚类算法(HAC)
熟悉CMT的都知道,作者在聚类部分使用了层次凝聚聚类算法(Hierarchical Agglomerative Clustering)并且使用的是单链(Single-link),今天我们就来学习下这个算法。 前面学习了几种聚类算法,K-Means,EM,AP等都属于平面聚类(Flat Clustering),因为这些算法的输出都是返回一个平面的无结构的聚类集合,所以叫做Flat c原创 2016-05-28 23:23:25 · 4763 阅读 · 0 评论 -
C++ 提取图像ROI保存到Mat
只要给定待提取ROI的四个角点坐标,利用OpenCV的透视变换计算出变换矩阵,就可以实现提取并保存到Mat;void ls::getROI(cv::Mat &src, float vertices[8],cv::Mat &dst) { float w2 = sqrt(pow(vertices[0] - vertices[2], 2) + pow(vertices[1]原创 2016-06-29 11:10:26 · 2237 阅读 · 0 评论 -
卡尔曼(Kalman)滤波(二)--Kalman滤波的发展历史与应用
1.如何诞生 滤波估计由最开始的最小二乘法,到后来的维纳滤波,再到Kalman滤波,一步步的发展演变使得滤波估计不断的在完善。 最小二乘法,作为最早的估计方法,由高斯于1795年在其《天体运动理论》一书中提出,当时这种估计方法并没有考虑参数的统计特性,所以算不上最优估计,但是因为其简单计算量少,所以仍然广受大家欢迎。 直到1912年,Fisher基于概率密原创 2016-06-04 14:01:04 · 9626 阅读 · 1 评论 -
卡尔曼(Kalman)滤波(一)--Kalman滤波的本质
1.Kalman滤波的简介 接触过信号处理的朋友应该清楚,信号在传输与检测过程中不可避免的受到外界干扰和来自设备内部的噪声影响,使得接收端的信号因此具有随机性,为了排除以上干扰,就需要滤波;所谓滤波,就是从混杂在一起的各种信号中提取自己想要的信号,滤波的方法因信号的性质不同而不同。对于确定性信号,根据其确定的频谱特性,设置相应频率特性的filter,比如LPF,HPF,BPF等,通原创 2016-06-04 12:46:03 · 7415 阅读 · 2 评论 -
ORB
众所周知,图像匹配中最关键的步骤是特征点的提取,因为特征点对的好坏直接影响着匹配的结果;熟悉CV的人也应该都知道特征点提取的算子有很多,本篇博客来学习下其中的一个——ORB算子。ORB,是基于FAST和rBRIEF(rotated BRIEF)的一种算子,所以叫做Oriented FAST and Rotated BRIEF,简称ORB。一、FASTfast一般被用来检测角点,计算量小原创 2016-05-09 18:21:09 · 2451 阅读 · 1 评论 -
运动跟踪之TLD(一)--TLD理论前瞻
跟踪-学习-检测(Tracking-Learning-Detection)1.引言 TLD是英国萨里大学的博士Zdenek Kalal提出的一种较传统跟踪不同的基于单一目标的跟踪框架,可以实现对未知目标有效的长效跟踪(long-term tracking),并且将这种长效跟踪任务分解为三个子任务:跟踪(tracking)、学习(learning)和检测(detection),原创 2016-06-01 16:15:14 · 1816 阅读 · 0 评论 -
BRIEF
1.BRIEF brief出现的略晚(ECCV 2010),但是在某些方面性能跟sift相似,如对光照,模糊和透视畸变的鲁棒性,但是缺点是不支持平面内的旋转。 brief的主要思想是在一个平滑的图像块内,对各像素之间进行二值测试;2.rBRIEF(rotated-aware BRIEF)3.steered BRIEF原创 2016-05-08 20:59:45 · 2380 阅读 · 0 评论 -
运动跟踪之CMT算法
CMT(Clustering of Static-Adaptive Correspondences for Deformable Object Tracking),是一套比较新的跟踪算法,诞生于2014年,原名叫Consensus-based Tracking and Matching of Keypoints for Object Tracking ,当时在计算机视觉应用(Applicati原创 2016-05-14 21:29:17 · 16225 阅读 · 34 评论