3

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

可用类型有:

TYPE_5_8, 
TYPE_7_12, 
TYPE_9_16

最后一个是默认设置,由这张照片描述:

在此处输入图像描述

我假设TYPE_7_12意味着以下内容:

在此处输入图像描述

TYPE_5_8意味着:

在此处输入图像描述

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

在此处输入图像描述

根据文档说:

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

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

然而什么也没检测到。为什么?

4

1 回答 1

0

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

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]]];
于 2020-11-06T01:51:30.957 回答