努力工作,认真生活。


Computer Vision


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

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

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

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

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

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

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

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

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

  4. 阈值分割的OTSU算法

    OTSU算法又叫最大类间方差阈值分割算法,也叫大津算法,是在1980年由日本的大津展之提出,是由最小二乘法推导而来,用于一些简单的阈值确定。 对于一个灰度图,我们有时候非常想把他用一个阈值将他的前景和背景区分开来。我们可以合理的假设为如果将图像的像素分布图画出来,那么图像上应该有两个峰,即前景色和背景色。在这两个峰之间肯定有一个谷,那么我们就可以将阈值设在这里,从而对图像达到一个良好的分割效果。 怎样确定这个阈值呢?OTSU算法说,我们可以求出用这个阈值分割后的两个图像的类间方差。对于每一个…

    Python, Computer Vision, MathJax阅读全文

  5. 用Python进行边缘检测

    边缘检测在图像的检测中是经常会用到的。图片的边缘会包含大量的信息,因此在图像的分割、识别、分析中通常可以取边缘作为图像特征。边缘检测最经典的应用就是图像的锐化了,想必大家都用过。 为了进行边缘检测,我们通常会用到以下的一些算子,即一阶算子(梯度算子)和二阶算子(拉普拉斯算子)。 拉普拉斯算子(Laplacian Operator) 拉普拉斯算子其实就是二阶微分算子,具有各向同性。他也会增强噪声,因此在使用拉普拉斯算子之前需要进行平滑处理。他的主要用处其实是判断一个像素是处于图像的亮区还是…

    Python, Computer Vision, MathJax阅读全文

  6. 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阅读全文

  7. 自制正方软件系统验证码的识别程序(4/4)

    效果 最后总的效果还是不错的,从测试集上面看,单个字符的识别准确率平均能达到90%左右,最好的时候达到过93%。我想这也差不多达到了优化的极限了,毕竟在图片样子不标准,位置更不标准。而且仅仅在截取子图这一步上就会与实际情况有些出入,况且一些细微的差别就算是人脑也容易出错,比如1和7、i和j等等。加上我使用整个数据集的量不算大,满打满算也就500张图,所以能进行33个字符的识别已经挺不错的了。官网上60000张图的数据集的学习也差不多达到了93%而已。 总结 代码就是这样了,不算多,也就小…

    Computer Vision, Machine Learning阅读全文

  8. 自制正方软件系统验证码的识别程序(3/4)

    util.py 这个文件里主要提供了5个函数,提供给package.py使用,特别是对特征值的计算。 import Image,os,ImageFilter import numpy as np table1=[] table2=[] threshold1=18 for i in range(256): if i<threshold1: table1.append(0) else: table1.append(1) threshold2=240 for i in range…

    Machine Learning, Computer Vision, Python阅读全文

  9. 自制正方软件系统验证码的识别程序(2/4)

    文件组成 为了实现训练以及识别的过程,我总共设计了6个文件,作用如下: 文件作用split.py用于将验证码中四个小字符分割出来,并分类保存。util.py用于保存一些常用的函数logistic_sgd.py这是官网上的样例代码,实现了softmax的分类算法,当然还要进行下修改package.py这个用来将图像数据进行处理并打包压缩成为方便使用的数据集train.py这是开始训练的接口check.py这是利用训练结果进行识别的接口 还有两个文件夹: 文件夹作用recognized/用于…

    Machine Learning, Computer Vision, Python阅读全文

  10. 自制正方软件系统验证码的识别程序(1/4)

    学了几天机器学习的原理,感觉还是要自己动手写一个像样的程序才行。正好刚研究过deeplearning.net上的那个识别mnist数据库的源码,于是打算利用一下写一个识别验证码的程序。 他提供的代码已经基本实现了利用Logistic Regression 来分类,用的是softmax算法,支持多元分类。然而他只能读入指定的mnist数据集的经过处理后的格式。因此我当前的任务就是将一张实实在在的图片转换成计算机可以识别的格式,并且进行好预处理,选择好特征值,而不用考虑机器学习代码的细节(这个的确…

    Machine Learning, Computer Vision阅读全文