努力工作,认真生活。


OpenCV


  1. 结合连通块平均分割以及投影矫正的验证码分割算法

    在上一节 中记录了基于投影的验证码矫正算法的实现。通过矫正,我们可以比较好的将倾斜的字符归一成较为规整的字符,接下来我们需要对矫正后的字符进行分割。简单的方法大概是投影法了,但是很明显,这样做的可靠性并不够。我们也可以找到整张图的最左端和最右端然后平均分割,但是在字符大小不一样的情况下效果也太好。还有个朴素的方法就是找连通块,但是由于存在字符粘连问题,连通块也不能完全区分字符。那么我这里就结合后两种方法,先进行连通块分割,对于能分割的字符直接进行后续处理,对于不能分割的字符再用平均分割的方法分割…

    Computer Vision, Python, OpenCV阅读全文

  2. OpenCV的扩展包opencv_contrib的安装

    近日想使用OpenCV里面的诸如SIFT、SURF之类的特征提取算法,结果突然发现OpenCV3.0.0这里并没有书上讲的关于SIFT的函数。查了半天才知道,原来有大量的函数并不在OpenCV的稳定发布版本里,而是在OpenCV_contrib这个扩展包里面。搞了半天才把这玩意搞定(自己傻),下面记录下安装的过程,方便日后的安装。 下载 opencv_contrib包独立于opencv的主体,发布在他的github上。直接在这里下载适合的版本即可。 安装 这个玩意的安装其实不难,照着…

    OpenCV, Linux阅读全文

  3. 图像处理的Gamma矫正

    Gamma矫正这个东西听上去挺玄乎,其实特别简单。就是为了调节照相机拍摄的图像的色调,使他更加符合人眼的观测效果(主要用在)。说白了就是一种幂函数型的色调曲线,即对于每个像素的灰度$I$我们把他变成$I^{gamma}$,当然,在这之前,我们得把灰度值$I$归一化到(0,1)的范围内。 这个gamma分为大于一和小于一的情况。当他大于一的时候,很明显这个幂函数在(0,1)的区间内是下凸的,图像会变暗;当他小于一的时候,这个幂函数在(0,1)的区间内是上凸的,图像会变亮。通常认为人眼的gamma…

    OpenCV, Python, Computer Vision, MathJax阅读全文

  4. OpenCV计算图像的梯度特征

    计算图像的梯度是在进行图像处理时经常用到的方法,但是这玩意自己手写未免效率低而且容易出错。OpenCV里集成了相应的函数,只不过用的人好像并不多导致我找了半天才找到。姑且记一下以备日后使用。 计算像素梯度的绝对值 这个用到了cv2.magnitude方法,具体用法如下: sobelx=cv2.Sobel(im,cv2.CV_64F,1,0,ksize=3)#1,0表示只在x方向求一阶导数 sobely=cv2.Sobel(im,cv2.CV_64F,0,1,ksize=3)#0,1表示只…

    OpenCV, Python, Computer Vision阅读全文

  5. 直方图均衡化处理

    直方图均衡化方法属于图像增强的范畴,是一种对图像进行灰度级修正的方法。简而言之,就是对一个灰度图像进行处理,使他的特征更加明显。通常情况下,在对图像进行进一步的处理之前,直方图均衡化是一种对灰度进行归一化处理的好方法,而且也可以增强图像的对比度。 概述 这个方法的思路非常简单,就是我们把一个灰度图像以0-255个灰度值为横坐标,灰度对应的像素点的个数为纵坐标,构成一个灰度直方图。对于那些灰度分布非常不均衡的图像来说,我们要做的就是通过对灰度值进行一个映射,将他灰度直方图尽可能的拉伸。通常情…

    Computer Vision, Python, MathJax, OpenCV阅读全文

  6. 图像匹配中Harris角点特征提取

    在进行图像检测或者是识别的时候,我们需要提取出一些有特征的点加以识别,最常用的就是基于点的识别。这里所谓的点,其实就是一些重要的点,比如轮廓的拐角,线段的末端等。这些特征比较容易识别,而且不容易受到光照等环境的影响,因此在许多的特征匹配算法中十分常见。 常见的特征点提取算法有Harris算 子(改进后的Shi-Tomasi算法)、Moravec算子、Forstner算子、小波变换算子等。现在就先介绍一下最常用的Harris角点检测算法。 简介 Harris算法的思想很简单,也很容易理解。…

    OpenCV, Python, Computer Vision, MathJax阅读全文

  7. 二值形态学之开运算和闭运算

    开闭运算是二值形态学的重要部分,是对腐蚀和膨胀算法的扩展应用,在图像的去噪方面也是十分的常用。 二值开运算 定义 用结构元素B(即模板核)对图像A进行开运算,可以用符号$A\circ B$来表示,其定义式为: $A\circ B=(A\Theta B)\bigoplus B$ 所以开运算实际上就是A先被B腐蚀,再被B膨胀。 作用 很明显,开运算可以消除一些很小的背景噪点(椒盐噪声),平滑较大物体的边界而不明显改变其体积。也会磨光矩形的内边缘,以及分离一些粘连目标。 (这里所…

    Python, MathJax, Computer Vision, OpenCV阅读全文

  8. 二值形态学之击中击不中变换

    击中击不中变换(Hit Miss Transform ,HMT),是通过同时探测图像的内部和外部,进而获取更多的内外标记,体现更多信息的一个方法。他的应用有很多,特别是在图像识别以及图像细化方面。 定义 既然既要有击中也要有击不中,那么显然我们需要两个结构基元E和F,我们把这两个结构基元记为一个结构元素对$B=(E,F$。其中一个用来探测图像内部,一个用来探测图像外部。 对于给定的图像A,我们定义用B对他进行的击中击不中变换为 $A*B=(A\Theta E)\bigcap (A^c\…

    Python, Computer Vision, MathJax, OpenCV阅读全文

  9. 二值形态学之腐蚀与膨胀

    数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。 这是我们在进行图像处理时十分常见的算法工具,在实际中有着非常广泛的应用。 下面就先介绍下二值形态学中的两个重要操作--腐蚀与膨胀。 二值腐蚀 简述 所谓二值腐…

    Python, MathJax, Computer Vision, OpenCV阅读全文

  10. Ubuntu下OpenCV安装使用简述

    简述 Opencv就不解释了,是个很有名的图形库。不仅在进行软件开发的过程中需要用到,而且他也是很多开源软件的运行依赖,所以安装一个Opencv就很有必要了,即使自己本身并不想学习使用。 安装 以下主要是从百度上找到的可用方法: 安装运行依赖 $ sudo apt-get install libqt4-dev libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config\ python-dev python-num…

    OpenCV, Linux, Computer Vision阅读全文