OpenCV FAST TYPE_5_8

时间:2017-01-23 15:17:31

标签: c++ opencv image-processing keypoint

我正在试验不同类型的OpenCV的FAST探测器。

可用的类型有:

TYPE_5_8, 
TYPE_7_12, 
TYPE_9_16

最后一张是默认值,并由此照片描述:

enter image description here

我认为TYPE_7_12表示以下内容:

enter image description here

TYPE_5_8意味着:

enter image description here

现在,我使用阈值30和TYPE_5_8运行FAST检测器,并且以下图像部分不会产生单个关键点:

enter image description here

基于documentation说:

  

现在,如果存在一组n个连续的像素,则像素p是一个角   圆圈中的像素(16个像素),它们都比I_p +更亮   t,或全部比I_p - t

更暗

,我预计中心像素(值为203的像素)将被检测为关键点。显然有5个连续像素的强度低于203-30。

然而没有发现任何东西。为什么呢?

1 个答案:

答案 0 :(得分:0)

当8个连续像素较低/较高时,中心像素将被检测为关键点。 您可以阅读以下源代码,对于type_5_8,0-8、2-10表示0-0、2-2

int d = tab[ptr[pixel[0]]] | tab[ptr[pixel[8]]];
if( d == 0 )
    continue;
d &= tab[ptr[pixel[2]]] | tab[ptr[pixel[10]]];
d &= tab[ptr[pixel[4]]] | tab[ptr[pixel[12]]];
d &= tab[ptr[pixel[6]]] | tab[ptr[pixel[14]]];

if( d == 0 )
   continue;
d &= tab[ptr[pixel[1]]] | tab[ptr[pixel[9]]];
d &= tab[ptr[pixel[3]]] | tab[ptr[pixel[11]]];
d &= tab[ptr[pixel[5]]] | tab[ptr[pixel[13]]];
d &= tab[ptr[pixel[7]]] | tab[ptr[pixel[15]]];