Mythsman


乐极生悲,苦尽甘来。


标签: Computer Vision


  1. 关于Ascii-Art的一些总结

    前言好久没写博客了,倒不是因为最近没在学习,而是觉得最近学得有点太多,一时无从下笔。知识这种东西真是奇怪,真的是懂得越多才知道自己懂得越少。虽然这个真相经常会给我一种无力感,但是我还是会沉浸在了解一件事情的来龙去脉的过程中。唔,看来学习也是会容易让人上瘾的。。。 不过最近在学习的过程中,我渐渐也明白了一点,那就是碎片化的学习效率那是惊人的低。我曾经十分推崇学习一个技术的时候,先上手,然后遇到一个问题就解决一个问题。但是后来慢慢发现,这样经常会导致我们花很多的时间去解决那些在这个领域里非常基本的问…

    Computer Vision, Ascii Art, Anecdote, Tools阅读全文

  2. Julia集的win32+GDI演示

    虽然不是第一次win32来写窗口程序,但是最近python和java用惯了,还真用不惯win api繁琐的调用方法,光是一个模版就好难理解。 事实上,那些模版的玩意写上去就好了,我们只要在他的消息循环的处理里添加绘图的函数即可。 至于绘图,我用的是GDI库最简单的用法,不加缓冲直接逐像素点打印。效率很低,而且会出现刷屏的现象。正确的做法应该是在内存中创建一张Image,向这个里面写再一次性输出。(这样弄效率高但是在网上找了半天没找到傻瓜式的代码模版。。。) 代码#include <wind…

    Computer Vision, C/C++, Julia阅读全文

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

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

    Computer Vision, Python, OpenCV阅读全文

  4. 用投影法矫正字符旋转

    这是段简单的代码,目的是处理旋转验证码的问题,主要思想就是通过将字符以45°到135°的角度投影下来,得到一系列的投影范围,然后得到这当中投影长度最小的一个角度。这个角度我们就可以简单的把他看成是字符的偏转角。然后用这个角度通过仿射变换得到矫正后的字符。 代码#coding=utf-8 import cv2,os,sys,Image,math import numpy as np from pylab import * %matplotlib inline def getBinary(path)…

    Computer Vision, Python, Machine Learning, MathJax阅读全文

  5. 利用Python在图片中添加文字

    使用OpenCV在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用自定义字体文件的函数,这不仅意味着我们不能使用自己的字体,而且意味着他无法显示中文字符。这还是非常要命的事情。而且他显示出来的文字位置也不太好控制。比如下面的代码,他想做的仅仅是显示数字3: 代码: #coding=utf-8 import cv2 import numpy as np from pylab import * %matplotlib inline font=cv2.FON…

    Python, Computer Vision阅读全文

  6. 图像处理的Gamma矫正

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

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

  7. 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表示只在y方向求…

    OpenCV, Python, Computer Vision阅读全文

  8. 直方图均衡化处理

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

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

  9. 自适应阈值分割的Bersen算法

    最近处理到游侠网的验证码,学习了一点东西,聊作记录。 游侠网的验证码总体来讲比较简单,字符分割比较清楚。稍微有难度的地方就是处理他的阴影。 ** 示例 ** 很明显,如果直接拿这种图去跑机器学习算法的话肯定准确率不高,必然需要进行灰度或者二值化。当然,二值化是比较好的选择。 但是由于灰度分布是不均匀的,如果采用类似OTSU的全局阈值显然会造成分割不准,而局部阈值分割的Bersen算法则非常适合处理这种情况。 OTSU算法得到的图像: import cv2 from pylab import *…

    MathJax, Computer Vision, Python阅读全文

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

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

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