3

Я смог реализовать базовый локальный двоичный шаблон (LBP) без интерполяции. Не Ниже приводится код: (OpenCV)Создание гистограммы LBP

int center = 0; 
int center_lbp = 0; 

for (int row = 1; row < Image.rows; row++) 
{ 
    for (int col = 1; col < Image.cols; col++) 
    { 
    center = Image.at<int>(row, col); 
    center_lbp = 0; 

    if (center <= Image.at<int>(row-1, col-1)) 
     center_lbp += 1; 

    if (center <= Image.at<int>(row-1, col)) 
     center_lbp += 2; 

    if (center <= Image.at<int>(row-1, col+1)) 
     center_lbp += 4; 

    if (center <= Image.at<int>(row, col-1)) 
     center_lbp += 8; 

    if (center <= Image.at<int>(row, col+1)) 
     center_lbp += 16; 

    if (center <= Image.at<int>(row+1, col-1)) 
     center_lbp += 32; 

    if (center <= Image.at<int>(row+1, col)) 
     center_lbp += 64; 

    if (center <= Image.at<int>(row+1, col+1)) 
     center_lbp += 128; 

    cout << "center lbp value: " << center_lbp << endl; 
    LBPImage.at<int>(row, col) = center_lbp; 
    } 
} 

Read много вещей ... но не могу понять, как создать гистограмму теперь с концепцией единых моделей ... сделал проверить несколько ссылок ... ничего много там .... может кто-нибудь пожалуйста, помогите ...

спасибо!

+3

Судя по тегам, которые вы включили, вы используете opencv или думаете об использовании его. Если у вас есть, простой поиск google-гистограммы opencv может иметь значение.Вот одна из ссылок при поиске http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html – woosah

+2

Гистограмма 'Histogram' и' LBP 'немного связаны друг с другом, чем 'car' и' carpet', но ссылка выше совершенно бесполезна в этом контексте – Sam

ответ

2

Ваш код кажется, что вы используете 8-окрестности LBP с радиусом r = 1. Таким образом, вы можете получить максимум 256 (2^8) количество различных значений. Чтобы построить гистограмму, объявить матрицу, содержащие одну строку и 256 столбцов (БИНС) и инициализировать его с 0: -

Mat H(1,256,CV_8UC1,Scalar::all(0)); 

Теперь для каждого центрального пикселя (пиксели не в границах), после применения LBP вы получите бинарный файл строка длиной 8, и это десятичное кодирование (сохраненное в переменной center_lbp в вашем сегменте кода) представляет собой соответствующий бит гистограммы. Таким образом, после вычисления center_lbp просто увеличить значение в соответствующем столбце гистограммы следующим образом: -

H.at <uchar> (center_lbp) + = 1;

После разбора изображения для каждого центрального пикселя вы получите гистограмму LBP для этого изображения.

LBP С единообразных Patterns: -

LBP называется однородным, если круговой шаблон двоичной (по часовой стрелке) содержит максимум 2 переход от 0 до 1, и наоборот. Для Ex: - 00111000 - это единый шаблон, но 10111000 - нет. Чтобы построить гистограмму LBP для однородного рисунка, правило равно -

  • Каждый однородный узор имеет свой уникальный бункер на гистограмме.
  • Все неравномерные рисунки будут помещены в одну ячейку на гистограмме.

для p числа соседних точек, мы можем получить максимум p * (p-1) +2 количество однородных узоров. Таким образом, гистограмма для однородного шаблона будет содержать p * (p-1) +3 количество ящиков.

Для построения гистограммы: -

  • получить двоичный шаблон для каждого центрального пикселя путем нанесения на него LBP.
  • проверить, является ли шаблон однородной или нет.
  • если равномерное, то добавьте значение бина в резервном ящике для этого шаблона гистограммы на 1. , вы должны иметь некоторые критерии сопоставления для отображения однородного шаблона в уникальном бункере гистограммы.
  • еще неравномерный шаблон. Таким образом, значение инкрементного бункера в резервном бункере (Ex.- последний бит) для всех неравномерных рисунков гистограммы на 1.
+0

Я все это проделал ... но я застрял в том, как создать таблицу поиска ... мне нужно записать все 256 8-битных комбинаций и искать их вручную? Пожалуйста, помогите ... Я все это учу ... спасибо большое! – learner

+0

Вы можете это сделать. Другой способ - создать массив, который будет содержать десятичное кодированное значение только однородных шаблонов. всякий раз, когда вы получаете шаблон LBP, ищите массив, если он найден, возвращаем индекс массива, который является отображаемым индексом в гистограмме для этого однородного шаблона. если не найдено, то это неравномерный шаблон. вы можете создать массив статически или через какую-либо программу для любого произвольного P. – Saikat

Смежные вопросы