1) 연습문제 3
zero-interleaved matrix 함수 구현
교재에 머리 부분 배열을 알려준다.
그리고 문제에서 명령어의 순서를 사용해야 하기 때문에, resize를 이용해서는 진행하지 않았다.
세 가지 필터 정의
① Nearest
② Bilinear
③ Bicubic
교재는 zero-interleaved를 보여줬지만, 대신에 원본을 확대해보았다.
Nearest - aliasing 생성된 느낌이 든다.
Bilinear - aliasing이 생성되었다가 부드러워진 느낌이 든다.
Bicubic - 너무 흐려져서 Blur 처리된 느낌이 든다.
원본을 확대한 것은 Bilinear와 Nearest의 사이지만 Bilinear와 유사한 느낌이다.
2) 연습문제 5
2배는 많고 8배는 큰 거 같아서 적당히 4배로 정해서 진행했다.
확대 후 축소하면 원본 데이터로 돌아오지 못한다.
다른 필터도 궁금해서 진행해봤다.
진행 후 최대신호대잡음비(PSNR)로 품질 비교를 해봤다.
결과는 다음과 같다.
Nearest - 원본과 같다. 가까운 근처 값들을 이용해서 보간하기 때문인 것 같다.
Bilinear - 약 30.8이다. 선형 보간을 진행해서 원래 원본의 결과 값으로는 복구할 수 없다.
Bicubic - 약 36.3이다. 3차 곡선 보간을 진행하는데, 다시 축소한 값이 Bilinear보단 좋다.
직선보다는 곡선이 보간 진행에 도움을 주는 것 같다.
하지만, 원본의 결과값으로는 복구되지 못했다.
3) 연습문제 6
카메라맨 축소 확대 진행
결과 확인
축소 후 확대는 잃게 된 데이터들을 다시 가져올 수 없어서 품질이 많이 안 좋아졌다.
4) 연습문제 7
배경과 사각형을 만든 뒤 두 가지 필터로 각각 30도와 45도 회전을 진행하고 비교해보자
결과 값은 밑과 같다.
자꾸 subplot을 이상하게 하긴 하는데 같은 각도 다른 필터끼리 비교하면 Nearest 방식은 aliasing 현상이 심한 것을 알 수 있다. 그에 비해서 Bilinear 방식은 흐리고 부드럽게 진행되어 특히 45도는 원본과 비슷해 보일 정도이다.
5) 연습문제 8
위에서 진행했던 결과물을 다시 –30도, -45도만큼 돌렸다.
출력 결과는 위과 같다.
보다시피 Nearest는 회전할 때마다 aliasing 현상이 더욱 심해지는 것을 확인할 수 있다.
Bilinear는 자세히 보면 완벽하게 원본과 똑같지는 않지만, 원본과 상당히 유사할 정도로 깔끔하게 나온 것을 볼 수 있다.