代码改变世界

机器学习:计算机学习西洋跳棋

2014-01-08 16:16 by ☆Ronny丶, 3828 阅读, 0 推荐, 收藏, 编辑
摘要:机器学习 通过让程序分析人们购物清单,来分析人们对商品的品牌、价格的偏好。 通过跟踪个人的新闻浏览,分析其兴趣爱好、并为其推荐感觉兴趣的新闻或产品。 通过对已知的手写字符的分析,能够让计算机程序自动的认出手写字符。 … 以上这些都是机器学习的例子,在今天,机器学习已经不知不觉的进入到人们的生活,也许你为奇怪为什么网页上的广告都是显示你最在在淘宝或京东上最近购买的商品。最终你会发现,你使用的软件,你操作的系统,变得越来越智能。 阅读全文

OpenCV成长之路(10):视频的处理

2014-01-04 15:37 by ☆Ronny丶, 27251 阅读, 4 推荐, 收藏, 编辑
摘要:视频中包含的信息量要远远大于图片,对视频的处理分析也越来越成为计算机视觉的主流,而本质上视频是由一帧帧的图像组成,所以视频处理最终还是要归结于图像处理,但在视频处理中,有更多的时间维的信息可以利用。本文主要介绍OpenCV在处理视频时的一些基本函数。 一、视频帧的读取 OpenCV为视频的读入提供了一个类VideoCapture,下面我们说明一下类的几个重要的方法: 阅读全文

OpenCV成长之路(9):特征点检测与图像匹配

2014-01-03 17:56 by ☆Ronny丶, 37102 阅读, 6 推荐, 收藏, 编辑
摘要:特征点又称兴趣点、关键点,它是在图像中突出且具有代表意义的一些点,通过这些点我们可以用来识别图像、进行图像配准、进行3D重建等。本文主要介绍OpenCV中几种定位与表示关键点的函数。一、Harris角点角点是图像中最基本的一种关键点,它是由图像中一些几何结构的关节点构成,很多都是线条之间产生的交点。... 阅读全文

OpenCV成长之路(8):直线、轮廓的提取与描述

2014-01-02 21:21 by ☆Ronny丶, 41495 阅读, 6 推荐, 收藏, 编辑
摘要:基于内容的图像分析的重点是提取出图像中具有代表性的特征,而线条、轮廓、块往往是最能体现特征的几个元素,这篇文章就针对于这几个重要的图像特征,研究它们在OpenCV中的用法,以及做一些简单的基础应用。 一、Canny检测轮廓 在上一篇文章中有提到sobel边缘检测,并重写了soble的C++代码让其与matlab中算法效果一致,而soble边缘检测是基于单一阈值的,我们不能兼顾到低阈值的丰富边缘和高阈值时的边缘缺失这两个问题。而canny算子则很好的弥补了这一不足,从目前看来,canny边缘检测在做图像轮廓提取方面是最优秀的边缘检测算法。 canny边缘检测采用双阈值值法,高阈值用来检测图像中重要的、显著的线条、轮廓等,而低阈值用来保证不丢失细节部分,低阈值检测出来的边缘更丰富,但是很多边缘并不是我们关心的。最后采用一种查找算法,将低阈值中与高阈值的边缘有重叠的线条保留,其他的线条都删除。 阅读全文

OpenCV成长之路(7):图像滤波

2013-12-31 10:13 by ☆Ronny丶, 12532 阅读, 4 推荐, 收藏, 编辑
摘要:滤波实际上是信号处理里的一个概念,而图像本身也可以看成是一个二维的信号。其中像素点灰度值的高低代表信号的强弱。 高频:图像中灰度变化剧烈的点。 低频:图像中平坦的,灰度变化不大的点。 根据图像的高频与低频的特征,我们可以设计相应的高通与低通滤波器,高通滤波可以检测图像中尖锐、变化明显的地方;低通滤波可以让图像变得光滑,滤除图像中的噪声。 下面我们来看一下OpenCV中的一些滤波函数: 阅读全文

OpenCV成长之路(6):数学形态学基本操作及其应用

