히스토그램 평활화 (equalizer) & 스트레칭 개념 및 실습
2022. 9. 1. 14:15ㆍIT/computer vision
SMALL
1. 배경 지식
- EQ 혹은 이퀄라이저(equalizer)
- MPS 플레이어에서 클래식, 헤비메탈, 재즈, 팝, 록 등으로 음색을 조정하는 탭에 있는 것
- 주파수 특성을 균등하게 보정하는 기기임
- 주파수를 조정할 수 있기 때문에 주파수 특성을 어느 특정의 목적에 맞추어 임의로 변화시켜 원하는 음색을 만들어 낼 수 있음
- 평활화(equaliztion)
- 인간의 눈은 영상의 밝기의 크기보다 대비가 증가할 때 인지도가 향상됨
- 평활화 알고리즘은 히스토그램 평활화의 사전적 의미인 "분포의 균등"이라는 방법을 이용해 명암 대비를 증가시킴
- 이를 통해 영상의 인지도를 높이며, 영상의 화질을 개선할 수 있음
- 히스토그램 스트레칭
- 히스토그램의 분포가 좁은 영상을 스트레칭 하여 히스토그램 분포를 넓게 만듦
- 반면, 히스토그램의 분포가 좁지는 않지만, 특정 부분에서 한쪽으로 치우친 명암 분포를 가진 영상들이 있을 수 있음
- 이런 영상들은 명암 분포가 좁지 않기 때문에 스트레칭으로는 문제가 해결되지 않음
- 히스토그램 평활화 알고리즘
- 특정 부분에서만 한쪽으로 치우친 명암 분포를 가진 영상을 히스토그램의 재분배 과정을 거쳐서 균등한 히스토그램 분포를 갖게 하는 알고리즘
- 영상의 히스토그램을 계산함
- 히스토그램 빈도값에서 누적 빈도수(누적합)을 계산함
- 누적 빈도수를 정규화(정규화 누적합) 함
- 결과 화소값 = 정규화 누적합 * 최대 화소값
- 예시
- 입력 영상에서 히스토그램 계산을 위해 화소값들의 빈도를 계산함
- 화소값 2를 가진 화소의 빈도수는 2
- 빈도수를 누적하여 누적 빈도수를 계산함
- 화소값 2인 경우, 화소값 0과 1의 빈도인 1과 5을 각각 자신의 빈도인 6과 누적시켜 결과적으로 12가 됨
- 이렇게 계속 진행하여 마지막 화소값인 7에 이르기까지 빈도수를 계속 누적함
- 그 결과 전체 화소 개수가 같은 16이 됨
- 각 화소의 누적 빈도수를 전체 화소 개수(16)로 나누어 정규화하여 정규화 누적합을 계산함
- 정규화 : 원소 중에서 최댓값으로 각 원소를 나누어 원소들의 값이 0~1 사이의 값을 가지게 표현하는 것임
- 평활화 결과 : 입력 화소의 정규화된 누적합 값에 화소 최댓값을 곱해줌
- 입력 화소 2인 경우, 정규화 누적합은 12/16 = 0.75이므로, 평활화 결과 화소값은 0.75*7 = 5.25이고, 결과 화소값은 5가 됨
- 입력 영상에서 히스토그램 계산을 위해 화소값들의 빈도를 계산함
2. 히스토그램 평활화
학습 목표 : Histogram Equalization(히스토그램 평탄화/평활화)를 이해하기
아래의 문제 풀이를 통해서 히스토그램 평탄화 과정을 마스터하시기 바란다. 아래의 입력 영상에 히스토그램 평탄화를 적용했을 때 결과 영상이 어떻게 되는지 픽셀 값을 채워 보시오. 단, 픽셀의 밝기 단계는 8단계로써 픽셀의 최대 값은 7로 가정한다. 교재(OpenCV-Python으로 배우는 영상처리 및 응용) 6장 251~253페이지를 참고해서 직접 풀어 보기 바란다. 그리고 입력영상과 결과영상의 히스토그램을 비교해 보기 바란다.
3. 입력, 결과 영상 히스토그램 비교
- 히스토그램
1. 배경 지식
- EQ 혹은 이퀄라이저(equalizer)
- MPS 플레이어에서 클래식, 헤비메탈, 재즈, 팝, 록 등으로 음색을 조정하는 탭에 있는 것
- 주파수 특성을 균등하게 보정하는 기기임
- 주파수를 조정할 수 있기 때문에 주파수 특성을 어느 특정의 목적에 맞추어 임의로 변화시켜 원하는 음색을 만들어 낼 수 있음
- 평활화(equaliztion)
- 인간의 눈은 영상의 밝기의 크기보다 대비가 증가할 때 인지도가 향상됨
- 평활화 알고리즘은 히스토그램 평활화의 사전적 의미인 "분포의 균등"이라는 방법을 이용해 명암 대비를 증가시킴
- 이를 통해 영상의 인지도를 높이며, 영상의 화질을 개선할 수 있음
- 히스토그램 스트레칭
- 히스토그램의 분포가 좁은 영상을 스트레칭 하여 히스토그램 분포를 넓게 만듦
- 반면, 히스토그램의 분포가 좁지는 않지만, 특정 부분에서 한쪽으로 치우친 명암 분포를 가진 영상들이 있을 수 있음
- 이런 영상들은 명암 분포가 좁지 않기 때문에 스트레칭으로는 문제가 해결되지 않음
- 히스토그램 평활화 알고리즘
- 특정 부분에서만 한쪽으로 치우친 명암 분포를 가진 영상을 히스토그램의 재분배 과정을 거쳐서 균등한 히스토그램 분포를 갖게 하는 알고리즘
- 영상의 히스토그램을 계산함
- 히스토그램 빈도값에서 누적 빈도수(누적합)을 계산함
- 누적 빈도수를 정규화(정규화 누적합) 함
- 결과 화소값 = 정규화 누적합 * 최대 화소값
-
- 입력 영상에서 히스토그램 계산을 위해 화소값들의 빈도를 계산함
- 화소값 2를 가진 화소의 빈도수는 2
- 입력 영상에서 히스토그램 계산을 위해 화소값들의 빈도를 계산함
- 빈도수를 누적하여 누적 빈도수를 계산함
- 화소값 2인 경우, 화소값 0과 1의 빈도인 1과 5을 각각 자신의 빈도인 6과 누적시켜 결과적으로 12가 됨
- 이렇게 계속 진행하여 마지막 화소값인 7에 이르기까지 빈도수를 계속 누적함
- 그 결과 전체 화소 개수가 같은 16이 됨
- 각 화소의 누적 빈도수를 전체 화소 개수(16)로 나누어 정규화하여 정규화 누적합을 계산함
- 정규화 : 원소 중에서 최댓값으로 각 원소를 나누어 원소들의 값이 0~1 사이의 값을 가지게 표현하는 것임
평활화 결과 화소값 = [입력 화소의 정규화 누적합 * 최대 화소값]
- 평활화 결과 : 입력 화소의 정규화된 누적합 값에 화소 최댓값을 곱해줌
- 입력 화소 2인 경우, 정규화 누적합은 12/16 = 0.75이므로, 평활화 결과 화소값은 0.75*7 = 5.25이고, 결과 화소값은 5가 됨
2. 히스토그램 평활화
5주차 학습목표는 Histogram Equalization(히스토그램 평탄화/평활화)를 이해하는 것이다. 아래의 문제 풀이를 통해서 히스토그램 평탄화 과정을 마스터하시기 바란다. 아래의 입력 영상에 히스토그램 평탄화를 적용했을 때 결과 영상이 어떻게 되는지 픽셀 값을 채워 보시오. 단, 픽셀의 밝기 단계는 8단계로써 픽셀의 최대 값은 7로 가정한다. 교재(OpenCV-Python으로 배우는 영상처리 및 응용) 6장 251~253페이지를 참고해서 직접 풀어 보기 바란다. 그리고 입력영상과 결과영상의 히스토그램을 비교해 보기 바란다.
3. 입력, 결과 영상 히스토그램 비교
- 히스토그램
- 예제 6.3.6 히스토그램 평활화 Code
LIST
'IT > computer vision' 카테고리의 다른 글
Sharpening Filter & Median Filtering 개념 및 실습 (0) | 2022.09.01 |
---|---|
소벨 (Sobel) filter 개념 및 적용 코드 실습 (0) | 2022.09.01 |