FAST
一、FAST 特征点
在像素点的周围邻域内有足够多的像素点与该点处于不同的灰度区域。在灰度图像中,
也就是有足够多的像素点的灰度值大于该点的灰度值或者小于该点的灰度值。
通常选取以像素点为中心的半径为 3 的离散化的 Bresenham 元形区域。
在 OpenCV 中,当 patternSize 为 16 时,用以下数组表示这 16 个点相对于圆心的坐
标:
staticconstintosets16[][2]=
{
{0,3},{1,3},{2,2},{3,1},{3,0},{3,-1},{2,-2},{1,-3},
{0,-3},{-1,-3},{-2,-2},{-3,-1},{-3,0},{-3,1},{-2,2},{-1,3}
};
OpenCV 用函数来计算圆周上的点相对于圆心坐标在原图像中的位置:
[cpp]view plain copy
1. voidmakeOffsets(intpixel[25],introwStride,intpatternSize)
2. {
3. //分别定义三个数组,用于表示 patternSize 为 16,12 和 8 时,圆周像素对于圆心的
相对坐标位置
4. staticconstintoffsets16[][2]=
5. {
6. {0,3},{1,3},{2,2},{3,1},{3,0},{3,-1},{2,
-2},{1,-3},
7. {0,-3},{-1,-3},{-2,-2},{-3,-1},{-3,0},{-3,1},{-2,
2},{-1,3}
8. };
9.
10. staticconstintoffsets12[][2]=
11. {
12. {0,2},{1,2},{2,1},{2,0},{2,-1},{1,-2},
13. {0,-2},{-1,-2},{-2,-1},{-2,0},{-2,1},{-1,2}
14. };
15.
16. staticconstintoffsets8[][2]=
17. {
18. {0,1},{1,1},{1,0},{1,-1},
19. {0,-1},{-1,-1},{-1,0},{-1,1}
20. };
21.
22. //根据 patternSize 值,得到具体应用上面定义的哪个数组