随笔分类 - OpenCV
摘要:图像的剪切有多种方法,其中一种是使用ROI的方法第一步:将需要剪切的图像图像不部分设置为ROIcvSetImageROI(src , cvRect(x,y,width,height));第二步:新建一个与需要剪切的图像部分同样大小的新图像cvCreateImage(cvSize(width,height),IPL_DEPTH,nchannels);第三步:将源图像复制到新建的图像中cvCopy(src,dst,0);第四步:释放ROI区域cvResetIamgeROI(src);完整程序实例:#include <cv.h>#include <cxcore.h>#incl
阅读全文
摘要:Sift算法-----part6 前言:这是本系列的最后一部分了,我们剩下的唯一工作就是采取每个关键点的指纹,这样才能把他从其他部分区别出来。做法 我们的目标是给每个关键点创建一个独一无二的指纹,前提必须他很容易计算,另一方面我们希望他在作比较时能保持相对宽松,比较在不同的两张图片中,物体总是有或多或少的区别的。为了完成这个目标,我们为每个关键点建立一个16*16的区域,这个区域被细分为4*4的区域。如下图: 然后在这个4*4的区域类,方向梯度和梯度大小被计算出来,这些方向被放入一个8位的直方图中。 梯度方向在0-44°的被放在第一个格子内,45-89°的被...
阅读全文
摘要:Sift算法-----part5 前言:通过前四部分的操作,我们已经得到优化后的关键点,它们已经在实践中被证明是稳定有效的,下一个步骤中,我们将为每一个关键点分配方向,这个方向将保证角度不怕。做法: 具体做法是收集每个关键点梯度方向和大小。然后我们就可以得出这区域中最突出的方向。我们将这个方向分配给每个关键点。其后的所有计算都是与这个方向是紧紧相关的,这保证了方向不变。 角度收集的区域与它的尺度相关,尺度越大,区域面积越大。细节 现在讨论关于方向收集的区域。 梯度方向和大小可以通过下列公式计算: 计算每个在关键点...
阅读全文
摘要:Sift算法-----part4 我们在前面的步骤中产生了许多关键点,其中的一些点是沿边缘分布的或者经历的对比不够充分,其中的任一种情况都使得这些关键点不能成为特征点。所以,我们得剔除它们。剔除的方式类似于Harris角点检测法中使用的方法。移除低对比度的特征点这很简单,如果在DOG图像中某点像素点的值小于某个特定的值,那么丢弃它。因为我们已经计算出亚像素点,我们需要使用taylor表达式来算出在亚像素点钟的值。如果强度偏小,同样会丢弃它。Removing edges我们计算出关键点的两个梯度值,彼此相互垂直。对于一张图片中的关键点进行计算,该点的两个梯度有三种情况:对于平滑的区域这两个梯度.
阅读全文
摘要:Sift算法-----part2前言: 在上一个步骤中,我们创建了图像的尺度空间,即逐步模糊图片,缩小它然后依次类推。现在,我们将使用模糊的图片去创建一系列的图片--高斯差(DOG)。这些DOG对找出图像的关键点十分重要。高斯--拉普拉斯(Laplacian of Gaussian)算子: LOG算法的步骤如下:对原始图像进行模糊,然后,根据该图像计算出二阶导数(Laplacian)。这样会得出图像上的边缘和角点,这些边缘和角点对找到关键点很重要。 但是二阶导数对噪点很敏感,模糊可以消除某些噪点是更容易地计算出二阶导数。难度是,计算出所有这些二阶导数的时间和空间复杂度均很高,所有我们必须...
阅读全文
摘要:Sift算法-----part1 前言:真实世界中的物体只有在某些尺寸中才有价值。比如,你在桌上放置了一台电脑,而你在电脑前,那么电脑就很好地存在。而当你在一个离电脑很远的地方查看时,它就像一粒尘埃,没有什么意义。尺度空间的概念旨在将现实中的这个理念用于数字图像的处理中。尺度空间: 你是可以选择看着一个树还是一片叶子,这取决于你的喜好。如果你选择了一棵树,那么你会选择忽略掉某些细节(例如叶子等)。当然你在选择忽略掉某些细节时,你必须保证不会引人更多的细节。唯一合理的方式是采用高斯模糊(在多种情况下已经被数学证明有效,至于怎么证明,这个问问数学界的大师吧。^_^) 因此,创建一个尺度空间,...
阅读全文
摘要:SIFT:ScaleInvariantFeatureTransform(尺度不变特征转换)先介绍第一部分:在不同图片之间进行特征匹配是计算机图形学中一个常见的问题。在一般情况下,简单的角点检测就能达到目的。但是,当你拥有的图片不同尺寸,或者不同角度,sift算法就能派上用场。Sift是一个相当复杂的算法,需要相应的知识,而且很容易使人糊涂。我将算法分为以下如下几个部分:一、构建尺度空间:这是初始步骤。你可以创建对原始图像的内部表示来保证尺寸不变,这就是构建尺度空间的工作。二、高斯--拉普拉斯(LaplacianofGaussian)算子:LOG算子常用于在图像中查找关键点。但有相当的时间和空间
阅读全文
摘要:图像阈值化:在对图像进行操作时,希望能对一些低于和高于一定值的像素进行操作。opencv的cvThreshold()可以完成某些任务。double cvThreshold(CvArr* src,CvArr* dst,double threshold, //Tdouble max_value, //Mint threshold_type);//只能处理8位或浮点灰度图像threshold_type包括一些类型选项CV_THRESH_BINARY (src>T)?M:0CV_THRESH_BINARY_INV (src>T)?0:MCV_THRESH_TRUNC (src>T)?
阅读全文
浙公网安备 33010602011771号