OpenCV FAST TYPE_5_8
Posted
技术标签:
【中文标题】OpenCV FAST TYPE_5_8【英文标题】: 【发布时间】:2017-01-23 15:17:30 【问题描述】:我正在试验不同类型的 OpenCV 的 FAST 检测器。
可用的类型有:
TYPE_5_8,
TYPE_7_12,
TYPE_9_16
最后一个是默认的,由这张照片描述:
我假设TYPE_7_12
的含义如下:
TYPE_5_8
的意思是:
现在,我使用阈值 30 和 TYPE_5_8
运行 FAST 检测器,以下图像部分不会产生单个关键点:
基于documentation说:
现在像素 p 是一个角,如果存在一组 n 连续 圆圈中的像素(16 个像素)都比 I_p + 亮 t,或者都比 I_p 暗 - t
,我预计中心像素(值为 203 的像素)将被检测为关键点。明显有 5 个连续像素的强度低于 203 - 30。
但没有检测到任何东西。为什么?
【问题讨论】:
【参考方案1】:当 8 个连续像素位于下方/上方时,中心像素将被检测为关键点。 您可以阅读以下源代码,0-8、2-10 表示 type_5_8 的 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]]];
【讨论】:
是否有任何文档明确声明它始终是 8 个连续像素,无论图案大小如何?如果没有,我觉得应该更新文档或者这应该被认为是一个错误。在我自己对 5_8 和 7_12 模式的实验中,我也注意到了这个问题。如果不是走捷径,它会拒绝弯道。以上是关于OpenCV FAST TYPE_5_8的主要内容,如果未能解决你的问题,请参考以下文章
OpenCv dnn模块扩展研究--style transfer
Opencv 2.4.12_2 calcOpticalFlowPyrLK() 错误
调试断言失败 OpenCv is_block_type_valid(header->_block_use)
为啥我解决了“Debug Assertion Failed OpenCv is_block_type_valid(header->_block_use)”