상세 컨텐츠

본문 제목

히스토그램 스트레칭(Histogram stretching)

영상처리/OpenCV Python

by cepiloth 2021. 5. 25. 11:01

본문

728x90
반응형

히스토그램 스트레칭Histogram Stretching

 영상의 히스토그램이 그레이스케일 전 구간에서 골고루 나타나도록 변경하는 선형 변환 기법이다. 보통 명암비가 낮은 영상은 히스토그램이 특정 구간에 집중되어 나타나게 되는데, 마치 고무줄을 늘이듯이 히스토그램을 잡아 펼쳐서 그레이스케일 전 구간에서 히스토그램 그래프가 나타나도록 변환하는 기법이 히스토그램 스트레칭이다. 결과적으로 히스토그램 스트레칭을 수행한 영상은 명암비가 높아져서 일반적으로 보기 좋은 사진 형태로 바뀌게 된다.

 

정규화 함수

OpenCV에서는 nomalize 는 함수를 제공한다.

#OpenCV 
/*
src : 입력 영상
dst : 결과 영상
alpha : 노름 정규화인 경우 목표 노름값, 원소 값 범위 정규화인 경우 최솟값
beta :  원소 값 범위 정규화인 경우 최댓값
norm_type : 정규화 타입. NORM_INF, NORM_L1, NORM_L2, NORM_MINMAX.
dtype : 결과 영상의 타입
mask : 마스크 영상
*/
cv2.normalize(src, dst, alpha=None, beta=None, norm_type=None, dtype=None, mask=None) -> dst
#OpenCV USAGE
dst = cv2.normalize(src, None, 0, 255, cv2.NORM_MINMAX)

 

nomalize 예제 코드

import sys
import numpy as np
import cv2


src = cv2.imread('Hawkes.jpg', cv2.IMREAD_GRAYSCALE)

if src is None:
    print('Image load failed!')
    sys.exit()

gmin, gmax, _, _ = cv2.minMaxLoc(src)
dst = cv2.normalize(src, None, 0, 255, cv2.NORM_MINMAX)
#dst = ((src - gmin) * 255. / (gmax - gmin)).astype(np.uint8)

cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()

cv2.destroyAllWindows()

728x90
반응형

'영상처리 > OpenCV Python' 카테고리의 다른 글

특정 색상 영역 추출 하기  (0) 2021.05.25
히스토그램 평활화(Histogram equalization)  (0) 2021.05.25
영상의 명암비(Contrast) 조절  (0) 2021.05.25
히스토그램 분석  (0) 2021.05.25
컬러 영상과 색 공간  (0) 2021.05.25

관련글 더보기

댓글 영역