exponenta event banner

extractLBPFeatures

Извлечение функций локального двоичного шаблона (LBP)

Описание

features = extractLBPFeatures(I) возвращает извлеченный однородный локальный двоичный шаблон (LBP) из изображения в градациях серого. Функции LBP кодируют информацию о локальной текстуре.

пример

features = extractLBPFeatures(I,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

Считывание изображений, содержащих различные текстуры.

brickWall = imread('bricks.jpg');
rotatedBrickWall = imread('bricksRotated.jpg');
carpet = imread('carpet.jpg');

Отображение изображений.

figure
imshow(brickWall)
title('Bricks')

Figure contains an axes. The axes with title Bricks contains an object of type image.

figure
imshow(rotatedBrickWall)
title('Rotated Bricks')

Figure contains an axes. The axes with title Rotated Bricks contains an object of type image.

figure
imshow(carpet)
title('Carpet')

Figure contains an axes. The axes with title Carpet contains an object of type image.

Извлеките элементы LBP из изображений для кодирования информации о текстуре.

lbpBricks1 = extractLBPFeatures(brickWall,'Upright',false);
lbpBricks2 = extractLBPFeatures(rotatedBrickWall,'Upright',false);
lbpCarpet = extractLBPFeatures(carpet,'Upright',false);

Оцените сходство между функциями LBP, вычисляя квадрат ошибки между ними.

brickVsBrick = (lbpBricks1 - lbpBricks2).^2;
brickVsCarpet = (lbpBricks1 - lbpCarpet).^2;

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

figure
bar([brickVsBrick; brickVsCarpet]','grouped')
title('Squared Error of LBP Histograms')
xlabel('LBP Histogram Bins')
legend('Bricks vs Rotated Bricks','Bricks vs Carpet')

Figure contains an axes. The axes with title Squared Error of LBP Histograms contains 2 objects of type bar. These objects represent Bricks vs Rotated Bricks, Bricks vs Carpet.

Прочитайте образец изображения и преобразуйте его в градации серого.

I = imread('gantrycrane.png');
I = im2gray(I);

Извлеките ненормализованные элементы LBP, чтобы можно было применить пользовательскую нормализацию.

lbpFeatures = extractLBPFeatures(I,'CellSize',[32 32],'Normalization','None');

Переформатируйте элементы LBP в несколько соседних массивов - количество ячеек - для доступа к гистограммам для каждой отдельной ячейки.

numNeighbors = 8;
numBins = numNeighbors*(numNeighbors-1)+3;
lbpCellHists = reshape(lbpFeatures,numBins,[]);

Нормализуйте гистограмму каждой ячейки LBP, используя L1 норму.

lbpCellHists = bsxfun(@rdivide,lbpCellHists,sum(lbpCellHists));

Измените форму вектора элементов LBP на 1-N вектор элементов.

lbpFeatures = reshape(lbpCellHists,1,[]);

Входные аргументы

свернуть все

Входное изображение, указанное как M-by-N 2-D изображение в градациях серого, которое является реальным и неразреженным.

Типы данных: logical | single | double | int16 | uint8 | uint16

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'NumNeighbors',8

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

Число соседей, используемых для вычисления LBP для каждого пикселя во входном изображении, указанное как пара, разделенная запятыми, состоящая из 'NumNeighbors"и положительное целое число. Набор соседей выбирается из кругового симметричного узора вокруг каждого пикселя. Увеличьте число соседей для более детального кодирования каждого пикселя. Типичные значения варьируются от 4 кому 24.

Радиус кругового узора, используемый для выбора соседей для каждого пикселя во входном изображении, указанный как пара, разделенная запятыми, состоящая из 'Radius"и положительное целое число. Для получения подробной информации в большем пространственном масштабе увеличьте радиус. Типичные значения варьируются от 1 кому 5.

Флаг инвариантности вращения, заданный как разделенная запятыми пара, состоящая из 'Uprightи логический скаляр. При установке для этого свойства значения true, функции LBP не кодируют информацию о повороте. Установить 'UprightКому false когда требуются вращательно инвариантные признаки.

Метод интерполяции, используемый для вычисления соседних элементов изображения, указанный как разделенная запятыми пара, состоящая из 'Interpolation«и либо» 'Linear' или 'Nearest'. Использовать 'Nearest' для более быстрого вычисления, но с меньшей точностью.

Параметры гистограммы
Параметры гистограммы определяют, как распределение двоичных шаблонов агрегируется по изображению для получения выходных признаков.

Размер ячейки, указанный как разделенная запятыми пара, состоящая из 'CellSizeи 2-элементный вектор. Количество ячеек вычисляется как floor(size(I)/CellSize).

Тип нормализации, применяемый к каждой гистограмме ячейки LBP, указанной как пара, разделенная запятыми, состоящая из 'Normalization«и либо» 'L2' или 'None'. Чтобы применить пользовательский метод нормализации в качестве шага постобработки, задайте для этого значения значение 'None'.

Выходные аргументы

свернуть все

Вектор элемента LBP, возвращаемый как вектор 1-by-N длиной N, представляющий количество элементов. Функции LBP кодируют информацию о локальной текстуре, которую можно использовать для таких задач, как классификация, обнаружение и распознавание. Функция разбивает входное изображение на неперекрывающиеся ячейки. Для сбора информации по большим областям выберите большие размеры ячеек. Однако при увеличении размера ячейки теряется локальная детализация. N зависит от количества ячеек на изображении, numCells, количества соседних ячеек, P и Upright параметр.

Количество ячеек вычисляется следующим образом:

numCells =floor(size(I)/CellSize))

На рисунке показано изображение с девятью гистограммами клеток. Каждая гистограмма описывает функцию LBP.

Размер гистограммы в каждой ячейке равен [1, B], где B - количество ячеек в гистограмме. Количество ячеек зависит от Upright собственность и число соседей, П.

Вертикально Количество ячеек
true(P x P-1) + 3)
false(P + 2)

Общая длина функции LBP, N, зависит от количества ячеек и количества ячеек, B:

N = numCells x B

Ссылки

[1] Оджала, Т., М. Пиетикайнен и Т. Маенпаа. «Серый масштаб и инвариантная классификация текстур с несколькими разрешениями с локальными двоичными шаблонами». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 24, выпуск 7, июль 2002 года, стр. 971-987.

Расширенные возможности

.
Представлен в R2015b