명암비(Contrast)란?
- 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이
- 컨트라스트, 대비라고 한다.
기본적인 명암비 조절 함수
효과적인 명암비 조절 함수 - np.clip
그레이스케일의 픽셀값을 조정하여 명암비를 조절하는 법으로, np.clip으로 saturate 연산을 구현하였고 아래의 방정식을 구현하였다.
alpha값을 변경해주면서 원하는 명암비를 설정해줄 수 있다.
💬 실습
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
alpha = 1.0
dst = np.clip((1 + alpha) * src - 128 * alpha, 0, 255).astype(np.uint8)
영상의 자동 명암비 조절
히스토그램 스트레칭(Histogram stretching)
- 영상의 히스토그램이 그레이스케일 전 구간에서 걸쳐 나타나도록 변경하는 선형 변환 기법
✔︎ 정규화 함수 - cv2.normalize
cv2.normalize(src,
dst,
alpha=None,
beta=None,
norm_type=None,
dtype=None,
mask=None)
- src : 입력 영상
- dst : 결과 영상
- alpha : (노름 정규화인 경우) 목표 노름 값
(원소 값 범위 정규화인 경우) 최솟값 - beta : (원소 값 범위 정규화인 경우) 최댓값
- norm_type : 정규화 타입. NORM_INF, NORM_L1, NORM_L2, NORM_MINMAX.
- dtype : 결과 영상의 타입
- mask : 마스크 영상
💬 실습
src = cv2.imread('Hawkes.jpg', cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
dst = cv2.normalize(src, None, 0, 255, cv2.NORM_MINMAX) # 히스토그램 스트레칭은 NORM_MINMAX
# 넘파이로 히스토그램 스트레칭 구현
gmin = np.min(src)
gmax = np.max(src)
dst = np.clip((src - gmin) * 255. / (gmax - gmin), 0, 255).astype(np.unit8))
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
'OpenCV' 카테고리의 다른 글
[OpenCV with Python]영상처리 : 특정 색상 영역 추출 (0) | 2022.02.01 |
---|---|
[OpenCV with Python] 영상처리 : 히스토그램 평활화 Histogram equalization (0) | 2022.02.01 |
[OpenCV with Python] 영상처리 : 히스토그램 분석 (0) | 2022.02.01 |
[OpenCV with Python] 영상처리 : 컬러 영상과 색 공간 (0) | 2022.02.01 |
[OpenCV with Python] 영상처리 : 영상의 산술 및 논리 연산 (0) | 2022.01.31 |