Mẫu nhị phân cục bộ

**Mẫu nhị phân cục bộ** (Tiếng Anh: **Local binary patterns** hay **LBP**) là một loại  được dùng trong bài toán phân loại trong thị giác máy tính. LBP là trường hợp cụ thể của mô hình *Phổ kết cấu* (Texture spectrum) được đề xuất vào năm 1990. LBP được mô tả lần đầu tiên vào năm 1994. Kể từ đó, người ta thấy rằng đây là một đặc trưng hiệu quả nhằm phân loại *vân ảnh* (texture); người ta còn xác định rằng khi LBP được kết hợp với bộ mô tả HOG (), nó đã cải thiện đáng kể hiệu suất phát hiện trên một số tập dữ liệu. Một vài so sánh về các cải tiến của LBP gốc trong lĩnh vực trừ nền (background subtraction) đã được Silva và các cộng sự thực hiện vào năm 2015. Bouwmans và các cộng sự đã khảo sát đầy đủ về các phiên bản khác nhau của LBP.

Trong bài viết này, *mẫu nhị phân cục bộ* sẽ được viết tắt là LBP.

## Khái niệm

Ở dạng đơn giản nhất, vectơ đặc trưng LBP được tạo ra bằng cách sau:

* Trong vùng (cửa sổ) đang xét, chia thành các ô (ví dụ: 16x16 điểm ảnh mỗi ô).
* Đối với mỗi điểm ảnh trong một ô, so sánh điểm ảnh đó với từng điểm lân cận trong số  (trên cùng bên trái, ngay bên trái, dưới cùng bên trái, trên cùng bên phải, v.v.). So sánh các điểm ảnh theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ.
* Nếu giá trị của điểm ảnh trung tâm lớn hơn giá trị của điểm ảnh lân cận, hãy viết "0". Ngược lại, hãy viết "1". Kết quả sẽ là một số nhị phân 8 chữ số (thường được chuyển sang thập phân cho tiện).
* Tính  (*histogram*) của từng "số" xuất hiện trên một ô. Histogram này có thể được xem như một vectơ đặc trưng 256 chiều.
* Chuẩn hoá biểu đồ, phần này không bắt buộc.
* Ghép các histogram (đã chuẩn hóa) của các ô vào với nhau. Thao tác này sẽ tạo một vectơ đặc trưng cho toàn bộ cửa sổ.

Vectơ đặc trưng ở trên có thể được đưa vào thuật toán SVM (máy vectơ hỗ trợ),  hoặc một số thuật toán học máy khác để phân loại hình ảnh. Các bộ phân loại này có thể được dùng để nhận dạng khuôn mặt hoặc phân tích vân ảnh.

Một cải tiến hữu ích cho toán tử LBP gốc được gọi là *mẫu đồng nhất* (uniform pattern). Mẫu đồng nhất được dùng để giảm độ dài của vectơ đặc trưng và tạo ra một bộ mô tả đơn giản bất biến với sự quay ảnh (kháng được ảnh bị quay). Ý tưởng này xuất phát từ thực tế rằng trong ảnh vân, một số mẫu nhị phân xuất hiện phổ biến hơn so với những mẫu khác. Một mẫu nhị phân cục bộ được gọi là *đồng nhất* nếu mẫu nhị phân đó chứa nhiều nhất hai lần chuyển từ 0 sang 1 hoặc từ 1 sang 0. Ví dụ: 00010000 (2 chuyển đổi) là một mẫu đồng nhất, nhưng 01010100 (6 chuyển đổi) thì không. Trong phép tính histogram LBP, histogram có một xô (bin) riêng cho mỗi mẫu đồng nhất và tất cả các mẫu không đồng nhất được đưa hết vào cùng một xô. Bằng cách này, độ dài của vectơ đặc trưng cho một ô đơn lẻ giảm từ 256 xuống 59. 58 mẫu nhị phân đồng nhất tương ứng với các số nguyên 0, 1, 2, 3, 4, 6, 7, 8, 12, 14, 15, 16, 24, 28, 30, 31, 32, 48, 56, 60, 62, 63, 64, 96, 112, 120, 124, 126, 127, 128, 129, 131, 135, 143, 159, 191, 192, 193, 195, 199, 207, 223, 224, 225, 227, 231, 239, 240, 241, 243, 247, 248, 249, 251, 252, 253, 254 và 255.

