import cv2
# 이미지 읽기
src = cv2.imread('파일경로', cv2.IMREAD_COLOR)
# bgr 색공간 이미지를 lab 색공간 이미지로 변환
lab = cv2.cvtColor(src, cv2.COLOR_BGR2LAB)
# l, a, b 채널 분리
l, a, b = cv2.split(lab)
# CLAHE 객체 생성
clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8, 8))
# CLAHE 객체에 l 채널 입력하여 CLAHE가 적용된 l 채널 생성
l = clahe.apply(l)
# l, a, b 채널 병합
lab = cv2.merge((l, a, b))
# lab 색공간 이미지를 bgr 색공간 이미지로 변환
cont_dst = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)
# 원본, 대비 증가 이미지 화면 출력
cv2.imshow('org', src)
cv2.imshow('Increased contrast', cont_dst)
# 화면 출력창 대기/닫기
cv2.waitKey()
cv2.destroyAllWindows()
이미지 색공간 변환
cv2.cvtColor(src, code[, dst[, dstCn]])
Parameter | Description |
---|---|
src | 색공간을 변환할 이미지 |
code | 색공간 변환 코드 |
dst | 출력 이미지(src와 크기, 깊이 같음) |
dstCn | 대상 이미지의 채널 수 |
Return : 이미지
채널 분리
channel1, channel2, channel3= cv2.split(src)
Parameter | Description |
---|---|
src | 채널을 분리할 이미지 |
Return : 각 채널값을 출력하면 흑백 이미지 출력
채널 병합
cv2.merge((channel1, channel2, channel3))
Parameter | Description |
---|---|
channel1, channel2, channel3 | 병합할 채널 |
Return : 이미지
CLAHE 객체 생성
clahe = cv2.createCLAHE(clipLimit, tileGridSize)
Parameter | Description |
---|---|
clipLimit | 히스토그램의 높이를 제한하는 값 |
tileGridSize | 타일 그리드 크기 *default : 8 x 8 |
Return : CLAHE 객체
CLAHE 객체에 l 채널 입력하여 CLAHE가 적용된 l 채널 생성
clahe.apply(src)
Parameter | Description |
---|---|
src | CLAHE를 적용할 이미지 |
Return : 이미지
채널 | 축 |
---|---|
L(luminosity) | 명도축 |
a | 초록(Green) 의 보색(a complementary color)축 |
b | 파랑(Blue) 의 보색(a complementary color)축 |