본문 바로가기

난 이 분야 전문가야!/OpenCV

컴퓨터비전인강 3주차:: 영상에서의 히스토그램

Ch 03. 기본적인 영상 처리 기법 - 04. 히스토그램 분석

Ch 03. 기본적인 영상 처리 기법 - 05. 영상의 명암비 조절

Ch 03. 기본적인 영상 처리 기법 - 06. 히스토그램 평활화

Ch 04. 필터링 - 01. 필터링 이해하기

 

오늘의 영상에서의 히스토그램이 어떻게 사용되는지 영상에서의 히스토그램 연산법으로

어떤 변화가 생기는 지에 대해 공부해 보았습니다.

 

 

>> 영상에서의 히스토그램

 

각각의 값에 해당하는 픽셀을 시각화 해서 표시해논 그래프

 

>> 정규화된 히스토그램

 

작은 크기의 영상과 큰 크기의 영상을 비교할 때 애매한 경우가 생김

 

이 히스토그램을 봤을 때 영상에서 어느 정도의 밝기로 구성이 되어있다는 것을 파악할 수 있다.

왼쪽에서부터 0으로 시작하여 가장 오른쪽의 값은 255이다. 그렇기 때문에 히스토그램이 왼쪽으로 뭉쳐있을 경우 어두운 영상이라고 볼 수 있고 반대로 오른쪽에 기운 히스토그램은 밝은 영상이라고 볼 수 있다.

그리고 히스토그램의 폭이 작을 경우 영상이 흐리거나 뿌옇다는 것을 알 수 있다.

 

>> 히스토그램 함수

 

cv2.calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None)

channel: 히스토그램을 구할 채널을 나타내는 리스트 R값만 보고 싶은 경우 [0] 입력

mask: 특정 부위의 히스토그램을 구하고 싶은 경우 전체를 구하려면 None을 입력

 

명암비

밝은 곳과 어두운 곳 사이에 드러나는 발기 정도의 차이

컨트라스트, 대비

명암비를 적당히 올려서 조금 더 선명한 영상을 만들기도 한다.

명암비를 계산할 때는 주로 곱셈 연산을 사용함

 

히스토그램 스트레칭

 

영상의 히스토그램이 gray scale 전 구간에서 걸쳐 나타나도록 변경하는 선형 변환 기법

히스토그램을 양옆으로 쭉 늘린다고 생각하면 된다.

정규화 함수

cv2.normalize(src, dst, alpha=None, beta=None, norm_type=None, dtype=None, mask=None)

여기서 norm_type: NORM_MINMAX를 지정해주면 히스토그램 스트레칭이 일어난다.

 

히스토그램 평활화

히스토그램이 gray scale 전체 구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법

히스토그램 균등화, 균일화, 평탄화 라고도 불림

 

cv2.equalizeHist(src, dst=None)

 

히스토그램 스트레칭을 bin 사이를 균일하게 하여 펼치지만 평활화의 경우 픽셀 값의 빈도가 높은 수록 조금 더 넓게 펼친다.

 

컬러 영상에 적용법

 

각각 YCrCb로 나누어 평활화를 진행하고 다시 이것을 병합한다.

rgb로 할 경우 색이 바뀌는 경우가 생긴다.

 

 

>> 필터링

 

영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업

 

> 주파수 공간에서의 필터링

 

공간적 필터링 (주로 마스크 연산을 이용함)

마스크 연산:

1x3, 3x1, 3x3 등 다양한 형태의 행렬로 이루어진 마스크가 있지만 주로 3x3 행렬의 마스크를 사용한다.

마스크의 형태와 값에 따라 필터의 역할이 결정된다.

    영상 부드럽게 만들기

    영상 날카롭게 만들기

    edge 검출하기

    잡음 제거

 

 

 

 

강의 링크: bit.ly/2NTHHz7

728x90