LBPH(Local Binary Patterns Histograms) 알고리즘은 얼굴 인식에서 널리 사용되는 기법으로, 간단한 구조를 가지고 있다. 이 알고리즘은 이미지의 텍스처를 분석하여 특징을 추출하고, 이를 기반으로 얼굴을 인식하게된다.
1. Local Binary Patterns (LBP):
이미지를 작은 셀(cell)로 나누고, 각 셀의 중앙 픽셀 값을 기준으로 주변 픽셀들과 비교한다. 중앙값보다 크거나 같으면 1, 작으면 0으로 이진화하여 8비트 바이너리 패턴을 생성한다.
예를 들어, 아래와 같은 행렬에서 중앙값(8)을 기준으로 계산하면: 8이상이면 '1', 미만이면 '0'으로 변환한다.
그 후, 패턴을 시계방향으로 읽어 이진수(11100010)를 생성하고, 이를 십진수(226)로 변환하여 저장한다.
2. 히스토그램 생성:
각 셀에서 생성된 값들을 기반으로 히스토그램을 만들고, 이를 통해 이미지의 텍스처 정보를 표현한다.
다음 이미지는 Yale Face Database에서 제공된 데이터로, 이를 활용하여 LBPH(Local Binary Patterns Histograms) 알고리즘 실습을 진행하고자 한다.
LBPH를 사용하려면 먼저 이미지를 흑백으로 변환하고, 얼굴 데이터를 수집하는 과정이 필요하기 때문에 본 게시글에서는 전처리 과정까지 진행해보고자 한다.
from PIL import Image # PIL 라이브러리에서 Image 모듈을 가져옴 (이미지 처리용)
import cv2 # OpenCV 라이브러리 (이미지 및 영상 처리용)
import numpy as np # NumPy 라이브러리 (배열 및 행렬 연산)
import os # OS 모듈 (파일 및 디렉터리 조작용)
def get_image_data():
"""
yalefaces/train 폴더에서 얼굴 이미지를 불러와서 전처리하는 함수
- 이미지를 흑백(grayscale)으로 변환
- 이미지 데이터를 NumPy 배열로 변환하여 저장
- 파일명에서 ID를 추출하여 저장
- ID 리스트와 얼굴 이미지 리스트를 반환
"""
# train 폴더 내 모든 이미지 파일의 경로를 리스트로 저장
paths = [os.path.join(r"D:\Project\COMPUTER_VISION\PYTHON\Computer Vision Masterclass\Datasets\yalefaces\train", f)
for f in os.listdir(r"D:\Project\COMPUTER_VISION\PYTHON\Computer Vision Masterclass\Datasets\yalefaces\train")]
faces = [] # 얼굴 이미지 데이터를 저장할 리스트
ids = [] # 각 이미지의 ID 값을 저장할 리스트
# 파일 경로 리스트를 순회하면서 이미지 데이터를 로드하고 전처리
for path in paths:
image = Image.open(path).convert("L") # 이미지를 흑백(grayscale)으로 변환
image_np = np.array(image, "uint8") # 변환된 이미지를 NumPy 배열로 변환 (데이터 타입: uint8)
# 파일명에서 ID 값을 추출 (예: "subject01.gif" -> 1)
id = int(os.path.split(path)[1].split(".")[0].replace("subject", ""))
ids.append(id) # ID 리스트에 추가
faces.append(image_np) # 변환된 얼굴 이미지 데이터 추가
return np.array(ids), faces # NumPy 배열로 변환한 ID 리스트와 얼굴 이미지 리스트 반환
# 함수 실행하여 이미지 데이터 로드 및 전처리 수행
get_image_data()
'이론 공부 > COMPUTER VISION' 카테고리의 다른 글
Computer Vision - LAB 03_2. FACE RECOGNITION (HOG, CNN with Dlib) (0) | 2025.02.14 |
---|---|
Computer Vision - LAB 03_1. FACE RECOGNITION (LBPH) (0) | 2025.02.13 |
Computer Vision - LAB 02_2. FACE DETECT (CNN with Dlib) (0) | 2025.02.11 |
Computer Vision - LAB 02_1. FACE DETECT (HOG with Dlib) (0) | 2025.02.11 |
Computer Vision - HOG(History of Oriented Gradients) (0) | 2025.02.11 |