Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 图像中角点像素的筛选描述符_Image Processing_Computer Vision_Histogram_Sift - Fatal编程技术网

Image processing 图像中角点像素的筛选描述符

Image processing 图像中角点像素的筛选描述符,image-processing,computer-vision,histogram,sift,Image Processing,Computer Vision,Histogram,Sift,我想做一个函数来计算sift描述符,它以两个参数作为输入,一个是图像,另一个是图像中某些点的向量。输出将是128维sift描述符的行,每行对应于图像中某一点的描述符。 对于SIFT描述符的计算,需要在关键点(比如32 x 32)周围裁剪某些补丁,并进行一些图像处理(方向直方图和所有)。我这里的问题是如何处理图像中的角点像素。例如,如果我将像素位置(1,1)作为函数的输入,那么如何裁剪面片或如何计算图像中该位置的描述符???正如其他人在评论中指出的那样,在图像处理中,在边界处镜像图像是一种常见做法

我想做一个函数来计算sift描述符,它以两个参数作为输入,一个是图像,另一个是图像中某些点的向量。输出将是128维sift描述符的行,每行对应于图像中某一点的描述符。
对于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或将图像包裹在其限制之外,但结果将是相同的,即信息丢失。因此,不要过分依赖边界附近的特征。看看另一个答案: