我想从返回的SURF点中提取(x,y)像素坐标,作为the example provided here using Matlab中的示例。很明显,使用'ptsIn(1).Location'我可以返回该点的(x,y)坐标。但重新调整的点数也包括一些小数点,例如(102.9268,51.7285)。有没有办法将其转换为图像平面中的像素位置,或者只是平均这些值将给出像素位置?谢谢。
答案 0 :(得分:3)
为了进一步理解,我尝试了以下代码in this link。
% Extract SURF features
I = imread('cameraman.tif');
points = detectSURFFeatures(I);
[features, valid_points] = extractFeatures(I, points);
% Visualize 10 strongest SURF features, including their
% scales and orientation which were determined during the
% descriptor extraction process.
imshow(I); hold on;
strongestPoints = valid_points.selectStrongest(10);
strongestPoints.plot('showOrientation',true);
然后,在Matlab控制台中尝试了命令strongestPoints.Location
,它返回了以下(x,y)坐标。
139.7482 95.9542 107.4502 232.0347 116.6112 138.2446 105.5152 172.1816 113.6975 48.7220 104.4210 75.7348 111.3914 154.4597 106.2879 175.2709 131.1298 98.3900 124.2933 64.4942
由于有一个坐标(107.4502 232.0347),我试图将行232标记为黑色(I(232,:)=0;
)以查看它是否与SURF点中的232.0347 y坐标匹配,并收到下图。因此,似乎SURF点的舍入值给出图像的(x,y)像素坐标。