LBP(Local Binary Pattern)については、Local Binary Patterns with Python & OpenCV - PyImageSearchやLocal Binary Patternとその周辺(PDF)などを参照。
Pythonではscikit-imageに実装がある。
その他前回と同様。
import numpy as np import cv2 import glob from skimage import feature def lbp_hist(img): img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) lbp = feature.local_binary_pattern(img, 8, 1) hist = cv2.calcHist([np.float32(lbp)], [0], None, [256], [0, 256]) hist = cv2.normalize(hist, None, 0.0, 1.0, cv2.NORM_MINMAX) return hist # cv2.HISTCMP_CORREL cv2.HISTCMP_CHISQR # cv2.HISTCMP_INTERSECT cv2.HISTCMP_BHATTACHARYYA METHOD = cv2.HISTCMP_CORREL q_img = cv2.imread("101_ObjectCategories/airplanes/image_0001.jpg") q_hist = lbp_hist(q_img) for file in sorted(glob.glob("101_ObjectCategories/*/*.jpg")): t_img = cv2.imread(file) t_hist = lbp_hist(t_img) res = cv2.compareHist(q_hist, t_hist, METHOD) print(file, "%f" %res)
上位10件。
画像 | 距離(相関) |
---|---|
airplanes/image_0001.jpg | 1.000000 |
airplanes/image_0308.jpg | 0.997389 |
airplanes/image_0767.jpg | 0.996352 |
airplanes/image_0530.jpg | 0.996154 |
airplanes/image_0115.jpg | 0.996093 |
airplanes/image_0538.jpg | 0.996070 |
airplanes/image_0316.jpg | 0.995516 |
airplanes/image_0474.jpg | 0.995418 |
airplanes/image_0531.jpg | 0.994930 |
airplanes/image_0033.jpg | 0.994806 |