2013-12-26 15:23 by ☆Ronny丶, 6615 阅读, 1 推荐, 收藏, 编辑
摘要:数学形态学实际上可以理解为一种滤波行为,所以很多地方称它为形态学滤波。有了个这概念,我们就能更好的理解它。我们滤波中用的滤波器(kernel)在这里被称为结构元素,结构元素往往是由一个特殊的形状构成,如:线条、矩形、圆、菱形等。我们把结构元素的中心(Anchor Point)与图像上像素点对齐,然后结构元素覆盖的领域像素就是我们要分析的像素,我们定义一种操作就形成了一种形态学运算。 我们在这里不解释形态学操作的算法原理及它们的意义,有兴趣的可以参见相关数字图像处理方面的教材,或关注本博客,博主打算在OpenCV系列写完后,开始写图像处理方面算法系列的文章。 阅读全文

OpenCV成长之路(5):图像直方图的应用

2013-12-24 14:40 by ☆Ronny丶, 6952 阅读, 1 推荐, 收藏, 编辑
摘要:正如第4篇文章所说的图像直方图在特征提取方面有着很重要的作用,本文将举两个实际工程中非常实用的例子来说明图像直方图的应用。 一、直方图的反向映射。 我们以人脸检测举例,在人脸检测中,我们第一步往往需要先提取图像中皮肤区域来缩小人脸的检测范围,这一般获得皮肤的颜色范围还需要定义阈值并不断的调整,实际中参数太多而不容易控制。 这里我们就可以考虑用直方图的反射映射。 1,收集人脸皮肤样本。 2,拼合样本并计算其颜色直方图。 3,将得到的样本颜色直方图反射映射到待检测的图片中,然后进行阈值化即可。 这里为了简单起见,我们只用两张人脸样本,实际中可以进一步扩展。 阅读全文

OpenCV成长之路(4):图像直方图

2013-12-23 16:44 by ☆Ronny丶, 15919 阅读, 4 推荐, 收藏, 编辑
摘要:一、图像直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。 图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。在实际工程中,图像直方图在特征提取、图像匹配等方面都有很好的应用。 阅读全文

OpenCV成长之路(3):模仿PhotoShop中魔术棒工具

2013-12-20 11:17 by ☆Ronny丶, 7041 阅读, 3 推荐, 收藏, 编辑
摘要:本文的主题实际上是图像的颜色空间的转换,借助一个颜色选取程序来说明OpenCV中颜色转换函数的用法以及一些注意事项。 一、几种常见的颜色空间: RGB颜色空间:RGB采用加法混色法,因为它是描述各种“光”通过何种比例来产生颜色。光线从暗黑开始不断叠加 产生颜色。RGB描述的是红绿蓝三色光的数值。数字图像存储方面一般都是用RGB模式,值得注意的是OpenCV里三通道的存储顺序是BGR。 HSV,HSI:这两个颜色格式都是根据人眼对颜色的区分来定义的格式,其中H(hue)表示色相,S(saturation)表示饱和度,V(value)表示明度,I(intensity)代表了亮度。 Lab空间:模型中均匀改变对应于在感知颜色中的均匀改变,所以我们可以把Lab想像为颜色空间中的一个点,相邻的点靠的越近说明两者的颜色越接近,所以Lab空间常用来度量两个颜色的相似性。 更多颜色空间的知识可以参考:http://en.wikipedia.org/wiki/Color_space 阅读全文

OpenCV成长之路(2):图像的遍历

2013-12-19 14:49 by ☆Ronny丶, 37767 阅读, 7 推荐, 收藏, 编辑
摘要:我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题。 一、遍历图像的4种方式:at(i,j) Mat类提供了一个at的方法用于取得图像上的点,它是一个模板函数,可以取到任何类型的图像上的点。下面我们通过一个图像处理中的实际来说明它的用法。 在实际应用中,我们很多时候需要对图像降色彩,因为256*256*256实在太多了,在图像颜色聚类或彩色直方图时,我们需要用一些代表性的颜色代替丰富的色彩空间,我们的思路是将每个通道的256种颜色用64种代替,即将原来256种颜色划分64个颜色段,每个颜色段取中间的颜色值作为代表色。 阅读全文