- 이미지를 확대할 때는 정말 B-Spline만이 최고일까요?
- 컴퓨터야그/멀티미디어
- 2007. 10. 30. 13:55
이미지 확대/축소(resampling)시 주로 사용되는 알고리즘은 nearest neighbour(이것도 알고리즘인가?), bilinear, bicubic, lanczos 그리고, b-spline입니다.
NN의 경우는 알고리즘으로 분류하기 어려운 수준이므로 빼놓고,
bilinear, bicubic, lanczos, b-spline가 진짜 resampling 알고리즘인데,
일반적으로 축소시에는 bilinear가 화질이 더 낫고,
확대시에는 bicubic, lanczos 및 b-spline가 더 낫다고 합니다.
(bicubic<lanczos<b-spline)
물론 화질은 PSNR 이야기에서도 적었듯이, "주관적"인 영역입니다.
그래서, 약간은 더 객관적인 결과를 보여주는 PSNR을 끼워넣어서 시험해봤습니다.
방식은 아래와 같은 절차로 했습니다.
즉, 각 알고리즘이 없어진 데이터와 얼마나 유사한 결과를 계산하는가가 시험의 핵심인데, 결과는 b-spline보다는 lanczos가 PSNR이 높게 나왔습니다.
물론 b-spline가 NN보다도 낮게 나왔다는 점을 보면, 화질은 PSNR과 관계가 없다는 설명이 될 수도 있지만, 그래도 b-spline가 bicubic이나 lanczos와 비슷한 결과를 보여주기를 기대했는데, 기대가 무너져버렸네요...
결론적으로 b-spline의 결과가 화질이 더 나을 수도 있겠지만, 적어도 PSNR은 lanczos가 제일 높게 나왔다는 것입니다.
NN의 경우는 알고리즘으로 분류하기 어려운 수준이므로 빼놓고,
bilinear, bicubic, lanczos, b-spline가 진짜 resampling 알고리즘인데,
일반적으로 축소시에는 bilinear가 화질이 더 낫고,
확대시에는 bicubic, lanczos 및 b-spline가 더 낫다고 합니다.
(bicubic<lanczos<b-spline)
물론 화질은 PSNR 이야기에서도 적었듯이, "주관적"인 영역입니다.
그래서, 약간은 더 객관적인 결과를 보여주는 PSNR을 끼워넣어서 시험해봤습니다.
방식은 아래와 같은 절차로 했습니다.
1. 이미지를 지정해서 1/2로 NN으로 resizing(resampling이 아닌)
(이미지 정보의 3/4이 손실됩니다)
2. 축소된 이미지를 각각의 resampling 알고리즘으로 2배 확대
3. 원본 이미지와 축소후 다시 확대된 이미지의 PSNR 계산
(이미지 정보의 3/4이 손실됩니다)
2. 축소된 이미지를 각각의 resampling 알고리즘으로 2배 확대
3. 원본 이미지와 축소후 다시 확대된 이미지의 PSNR 계산
즉, 각 알고리즘이 없어진 데이터와 얼마나 유사한 결과를 계산하는가가 시험의 핵심인데, 결과는 b-spline보다는 lanczos가 PSNR이 높게 나왔습니다.
물론 b-spline가 NN보다도 낮게 나왔다는 점을 보면, 화질은 PSNR과 관계가 없다는 설명이 될 수도 있지만, 그래도 b-spline가 bicubic이나 lanczos와 비슷한 결과를 보여주기를 기대했는데, 기대가 무너져버렸네요...
결론적으로 b-spline의 결과가 화질이 더 나을 수도 있겠지만, 적어도 PSNR은 lanczos가 제일 높게 나왔다는 것입니다.
뱀다리
1. 처음 이 시험을 생각했던 이유가 널리 알려진바와 다르게 b-spline으로 resampling한 결과의 화질이 그다지 좋지 않았기 때문입니다. 너무 화질이 많이 뭉개져있어서 날카로운 느낌의 lanczos보다 많이 갑갑했기 때문입니다.
2. 모든 테스트는 CxImage 5.99c 라이브러리를 활용, Visual C++ 6.0으로 도구를 하나 만들어서 했습니다. CxImage는 정말 훌륭한 라이브러리라고 생각됩니다.
1. 처음 이 시험을 생각했던 이유가 널리 알려진바와 다르게 b-spline으로 resampling한 결과의 화질이 그다지 좋지 않았기 때문입니다. 너무 화질이 많이 뭉개져있어서 날카로운 느낌의 lanczos보다 많이 갑갑했기 때문입니다.
2. 모든 테스트는 CxImage 5.99c 라이브러리를 활용, Visual C++ 6.0으로 도구를 하나 만들어서 했습니다. CxImage는 정말 훌륭한 라이브러리라고 생각됩니다.
'컴퓨터야그 > 멀티미디어' 카테고리의 다른 글
단 한 명이 만든 3D 애니메이션 Killer Bean을 아시나요? (0) | 2008.03.08 |
---|---|
정말 빠른 이미지 뷰어 : 꿀뷰 3 (23) | 2008.02.26 |
Fractal graphics contest 결과 사이트들 (0) | 2008.01.19 |
DivX, Inc.가 드디어 AVC(H.264) 대열에 합류하는군요. 그런데... (0) | 2007.11.22 |
PSNR이란? (4) | 2007.10.30 |
Recent comment