OpenCV БЫСТРЫЙ TYPE_5_8

Я экспериментирую с различными типами детектора FAST OpenCV.

Доступные типы:

TYPE_5_8, 
TYPE_7_12, 
TYPE_9_16

Последний установлен по умолчанию и описан на этой фотографии:

введите здесь описание изображения

Я предполагаю, что TYPE_7_12 означает следующее:

введите здесь описание изображения

И TYPE_5_8 означает следующее:

введите здесь описание изображения

Теперь я запускаю детектор FAST с порогом 30 и TYPE_5_8, и следующий фрагмент изображения не дает ни одной ключевой точки:

введите здесь описание изображения

На основе документации говорится:

Теперь пиксель p является углом, если существует набор из n смежных пикселей в круге (из 16 пикселей), все из которых ярче, чем I_p + t, или все темнее, чем I_p - t.

, я ожидал, что центральный пиксель (тот, что со значением 203) будет обнаружен как ключевая точка. Явно видны 5 смежных пикселей с интенсивностью ниже 203–30.

Но ничего не обнаружено. Почему?


person ancajic    schedule 23.01.2017    source источник


Ответы (1)


центральный пиксель будет обнаружен как ключевая точка, когда 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]]];
person jojo    schedule 06.11.2020