## Ứng dụng
Mẫu nhị phân cục bộ được ứng dụng trong phân loại vân ảnh, nhận dạng con người, nhận dạng khuôn mặt và trừ nền (background subtraction).

## Các mở rộng

* Mẫu nhị phân cục bộ quá đầy (Over-Complete Local Binary Patterns – OCLBP): OCLBP là một biến thể của LBP đã được chứng minh là cải thiện hiệu suất tổng thể trong xác minh khuôn mặt. Khác với LBP, OCLBP sử dụng các khối liền kề chồng chéo lên nhau. Về mặt hình thức, cấu hình của OCLBP được ký hiệu là S : (a, b, v, h, p, r): một hình ảnh được chia thành a×b khối với độ chồng chéo dọc là v và độ chồng chéo ngang là h, sau đó các mẫu đồng nhất LBP(u2,p,r) được trích xuất từ tất cả các khối. Hơn nữa, OCLBP bao gồm nhiều cấu hình khác nhau. Ví dụ, trong bài báo gốc, các tác giả đã sử dụng ba cấu hình: S : (10,10,12,12,8,1), (14,14,12,12,8,2), (18,18,12,12,8,3). Ba cấu hình này xem xét ba kích thước khối: 10×10, 14×14, 18×18 và tỷ lệ chồng chéo một nửa dọc theo hướng dọc và ngang. Các cấu hình này được nối với nhau để tạo thành một vector đặc trưng 40877 chiều từ một ảnh có kích thước 150x80.
* Mẫu nhị phân cục bộ chuyển tiếp (Transition Local Binary Patterns – tLBP): giá trị nhị phân của LBP mã hoá chuyển tiếp được tạo thành từ các phép so sánh điểm ảnh lân cận theo chiều kim đồng hồ đối với tất cả các điển ảnh ngoại trừ điểm trung tâm.
* Mẫu nhị phân cục bộ mã hoá hướng (Direction coded Local Binary Patterns - dLBP): dLBP mã hoá sự thay đổi cường độ dọc theo bốn hướng cơ bản thông qua điểm ảnh trung tâm bằng hai bit.
* LBP đa khối (Multi-block LBP): hình ảnh được chia thành nhiều khối, một histogram LBP được tính toán cho mỗi khối và được nối lại thành histogram cuối cùng.
* Mẫu nhị phân cục bộ theo thể tích (Volume Local Binary Pattern - VLBP): VLBP xem xét các vân ảnh động là một tập hợp các thể tích trong không gian (X,Y,T) trong đó X và Y biểu thị tọa độ không gian và T biểu thị chỉ số của khung hình. Vùng lân cận của một pixel do đó được xác định trong không gian ba chiều, và các  (texton) thể tích có thể được trích xuất thành các histogram.
* RGB-LBP: Toán tử này được tạo ra bằng cách tính LBP của từng kênh trong không gian màu RGB, và sau đó nối các kết quả lại với nhau.

## Cài đặt

* Cascade Classifiers trong thư viện OpenCV hỗ trợ LBP kể từ phiên bản 2.
* dlib, một thư viện C++ mã nguồn mở: xem cài đặt.
* scikit-image, một thư viện Python mã nguồn mở, cung cấp một cài đặt thuật toán LBP viết bằng Cython.

## Xem thêm

* 
* Phương pháp mô hình nhị phân cục bộ (LBP) trong Scholarpedia
* 

## Tham khảo