随笔分类 - Computer Vision
Introduction to the basic algorithm used in computer vision.
摘要:VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://homes.cs.washington.edu/~ccwu/vsfm/。本人在Windows 7 64 位系统下进行了测试,测试中遇到的问题汇总如下:1. 关于GPU。A卡测试未成功,N卡可以顺利运行。2. 关于CMVS/PMVS。开始使用时,未注意安装文档(http://homes.cs.washington.edu/~ccwu/vsfm/install.html)中的说明,需要将CMVS/PMVS的可执行文件拷贝到VisualSf
阅读全文
摘要:1、3D驱动原理与GL_STEREO 如果要让3D显示卡提供立体显示,则必须有两方面的技术:一是立体驱动,二是3D液晶快门。其中,立体驱动为显示驱动部份,能将Direct 3D(或OpenGL)相容的应用软件,由平面显示即时转化为立体显示,从表面上我们所看到的现象,就是普通显示变成了双影显示,这样双影显示就包含了左右眼各自的图象显示与显示器上;3D液晶快门则是一种高速的电子液晶快门,可根据显示立体驱动发出的信号同步调整开关,达到分离显示器上显示的左右眼图像,即时的送给左右眼睛,这样,我们所看到的显示器的双影显示就会变成立体显示。当然,这双影图像必须有在一定的角度上的偏差,而角度通过预设值来调整
阅读全文
摘要:实际上OpenGL画透明是使用的混合的技术,原理比较复杂,但使用起来还是相当简单的。如下面这样写就可以了。 glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_DEPTH_TEST); // 此处需要禁止深度测试// 画要透明的图形 ........ glDisable(GL_BLEND); trackback:www.cnblogs.com/JohnShao/admin/EditPosts.aspx?opt=1
阅读全文
摘要:一.第一次尝试结果: 我将源码目录建为src,编译目录建为build. 然后在src下建立main,用于放main相关的文件,再在src下建立lib1,用于放一个小库。 Magic Happens like this: (1)main和lib1中的CMakeLists.txt,只需要写上和Build Target相关的command。这里是ADD_LIBRARY()或ADD_EXECUTABLE(),另外因为main要链接lib1库,所以要添加Build Flags(Options)相关的:TARGET_LINK_LIBRARIES()。 (2)然后在main和lib1的同级目录,即src下,
阅读全文
摘要:1.首先在终端运行下列命令进行必要的编译环境安装。sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev2.下载相应的版本到电脑里面,这里我们以下载OpenCV-2.3.1为例。cd 命令进入相应的下载目录。依次运行下列命令1tarxfOpenCV-2.3.1.tar.bz22cdOpenCV-2.3.13.终端运行1mkdirbuild2cdbuild3cmake
阅读全文
摘要:Color is the perceptual characteristic of light described by a color name. Specifically, color is light, and light is composed of many colors—those we see are the colors of the visual spectrum: red, orange, yellow, green, blue, and violet. Objects absorb certain wavelengths and reflect others back t
阅读全文
摘要:编译OpenCV2.3.0时,用VS2008打开D:\Program Files\OpenCV2.0\vc2008目录下生成OpenCV.sln在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution",编译无误。再选择INSTALL项目,运行"Build",报错,“CMake Error at cmake_install.cmake:119 (FILE):file INSTALL cannot find "D:/Program Files/OpenCV-2.3.
阅读全文
摘要:OpenCV形态学操作一、图像腐蚀 膨胀 细化的基本原理1.图像细化的基本原理⑴ 图像形态学处理的概念数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素。假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在
阅读全文
摘要:8种排序算法,各算法名称见下表或见源码。运行程序时,将需要你输入一数值,以确定对多少随机数进行排序。然后将会显示各排序算法的耗时。并且你可选择时否进行正序和反序测试。由于水平有限,可能存在一些错误,还请各位多多指点!通过实验我们可将结果列入下表。以下是VC6.0(Release)+win2000pro+128MDDR+P4(1.6G)因为在多任务操作系统下,系统将进行进程序调度,影响实验结果。以下是经过稍微修正过的值。如果要取得更准确的值,我们得多次实验求其平均值。排序算法实验比较(单位:秒)n方法1K10K100K200K100K正序逆序冒泡排序00.42244.790188.462031.
阅读全文
摘要:高斯窗常用于对图像进行模糊或低通滤噪,但是随着高斯半径的增加,时间消耗会逐级增加如高斯半径为N时,计算每个输出采样点需要计算的乘法次数为(2N+1)*模糊方向数,加法次数为2N*模糊方向数,这种情况下,当N=100时,甚至更大时,计算量是非常大的,即使进行SIMD指令集优化,在很多情况下仍然不能满足要求,比如N=100时,优化后的汇编代码的执行时间也通常在几百毫秒以上,远不能达到实时处理要求上述的方法是使用高斯窗口对准的原理进行实现的,属于FIR型滤波,因为对于半径大于N的像素点,其权重取为0,即对当前点无贡献,然而在实际中我们知道,即使在3倍标准差外的像素也应该对中心点有贡献的,虽然很小基于
阅读全文
摘要:1。关于傅里叶变换变换?(来自百度知道)答:fourier变换是将连续的时间域信号转变到频率域;它可以说是laplace变换的特例,laplace变换是fourier变换的推广,存在条件比fourier变换要宽,是将连续的时间域信号变换到复频率域(整个复平面,而fourier变换此时可看成仅在jΩ轴);z变换则是连续信号经过理想采样之后的离散信号的laplace变换,再令z=e^sT时的变换结果(T为采样周期),所对应的域为数字复频率域,此时数字频率ω=ΩT。 ——参考郑君里的《信号与系统》。傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形
阅读全文
摘要:两个函数的卷积是一个非常有意义的物理概念,在谐波分析和图象处理等许多科学领域都有重要应用。在FFT出现之前,关于卷积的计算,与DFT一样,忍受着沉重的计算负担。为此,本节将讨论卷积以及利用FFT对离散卷积的计算问题。§4.1卷积假设x(t)和h(t)是定义在实轴上的实值或复值函数,则x(t)与h(t)的卷积简记为x(t)*h(t),且由以下积分确定 (56)这里的运算符“*”是一个抽象的数学符号。利用变量代换,不难发现“*”是可交换的,即x(t)*h(t)=h(t)*x(t)(57)因为卷积的原理特别不易想象,让我们用图6作一简单解释。 图6中(a)和(b)分别给出了函数x(t)和h
阅读全文
摘要:对于图像中的某一像素点 P(x, y), 在我们正常的坐标系中,x代表其横坐标,y代表其纵坐标,而在opencv的函数 cvGet2D()与cvSet2D() 中,却行不通。cvGet2D() 的函数原型是 : CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1); 函数返回的是一个CvScalar 容器,其参数中也有两个方向的坐标,但跟我们平常习惯的坐标不一样的是,idx0代表是的行,即高度,对应于我们平常坐标系的y, idx1代表的是列,即宽度,对应于我们平常坐标系的x,cvSet2D() 也类似。所以在使用cvSet2D() 与
阅读全文
摘要:cvMinMaxLoc()找出图片或一组数据中最大值及最小值的数据,以及最大值及最小值的位置,第一个引数为输入IplImage资料结构或CvMat资料结构,第二个引数为输出最小值double型别数据,第三个引数为输出最大值double型别数据,第四个引数为输出最小值位置CvPoint资料结构,第五个引数为输出最大值位置CvPoint资料结构.找出图片或一组数据中最大值及最小值的数据,以及最大值及最小值的位置,第一个引数为输入IplImage资料结构或CvMat资料结构,第二个引数为输出最小值double型别数据,第三个引数为输出最大值double型别数据,第四个引数为输出最小值位置CvPoin
阅读全文
摘要:新函数用红色显示,程序为:#include <highgui.h>#include <cv.h>#include <iostream.h>void main(){IplImage * src=cvLoadImage("baboon.jpg",-1);IplImage * dst;CvRect roi_rect_src;CvRect roi_rect_dst;cvNamedWindow("src",CV_WINDOW_AUTOSIZE);cvMoveWindow("src",200,200); //设
阅读全文
摘要:一、基础 对于彩色转灰度,有一个很著名的心理学公式: Gray = R*0.299 + G*0.587 + B*0.114二、整数算法 而实际应用时,希望避免低速的浮点运算,所以需要整数算法。 注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法: Gray = (R*299 + G*587 + B*114 + 500) / 1000 RGB一般是8位精度,现在缩放1000倍,所以上面的运算是32位整型的运算。注意后面那个除法是整数除法,所以需要加上500来实现四舍五入。 就是由于该算法需要32位运算,所以该公式的另一个变种很流行: Gray = (R*30 ...
阅读全文
摘要:下面将详细介绍ppm文件ppm文件是一种图像文件,有其自己的文件格式。ppm文件由两个部分组成:第一个部分是三行ASCII码,这个部分决定了图像的存储格式以及图像的特征;第二个部分就是图像的数据部分,图像就是由这个部分组成的。 ppm的第一部分由三行ASCII码组成第一行是P2/P3/P6第二行是图像的大小,先是列像素数,后是行像素数,中间有一个空格第三行是一个介于1和65535之间的整数,而且必须是文本的,用来表示每一个像素的一个分量用几个比特表示。 三行之后是图像的数据流,从左到右,从上到下。在进行图像数据存储的时候,需要进行数据的格式,假如需要的像素值在0~255之间,那么在进行数据文件
阅读全文
摘要:1、限副滤波/* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */#define A 10char value;char filter(){ char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; }2、中位值滤波法/* N值可根据实际情况调整 排序采用冒泡法*/#...
阅读全文
摘要:过去在医院治疗的时候,全得听医生的说法,然后自己想象,比如:“你的骨头断了,我给你钉了几个钉子接上了。”断了?!断成啥样了?钉子?!大头钉还是圆钉?!一切皆得由你自己想象。随着科学的发展,你终于可以一睹真相了。微软研究院开发了一套系统,能够将你相应部位的情况,包括骨骼、血管、肌肉等,投射到你的皮肤上,看上去就像是透视了一样,如下图所示:原理其实很简单,通过一个手持的小投影就可以了,把预先准备好的照片人工投射到你的皮肤上就OK了。但是达到的效果却是惊人的,病人在看到自己的病情后,会更加积极主动地配合医生治疗,这也是这套系统的目的所在。通常有30%到50%的患者不按照医生的嘱咐来进行治疗和康复,手
阅读全文
摘要:主要功能是使灰度图中 亮度越高的像素点,在伪彩色图中对应的点越趋向于 红色;亮度越低,则对应的伪彩色越趋向于 蓝色;总体上按照灰度值高低,由红渐变至蓝,中间色为绿色。其对应关系如下图所示: 1 void F_Gray2Color(CvMat* gray_mat, CvMat* color_mat) 2 { 3 if(color_mat) 4 cvZero(color_mat); 5 6 int stype = CV_MAT_TYPE(gray_mat->type), dtype = CV_MAT_TYPE(color_mat->type); 7 int rows = gray_ma
阅读全文