이번에는 디지털 영상처리 교재의 문제를 풀어보자
1) Bit Plane을 이용한 영상 워터마킹
• 카메라맨 영상을 비트 평면으로 표현하고 LSB 평면을 이름 영상으로 교체하라.
• LSB 평면을 교체한 영상을 다시 8비트 그레이스케일 영상으로 저장하여 디스플레이 하라.
우선 밑과 같이 카메라맨 영상을 비트 평면으로 표현하였다.
LSB 평면의 경우 내 이름 영상으로 추가하였다.
'name.png' 파일의 크기를 resize로 맞춘 후 LSB 평면 생성한 이름 영상이다.
이제 LSB의 내 이름과 비트 평면을 합성해보자.
아마 보기에는 카메라맨 영상으로만 확인되지만, 안에는 내 이름이 숨겨져 있을 것이다.
2) 카메라맨(256*256) 영상을 각각 128*128과 64*64 크기의 유효 해상도를 가지는 영상으로 해상도를 변환하고 원본 영상과 PSNR을 비교하시오.
• imresize 함수 옵션: nearest, bilinear, bicubic 비교.
우선 카메라맨 영상을 옵션과 사이즈 별로 나눠 저장한다.
그 후 PSNR* 함수 결과를 출력해보자.
* PSNR : 최대 신호 대 잡음비(Peak Signal-to-Noise Ratio)
신호가 가질 수 있는 최대 전력에 대한 잡음의 전력을 나타낸 것이다.
위와 같은 식으로 나타낼 수 있는데, 여기서 MAXι은 픽셀의 최댓값이며, MSE는 평균 제곱 오차이다.
log 부분과 MAXι 부분은 값이 고정되어 있어서 MSE 값에 따라 PSNR의 값이 변하게 되는 것을 확인할 수 있다.
분모 자리에 위치하는 MSE는 높은 값일수록 분모가 커져 PSNR 값이 작아진다.
위 매트랩 실습 내용과 연계하여 확인하면 PSNR 값이 크면 영상의 잡음이 적은 것이며, 영상의 품질도 높다고 볼 수 있다.
결과로 정리하면 밑과 같다.
nearest : 1/2 psnr = 22.3695, 1/4 psnr = 19.5001
bilinear: 1/2 psnr = 24.6984, 1/4 psnr = 21.8190
bicubic : 1/2 psnr = 26.3265, 1/4 psnr = 22.6807
유효 해상도가 낮을수록 psnr은 낮아지는 것을 확인할 수 있다. 또한, nearest 방식보다는 bilinear 방식, bilinear 방식보다 bicubic 방식이 psnr이 더 높다.
따라서 bicubic > bilinear > nearest 순으로 영상의 품질이 좋다.
3) 256x256 카메라맨 영상의 양자화를 64와 8의 그레이 스케일로 변환하고 양자화에 의해 발생하는 현상에 대해 설명하시오.
우선 카메라맨 영상을 양자화하여 64, 8 그레이 스케일로 변환하였다.
출력 결과는 밑과 같다.
내 눈으로는 원본과 64 사이즈는 차이가 별로 없는데, 8 사이즈는 확실히 표현에 제한이 되어있는 것을 확인할 수 있었다.
특히 배경에 두 가지 색으로 나뉘는 것을 확인할 수 있는데, 이것을 False contour이라 한다.
화소 표현에 제한을 둘수록, False contour이 생기고 더 두드러질 것이다.
4) 카메라맨 영상을 밝기 128을 기준으로 이진영상으로 만들고 디더링 행렬 D2를 사용하여 halftoning을 적용하여 이진영상과 비교하시오.
우선 카메라맨의 이진 영상과 D2 Dithering 과정이다.
출력 결과는 밑과 같다. 결과를 확인해보자.
이진 영상으로 이루어진 카메라맨 사진은 보다시피 흑과 백 2개의 색으로 이루어져 false contour가 극단적인 것을 확인할 수 있다.
그에 비해 D2 디더링을 거친 영상은 왼쪽과 같이 흑과 백으로 이루어진 영상이지만, 행렬 화소의 위치를 섞어 눈속임을 통해
false contour를 제거하여 원본에 더 비슷하게 출력하고 있다.