Image processing 图像中角点像素的筛选描述符
我想做一个函数来计算sift描述符,它以两个参数作为输入,一个是图像,另一个是图像中某些点的向量。输出将是128维sift描述符的行,每行对应于图像中某一点的描述符。Image processing 图像中角点像素的筛选描述符,image-processing,computer-vision,histogram,sift,Image Processing,Computer Vision,Histogram,Sift,我想做一个函数来计算sift描述符,它以两个参数作为输入,一个是图像,另一个是图像中某些点的向量。输出将是128维sift描述符的行,每行对应于图像中某一点的描述符。 对于SIFT描述符的计算,需要在关键点(比如32 x 32)周围裁剪某些补丁,并进行一些图像处理(方向直方图和所有)。我这里的问题是如何处理图像中的角点像素。例如,如果我将像素位置(1,1)作为函数的输入,那么如何裁剪面片或如何计算图像中该位置的描述符???正如其他人在评论中指出的那样,在图像处理中,在边界处镜像图像是一种常见做法
对于SIFT描述符的计算,需要在关键点(比如32 x 32)周围裁剪某些补丁,并进行一些图像处理(方向直方图和所有)。我这里的问题是如何处理图像中的角点像素。例如,如果我将像素位置(1,1)作为函数的输入,那么如何裁剪面片或如何计算图像中该位置的描述符???正如其他人在评论中指出的那样,在图像处理中,在边界处镜像图像是一种常见做法,有时,也可以在边界处填充零 如果您所指的“特定点的向量”是“关键点”,那么您可以使用
opencv
提取SIFT特征,这将为每个关键点返回128维特征向量
您不必自己明确地计算SIFT描述符,因为
OPENCV
提供了中所述的方法,您可以在32像素的图像周围创建一个边框,镜像原始图像。因此,即使您的角点周围也会有一个有效的32x32矩形。在OpenCV中,您可以使用和BORDER\u REFLECT\u 101
。这不会影响描述符的性能吗?当然可以。这就是为什么不应该计算边界附近的sift。正如@Miki指出的,基本上,图像像素中的特征是在r
半径邻域中计算的。r
(取决于功能)越大,图像中丢失信息的像素量越大。例如,对于r=5
,图像边界周围的5
像素带在计算特征时将丢失信息。要解决此问题,有边界条件,可以反射、设置为0或将图像包裹在其限制之外,但结果将是相同的,即信息丢失。因此,不要过分依赖边界附近的特征。看看另一个答案: