2016-03-02 5 views
0

Я новичок в OpenCV. Я пытаюсь сделать образец, чтобы извлечь черты лица. Я излучаю несколько бумаг, и одним из наиболее рекомендуемых был LBP. Я понимаю, как работает LBP-дескриптор, но я прочитал его вариант. LBP uniform Я понимаю, что это как LBP оригинал, но как только у вас есть двоичная последовательность (например, вы сравниваете определенный пиксель с соседями, и у вас есть следующий результат -> 11110001, я понимаю, что есть 2 перехода, поэтому в этом случае мы можем сказать, что это равномерное, так как число переходов < = 2.Как реализовать форму LBP

Мой вопрос в том, какой код мне нужно вычислить в этом пикселе после выполнения этого процесса. Я знаю, что у LBP оригинал wew имеет 256 значений, но с этим вариантом из LBP uniform que reduce число 59 бункеров значений. Так что мой вопрос, какой код я должен поставить после тестирования, если число переходов в каждом пикселе < = 2 или> 2.

Спасибо! Я надеюсь, что я объяснил правильно.

ответ

4
here's a lookup-table for this, assuming 8 neighbours: 


    static int uniform[256] = 
    { 
     0,1,2,3,4,58,5,6,7,58,58,58,8,58,9,10,11,58,58,58,58,58,58,58,12,58,58,58,13,58, 
     14,15,16,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,17,58,58,58,58,58,58,58,18, 
     58,58,58,19,58,20,21,22,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58, 
     58,58,58,58,58,58,58,58,58,58,58,58,23,58,58,58,58,58,58,58,58,58,58,58,58,58, 
     58,58,24,58,58,58,58,58,58,58,25,58,58,58,26,58,27,28,29,30,58,31,58,58,58,32,58, 
     58,58,58,58,58,58,33,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,34,58,58,58,58, 
     58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58, 
     58,35,36,37,58,38,58,58,58,39,58,58,58,58,58,58,58,40,58,58,58,58,58,58,58,58,58, 
     58,58,58,58,58,58,41,42,43,58,44,58,58,58,45,58,58,58,58,58,58,58,46,47,48,58,49, 
     58,58,58,50,51,52,58,53,54,55,56,57 
    }; 

с помощью этого, вы просто заменить 8-битное значение LBP с одной из LUT:

value = uniform[value]; 
Смежные вопросы