随笔分类 -  图像处理算法

二维矩形装箱问题
摘要:装箱问题,是个NP问题。至于装箱问题到底是个什么东西,可以看看百度文档http://wenku.baidu.com/view/f6e7f80590c69ec3d5bb755f.html。其实我没看。 研究二维矩形装箱问题,是因为需要将小图拼成大图,作为一个大的texture加载到内存内,从而实现减少 阅读全文
posted @ 2014-09-01 12:18 Ming明、 阅读(17563) 评论(7) 推荐(3) 编辑
[转]k-d tree算法的研究
摘要:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://underthehood.blog.51cto.com/2531780/687160By RaySaint 2011/10/12动机先前写了一篇文章《SIFT算法研究》讲了讲SIFT特征具体是如何检测和描述的,其中也提到了SIFT常见的一个用途就是物体识别,物体识别的过程如下图所示:如上图(a),我们先对待识别的物体的图像进行SIFT特征点的检测和特征点的描述,然后得到了SIFT特征点集合。接下来生成物体目标描述要做的就是对特征点集合进行数据组织,形成一种特殊的表示,其作用是为 阅读全文
posted @ 2012-06-02 14:50 Ming明、 阅读(1522) 评论(0) 推荐(0) 编辑
在windows下编译d-nets
摘要:编译步骤:1 首先,到opencv官方网站下载opencv源码,此处我们下载的opencv2.3.1版本的opencv-2.3.1-win-superpack.exe。2 解压之后,就会得到一个文件夹(D:\Program Files\OpenCV2.3.1),因此这个exe文件不是可执行文件而只是压缩文件而已。3 如果安装了cmake就好办了,如果没有按照cmake,那么还需要下载及安装cmake文件。4 下载安装了cmake之后,运行cmake-gui,设置where is the source code路径为OpenCV安装路径(本文档假定安装位置为:D:\Program Files\O 阅读全文
posted @ 2012-05-27 21:16 Ming明、 阅读(664) 评论(6) 推荐(0) 编辑
HOG(Histograms of Oriented Gradients )梯度方向直方图
摘要:方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。此方法使用了图像的本身的梯度方向特征,类似于边缘方向直方图方法,SIFT描述子,和上下文形状方法,但其特征在于其在一个网格密集的大小统一的方格单元上 阅读全文
posted @ 2012-04-25 16:34 Ming明、 阅读(7780) 评论(1) 推荐(0) 编辑
图像旋转后的还原图像坐标
摘要:需求:对每个新图像中的像素进行遍历。计算像素点在原图像中对应的位置。由于在求边界时,假定图像进行顺时针旋转,因此此处进行反推新像素位置在原图像中的对应位置时,需要用逆时针计算。顺时针计算方法是:X = xcos(theta) + y sin(theta)Y = y cos(theta) – x sin(theta)逆时针计算方法是:X= x cos(theta) – ysin(theta)Y = xsin(theta) + ycos(theta)。而图像的坐标轴与平常所用的坐标轴不同。也就是说,图像的旋转顺时针和逆时针的坐标变换公式与常见坐标的变换公式相反:逆时针计算方法是:X = xcos( 阅读全文
posted @ 2012-03-30 21:25 Ming明、 阅读(4279) 评论(0) 推荐(0) 编辑
【转】图像变换——计算机视觉图像处理
摘要:尽管在上篇文章中有了原文的链接,但是吸取以往的经验教训,还是全部拿来主义比较好,担心哪天原文链接就不能查看了,那岂不是让人心痛的碎了一地梨花一、仿射变换 仿射变换的性质:平面上任意两条直线,经仿射变换后,仍然保持平行。仿射变换的功能,是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”(straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(parallelness,其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变)。仿射变换可以通过一系列的原子变换的复合来实现,包括:平移(Translation)、缩放(Scale)、翻转( 阅读全文
posted @ 2012-03-22 10:51 Ming明、 阅读(2223) 评论(0) 推荐(0) 编辑
图像仿射变换之旋转变换
摘要:需要对图像进行旋转变换,以为利用opencv会很简单,只需要调用cvGetQuadrangleSubPix函数或者cvWarpAffine函数即可。但是,经过实验发现:牛逼的人都是相似的,苦逼的人各有各的苦逼!!!!实验过程如下:首先从网上找了奔跑的兔子的程序,原文:opencv 任意角度旋转图像首先利用文章中的方法一进行实验,可惜程序报错,原来cvGetQuadrangleSubPix已不支持5个参数,变成了3个参数,也就是说插值方法和插值像素值都不再是你我能控制的了的了。其代码为:View Code int main(){ IplImage *src,*dst, *img_tmp; ... 阅读全文
posted @ 2012-03-21 22:35 Ming明、 阅读(8883) 评论(1) 推荐(3) 编辑
【转载】SURF算法源码分析(草稿)
摘要:原文:http://blog.sina.com.cn/s/blog_916b71bb0100vnxl.htmlSURF是继SIFT之后很有影响力的算法。从作者论文的实验上看,速度比SIFT提高了5~10倍,准确度有几个百分点的提升。SURF算法的速度提升极其明显,个人认为这个是最大的卖点。速度提升的关键,就是使用了积分图。积分图是个好东西,最成熟的Haar特征人脸检测算法也是使用积分图。OpenCV 1.1提供了SURF算法的实现,性能固然不错,只是实现的不太容易看懂。在开发工作中有个原则,就是不要写太复杂的代码,否则调试起来很麻烦。在这里,我选择的是OpenSURF实现,它的结构清晰,也是基 阅读全文
posted @ 2011-11-29 11:33 Ming明、 阅读(4373) 评论(1) 推荐(2) 编辑
【转】OpenCV HOGDescriptor 参数图解 .
摘要:原文请看:OpenCV HOGDescriptor 参数图解最近要做图像特征提取,可能要用下HOG特征,所以研究了下OpenCV的HOG描述子。OpenCV中的HOG特征提取功能使用了HOGDescriptor这个类来进行封装,其中也有现成的行人检测的接口。然而,无论是OpenCV官方说明文档还是各个中英文网站目前都没有这个类的使用说明,所以在这里把研究的部分心得分享一下。 首先我们进入HOGDescriptor所在的头文件,看看它的构造函数需要哪些参数。View Code CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,... 阅读全文
posted @ 2011-11-14 12:20 Ming明、 阅读(1888) 评论(0) 推荐(0) 编辑
图像的膨胀与腐蚀、细化
摘要:原理:在特殊领域运算形式——结构元素(Sturcture Element),在每个像素位置上与二值图像对应的区域进行特定的逻辑运算。运算结构是输出图像的相应像素。运算效果取决于结构元素大小内容以及逻辑运算性质。结构元素:膨胀和腐蚀操作的最基本组成部分,用于测试输出图像,通常要比待处理的图像小还很多。二维平面结构元素由一个数值为0或1的矩阵组成。结构元素的原点指定了图像中需要处理的像素范围,结构元素中数值为1的点决定结构元素的邻域像素在进行膨胀或腐蚀操作时是否需要参与计算。先来定义一些基本符号和关系。1. 元素设有一幅图象X,若点a在X的区域以内,则称a为X的元素,记作a∈X,如图6.1所示。2 阅读全文
posted @ 2011-10-16 11:05 Ming明、 阅读(49356) 评论(17) 推荐(11) 编辑
【转】数字图像处理中的形态学
摘要:原文请看:数字图像处理中的形态学数字图像处理中的形态学(摘自某文献,因为贴图的数目有限制,后面的公式图片没有能够上,电脑重装后文档已经找不到了,囧)一 引言 数学形态学是一门建立在集论基础上的学科,是几何形态学分析和描述的有力工具。数学形态学的历史可回溯到19世纪。1964年法国的Matheron和Serra在积分几何的研究成果上,将数学形态学引入图像处理领域,并研制了基于数学形态学的图像处理系统。1982年出版的专著《Image Analysis and Mathematical Morphology》是数学形态学发展的重要里程碑,表明数学形态学在理论上趋于完备及应用上不断深入。数学形态学蓬 阅读全文
posted @ 2011-10-16 10:28 Ming明、 阅读(2935) 评论(0) 推荐(0) 编辑
OpenCV_轮廓的查找、表达、绘制、特性及匹配
摘要:虽然Canny之类的边缘检测算法可以根据像素间的差异检测出轮廓边界的像素,但是它并没有将轮廓作为一个整体。下一步是要将这些边缘像素组装成轮廓。轮廓是构成任何一个形状的边界或外形线。直方图对比和模板匹配根据色彩及色彩的分布来进行匹配,以下包括:轮廓的查找、表达方式、组织方式、绘制、特性、匹配。首先回忆下几个结构体:首先是图像本身的结构体:typedef struct CvMat{int type; /* CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类型和标记 */int step; /* 以字节为单位的行数据长度*/int* refcount; /* 数据引用计数 */unio 阅读全文
posted @ 2011-10-14 14:49 Ming明、 阅读(52377) 评论(3) 推荐(7) 编辑
OpenCV_颜色直方图的计算、显示、处理、对比及反向投影
摘要:首先介绍一下直方图一.用带权重的样本统计直方图直方图Histogram,是一种常见的概率分布的非参数(区别于高斯分布,泊松分布等用参数表达概率密度的方法)表达方法。直方图可以看成概率密度分布的离散化表达方法。它的计算很简单,是一种投票的方法,就是每个样本往对应的小盒子(bin)里投一票。假设N个样本数据x量化为1~M之间的整数,那么Hist是M维数组,对应的直方图计算方法如下://initializingfor i=1:M Hist[i] = 0;end//votingfor i = 1:N Hist[x[i]] += 1 ;end为了表示成概率分布,需要Hist数组和为1://normali 阅读全文
posted @ 2011-10-13 20:02 Ming明、 阅读(24241) 评论(5) 推荐(5) 编辑
OpenCV_轮廓例子
摘要:滑动条用于设置阈值,然后对采二值化后的图像提取轮廓并绘制轮廓。当控制参数的滑动条变化时,图像被更新。View Code 1 //首先将图像g_image转换为灰度图像。接着用g_thresh为参数进行二值化处理,得到的二值图像保存在g_gray中。 2 //cvFindContours从二值图像g_gray查找轮廓,然后将得到的轮廓用cvDrawContours函数绘制为白色得到灰度图像。 3 //最终图像在窗口中显示处理。并将在回调函数开始处申请的结构释放。 4 5 IplImage* g_image=NULL; 6 IplImage* g_gray=NULL; 7 8 int g_t... 阅读全文
posted @ 2011-10-12 19:17 Ming明、 阅读(8491) 评论(0) 推荐(2) 编辑
OpenCV__Canny边缘检测和缩放(译)
摘要:View Code 1 // opencvdemo.cpp : Defines the entry point for the console application. 2 // 3 #include "stdafx.h" 4 5 #ifdef _CH_ 6 #pragma package <opencv> 7 #endif 8 9 #ifndef _EiC10 #include "cv.h"11 #include "highgui.h"12 #endif13 14 IplImage * in;15 16 //缩放函数17 阅读全文
posted @ 2011-09-29 10:30 Ming明、 阅读(874) 评论(0) 推荐(0) 编辑
Canny边缘检测源码与图像结果(OpenCV2.0)
摘要:View Code 1 #include "stdafx.h" 2 #include "cv.h" 3 #include "cxcore.h" 4 #include "highgui.h" 5 #ifdef _CH_ 6 #pragma package <opencv> 7 #endif 8 #ifndef _EiC 9 #include "cv.h"10 #include "highgui.h"11 #endif12 char wndname[] = " 阅读全文
posted @ 2011-09-29 10:01 Ming明、 阅读(1776) 评论(0) 推荐(0) 编辑