Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

extractLBPFeatures

ローカル バイナリ パターン (LBP) 特徴の抽出

説明

features = extractLBPFeatures(I) は、グレースケール イメージから抽出した一様なローカル バイナリ パターン (LBP) を返します。LBP 特徴は、局所的なテクスチャ情報を符号化します。

features = extractLBPFeatures(I,Name,Value) は、Name,Value ペアの引数を 1 つ以上指定したオプションを追加で使用します。

すべて折りたたむ

さまざまなテクスチャを含むイメージを読み取ります。

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

イメージを表示します。

figure
imshow(brickWall)
title('Bricks')

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

figure
imshow(carpet)
title('Carpet')

イメージから 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')

サンプル イメージを読み取り、グレースケールに変換します。

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,[]);

L1 ノルムを使用して、各 LBP セル ヒストグラムを正規化します。

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

LBP 特徴ベクトルの形状を 1 行 N 列の特徴ベクトルに戻します。

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

入力引数

すべて折りたたむ

入力イメージ。実数かつ非スパースの MN 列の 2 次元グレースケール イメージとして指定します。

データ型: logical | single | double | int16 | uint8 | uint16

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'NumNeighbors',8

アルゴリズム パラメーター
LBP アルゴリズム パラメーターは、入力イメージの各ピクセルについてローカル バイナリ パターンを計算する方法を制御します。

入力イメージの各ピクセルについて LBP を計算するために使用する近傍の数。'NumNeighbors' と正の整数で構成されるコンマ区切りのペアとして指定します。各ピクセルを中心に円対称なパターンから、近傍集合が選択されます。各ピクセルの周囲をより詳細に符号化するには、近傍の数を増やします。一般的な値の範囲は、424 です。

入力イメージの各ピクセルについて近傍を選択するために使用する円形パターンの半径。'Radius' と正の整数で構成されるコンマ区切りのペアとして指定します。より大きな空間スケールにわたって詳細を取得するには、半径を大きくします。一般的な値の範囲は、15 です。

回転不変フラグ。'Upright' と logical スカラーで構成されるコンマ区切りのペアとして指定します。このプロパティを true に設定すると、LBP 特徴は回転情報を符号化しません。回転に対して不変の特徴が必要な場合、'Upright' を false に設定します。

ピクセル近傍の計算に使用される内挿法。'Interpolation' と、'Linear' または 'Nearest' で構成されるコンマ区切りのペアとして指定します。'Nearest' を使用すると計算が高速になりますが、精度は低下します。

ヒストグラム パラメーター
ヒストグラム パラメーターは、バイナリ パターンの分布をイメージ全体で集約して出力特徴量を生成する方法を決定します。

セル サイズ。'CellSize' と 2 要素ベクトルで構成されるコンマ区切りのペアとして指定します。セルの数は floor(size(I)/CellSize) として計算されます。

各 LBP セル ヒストグラムに適用される正規化のタイプ。'Normalization' と、'L2' または 'None' で構成されるコンマ区切りのペアとして指定します。後処理ステップとしてカスタムの正規化手法を適用するには、この値を 'None' に設定します。

出力引数

すべて折りたたむ

LBP 特徴ベクトル。特徴の数を表す長さ N の 1 行 N 列のベクトルとして返されます。LBP 特徴は、局所的なテクスチャ情報を符号化し、分類、検出、認識などのタスクに役立ちます。この関数は入力イメージをオーバーラップしないセルに分割します。大きな領域にわたって情報を収集するには、大きなセル サイズを選択します。ただし、セル サイズを大きくすると、局所的な細部が失われます。N は、イメージに含まれるセルの数 numCells、近傍の数 P、および Upright パラメーターによって異なります。

セルの数は次のように計算されます。

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

この図は、9 つのセル ヒストグラムを持つイメージを示しています。各ヒストグラムが LBP 特徴を表しています。

各セルのヒストグラムのサイズは [1,B] です。ここで、B は、ヒストグラムのビン数です。ビンの数は Upright プロパティと近傍の数 P によって異なります。

Upright ビンの数
true(P x P–1) + 3)
false(P + 2)

全体の LBP 特徴の長さ N は、セルの数とビンの数 B によって異なります。

N = numCells x B

参照

[1] Ojala, T., M. Pietikainen, and T. Maenpaa. “Multiresolution Gray Scale and Rotation Invariant Texture Classification With Local Binary Patterns.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 24, Issue 7, July 2002, pp. 971-987.

拡張機能

バージョン履歴

R2015b で導入