1) 다음의 작은 영상은 0~19 범위의 그레이 값들을 가지고 있다. 그레이 레벨 히스토그램과 이 히스토그램을 평활화하는 사상(mapping)을 계산하라. 히스토그램 평활화를 수행한 새로운 영상에 대해서 아래와 같은 형태의 8 X 8 그레이 값들의 격자를 만들어라.
기존 8 X 8 그레이 값 |
위 내용을 프로그래밍하여 결과를 비교해보자.
우선 원본과 직접 평활화한 영상을 비교하면 히스토그램이 전반적으로 펼쳐져 있는 것을 확인할 수 있다.
마지막은 프로그래밍으로 진행한 평활화인데 범위가 0~19가 아니라 0~255로 표현되어 있는 것을 확인할 수 있다.
(그래서 axis([0 9 0 15])를 추가했다.)
2) 앞서 변환한 카메라맨 인덱스 영상을 입력으로 사용하여 히스토그램 평활화 알고리듬을 실행하는 프로그램을 작성하라.
결과는 밑과 같다.
인덱스 함수는 이전 문제에서도 보았듯이 좌 편향된 데이터를 보여줬다.
스트레칭은 그러한 편향을 전체적으로 펼쳐서 대비를 적절하게 하였다.
마지막으로 평활화 함수를 이용하여 퍼져있지만 몰려있는 막대들을 더욱 퍼트려서 전체적으로 좋은 품질의 영상을 보여주고 있다.
(대비가 더 좋아졌다고 할 수 있다.)
값들의 높이 또한 비슷해진 것을 확인할 수 있는데, 이 부분이 스트레칭 함수와의 차이점인 것 같다.
3) 연습문제13
– 교재 78쪽 그림4.9의 원데이터를 플롯하라.
– 문제의 히스토그램 스트레칭 함수를 LUT로 만들고 스트레칭 함수를 플롯하라.
– LUT로 히스토그램을 확장하고 결과 데이터를 플롯하라.
위는 원 히스토그램이고 옆에는 스트레칭 함수 적용한 그래프가 있다.
그래프를 참고하여 원데이터를 플롯하고 스트레칭 함수를 LUT으로 만들었다. 결과는 아래 명령과 같다.
스트레칭 함수 플롯은 밑의 그래프와 같다.
LUT을 확인해볼 수 있다.
y와 확인한 LUT을 가지고 히스토그램을 확장시키면 밑의 결과와 같다.
보다시피 히스토그램이 전체적으로 평활화된 것을 확인할 수 있다.