3. CLAHE(클라히)(Contrast Limited Adaptive Histogram Equalization)
- 평탄화를 하면 이미지의 밝은 부분이 날라가는 현상이 생길 수 있음
- 이미지의 일정한 영역을 나누어 평탄화를 적용
- 객체 = cv2.createCLAHE() => 객체.apply(영상)
평탄화 작업을 하게되면 단점이 이미 밝은사진같은경우에는 이미지가 날라가는 현상이 생길 수 있어서
이미지의 일정한 영역을 나누어서 평탄화를 적용하게 됩니다.
- 객체 = cv2.createCLAHE() => 객체.apply(영상)
를 사용합니다.
#히스토그램에서 특정 픽셀 값이 지나치게 많이 분포되어 있을 때 이를 제한하여과도한 대비가 생기지 않도록 합니다(1~4, 클수록 강한 대비)
# tileGridSize: 블록(타일)으로 나누고 각 타일에 대해 히스토그램 균등화를 개별적으로 수행합니다.
# 너무 작으면 경계가 생기거나 노이즈가 증가, 큰 타일 크기는 부드러운 대비 향상을 가져오지만 디테일을 살리기 어려움
import cv2
img = cv2.imread('./field.bmp')
img = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
img_eq = img.copy()
img_clahe = img.copy()
img = cv2.cvtColor(img, cv2.COLOR_YCrCb2BGR)
img_eq[:, :, 0] = cv2.equalizeHist(img_eq[:, :, 0])
img_eq = cv2.cvtColor(img_eq, cv2.COLOR_YCrCb2BGR)
#히스토그램에서 특정 픽셀 값이 지나치게 많이 분포되어 있을 때 이를 제한하여과도한 대비가 생기지 않도록 합니다(1~4, 클수록 강한 대비)
# tileGridSize: 블록(타일)으로 나누고 각 타일에 대해 히스토그램 균등화를 개별적으로 수행합니다.
# 너무 작으면 경계가 생기거나 노이즈가 증가, 큰 타일 크기는 부드러운 대비 향상을 가져오지만 디테일을 살리기 어려움
clahe = cv2.createCLAHE(clipLimit=4,tileGridSize=(4, 4))
img_clahe[:, :, 0] = clahe.apply(img_clahe[:, :, 0])
img_clahe = cv2.cvtColor(img_clahe, cv2.COLOR_YCrCb2BGR)
cv2.imshow('img', img)
cv2.imshow('img_eq', img_eq)
cv2.imshow('img_clahe', img_clahe)
cv2.waitKey()
여기서 자꾸 이미지가 색이 막 멋대로 나와서 이상해서 이유를 찾아보니
BGR2YCrCb -> YCrCb2RBG
RGB2YCrCb -> YCrCb2RGB
등 뭔가 잘못작성을 해서 이렇게 되더라구요. 정확하게 알고 어떻게 변환이 되는지 확인하고 생각하면서
코드를 작성했었어야됐는데 이 부분은 결과로 보이니 확 와닿고 다시 처음부터 보게되면서 반성했습니다.
##가운데 G는 똑같고 OpenCV에서의 색상만 변경이 되는겁니다
상황/도구색상 순서
일반적인 이미지 파일 | RGB |
OpenCV (기본) | BGR |
'AI 컴퓨터 비전프로젝트' 카테고리의 다른 글
[DL] cv2.inRange_hsv 색상추출 (0) | 2024.09.30 |
---|---|
[DL] 정규화 (0) | 2024.09.29 |
[DL] 균등화, 평탄화 등 이미지 변환 활용(이미지, 영상 품질관련)(2) (1) | 2024.09.27 |
[DL] 균등화, 평탄화 등 이미지 변환 활용(이미지, 영상 품질관련)(1) (0) | 2024.09.27 |
[DL] YOLO의 흐름 확인하기 좋은 복습 글 (3) | 2024.09.27 |