机器视觉 Local Binary Pattern (LBP)
Local binary pattern (LBP),在机器视觉领域,是非常重要的一种特征。LBP可以有效地处理光照变化,在纹理分析,纹理识别方面被广泛应用。
LBP 的算法非常简单,简单来说,就是对图像中的某一像素点的灰度值与其邻域的像素点的灰度值做比较,如下图所示:
如果邻域像素值比该点大,则赋为1,反之,则赋为0,这样从左上角开始,可以形成一个bit chain,然后将该 bit chain 转换为一个十进制的数,用表达式可以表达如下:
其中,
s
表示一个阈值函数,满足如下关系:
通过这种转换,可以将一个像素点与邻域的差值关系用一个数表示,因为LBP 记录的是像素点与邻域像素的差值关系,所以光照变化引起像素值的同增同减不会改变LBP的大小,特别是在局部的区域,我们可以认为光照对图像造成的像素值变化是单向的,所以LBP可以很好的保存图像中像素值的差值关系。可以进一步将LBP 做直方图统计,这个直方图可以用来作为纹理分析的特征算子。
我们可以看到,
R
表示邻域的半径,
我们考虑最简单的 R = 1 , P = 8 的情况,LBP 映射成一个0-255之间的某一数值,如果用直方图表示,需要一个256维的数组在存储这个直方图。为了缩小存储空间,有人提出了 uniform pattern 的编码方式,根据一个 bit chain 中 0,1之间的转换次数定义了uniform pattern。如果一个 bit chain 中,0,1 之间的转换次数不超过两次,那么这个bit chain 就是 uniform pattern, 比如,00000000 转换次数为0, 00001111 转换次数为1, 00011100 转换次数为2, 01101100 转换次数为4, 01101010 转换次数为6,那些转换次数不超过两次的pattern 都属于uniform pattern,可以证明,绝大多数的binary pattern 都是uniform pattern,通过这种定义,对于 8 bit 的 LBP, 可以从256 维降到 59维,减少了90%。
LBP 的 code 可以在下面的网站上下载:
http://www.cse.oulu.fi/CMV/Downloads/LBPMatlab
参考文献
[1] D. Huang, C. Shan, M. Ardabilian, Y. Wang, and L. Chen, "Local Binary Patterns and Its Application to Facial Image Analysis A Survey, " Systems, Man, and Cybernetics, Part C: Applications and Reviews, IEEE Transactions on, vol. 41, pp. 765-981, 2011.
[2] T. Ojala, M. Pietikainen, and T. Maenpaa, "Multiresolution gray-scale and rotation invariant texture classification with local binary patterns," Pattern Analysis and Machine Intelligence, IEEE Transactions on, vol. 24, pp. 971-987, 2002.
関連
-
pipインストール時のエラー ERROR: EnvironmentErrorのため、パッケージをインストールできませんでした。[WinError 5] アクセス拒否 (解決済み)
-
カーネル再始動
-
モジュール 'matplotlib.mlab' には属性 'normpdf' がありません。
-
呉恩陀ディープラーニング授業後プログラミング問題解説(python)
-
ロジスティック回帰のエラー問題:警告メッセージ。1: glm.fit: アルゴリズムが集約されていない 2: glm.fit: 適合率が0か1の値で計算されている
-
ValueError: 解凍する値が足りない (期待値 2、取得値 1)
-
numpy詳細チュートリアル
-
WindowsへのTensorFlowのインストールと簡単な例
-
Anaconda Tsinghuaミラーソースの使用とPytorchのインストールで問題解決できず
-
predict_proba, predict, decision_function の scikit-learn toolkit での使用法。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ValueError: 入力に NaN、無限大、または dtype('float32'64) に対して大きすぎる値が含まれている 考えられる原因
-
Keras、TensorFlowのインポート時にTensorFlowのネイティブランタイムのロードに失敗しました。
-
Solve ImportError: cannot import name 'AipOcr' from 'aip'
-
RandomizedSearchCV と GridSearchCV で、fit メソッドを呼び出すと list オブジェクトに属性 'values' がないエラーが発生する。
-
tensorflowに一致するディストリビューションは見つかりませんでした。
-
Kerasを使ったテンソルの乗算と和算
-
tf.expand_dims および tf.squeeze 関数
-
pip install インストール [WinError 10061] ターゲットコンピュータが積極的に拒否するため、接続できません。(Win10) Windows(10) pip install install [WinError 10061] ターゲットコンピュータによる積極的な拒否のため接続できません。
-
シグモイドとソフトマックスの概要
-
[Tensorflow] 報告されたエラー。FailedPreconditionError。初期化されていない値を使おうとしている keep_prob_7