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 на количество соседей -by - количество массивов камер, чтобы получить доступ к гистограммам для каждой отдельной камеры.

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

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

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

Измените форму вектора признаков LBP на вектор 1-by- 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'to false когда требуются вращательно инвариантные функции.

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

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

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

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

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

свернуть все

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

Количество камер вычисляется как:

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

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

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

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

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

N = numCells x B

Ссылки

[1] Ojala, T., M. Pietikainen, and T. Maenpaa. «Мультиразрешение серой шкалы и классификации инвариантной текстуры вращения с локальными двоичными шаблонами». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 24, выпуск 7, июль 2002 года, стр. 971-987.

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

.
Введенный в R2015b