-
OpenCV와 Pillow의 이미지 리사이징 알고리즘 비교영상처리/3D computer vision 2025. 2. 6. 21:37728x90
📌 OpenCV의 이미지 리사이징 알고리즘
OpenCV에서는 cv2.resize() 함수를 사용하여 이미지를 리사이징할 수 있으며, 여러 가지 보간법(interpolation method)을 제공합니다.
🔹 OpenCV에서 제공하는 보간법
알고리즘설명특성
cv2.INTER_NEAREST 가장 가까운 픽셀 값을 사용 빠르지만 계단 현상(Aliasing) 발생 가능 cv2.INTER_LINEAR 2x2 픽셀을 선형 보간 속도와 품질 균형이 좋음 (기본값) cv2.INTER_CUBIC 4x4 픽셀을 이용한 3차 보간 선명한 결과를 제공하지만 속도가 느림 cv2.INTER_LANCZOS4 8x8 픽셀을 이용한 Lanczos 보간 가장 선명한 결과를 제공하지만 속도가 가장 느림 cv2.INTER_AREA 작은 이미지로 축소 시 유리 블러 현상을 줄이며, 다운샘플링에 최적화 아래는 각 보간법을 적용한 결과를 보여주는 예제 이미지입니다.
📌 Pillow의 이미지 리사이징 알고리즘
Pillow에서는 resize() 메서드를 사용하여 이미지를 조정하며, 다양한 리샘플링 방법을 지원합니다.
🔹 Pillow에서 제공하는 리샘플링 방법
알고리즘설명특성
Image.NEAREST 가장 가까운 픽셀 값 사용 계단 현상(Aliasing)이 심함 Image.BOX 박스 필터 방식 작은 이미지 축소 시 유리 Image.BILINEAR 선형 보간 방식 속도와 품질이 균형적 Image.HAMMING 해밍 필터 적용 저주파 성분 보존 Image.BICUBIC 3차 보간 방식 선명한 이미지 생성 Image.LANCZOS Lanczos 필터 사용 가장 높은 품질 제공 Pillow에서는 LANCZOS 방식이 가장 고품질을 제공하지만 속도가 느릴 수 있습니다.
📊 리사이징 알고리즘별 비교 결과
아래는 OpenCV와 Pillow의 다양한 리사이징 알고리즘을 적용한 후의 비교 결과입니다.
🔹 OpenCV 보간법 적용 결과
각 알고리즘을 적용한 결과를 비교해 봅시다.
1️⃣ cv2.INTER_NEAREST
- 특징: 픽셀 단위 샘플링이기 때문에 이미지가 뚜렷하게 보이지만 계단 현상이 심함.
- 활용: 속도가 중요한 경우, 간단한 도형 이미지에 유리.
2️⃣ cv2.INTER_LINEAR
- 특징: 빠른 속도와 적절한 품질 제공.
- 활용: 일반적인 리사이징에서 기본값으로 많이 사용됨.
3️⃣ cv2.INTER_CUBIC
- 특징: 3차 보간을 사용해 부드럽고 선명한 결과 제공.
- 활용: 이미지 확대 시 선명도를 높이고 싶을 때.
4️⃣ cv2.INTER_LANCZOS4
- 특징: 가장 선명한 결과를 제공하지만 연산량이 많음.
- 활용: 품질이 가장 중요한 경우.
🔹 Pillow 리샘플링 적용 결과
1️⃣ Image.NEAREST
- 특징: OpenCV의 INTER_NEAREST와 유사하며, 계단 현상이 발생.
- 활용: 레트로 스타일 그래픽에 유용.
2️⃣ Image.BILINEAR
- 특징: OpenCV의 INTER_LINEAR과 유사, 부드러운 결과 제공.
- 활용: 기본적인 리사이징에 적합.
3️⃣ Image.BICUBIC
- 특징: 3차 보간을 사용해 부드러운 결과 제공.
- 활용: 이미지 확대 시 가장 많이 사용됨.
4️⃣ Image.LANCZOS
- 특징: 고품질 리사이징을 위해 가장 선호됨.
- 활용: 사진 품질을 유지하면서 리사이징할 때.
🧐 어떤 리사이징 방법을 선택해야 할까?
✅ 빠른 속도가 필요할 때
- OpenCV: INTER_NEAREST 또는 INTER_LINEAR
- Pillow: NEAREST 또는 BILINEAR
✅ 품질이 중요한 경우
- OpenCV: INTER_CUBIC 또는 INTER_LANCZOS4
- Pillow: BICUBIC 또는 LANCZOS
✅ 작은 이미지로 축소할 때
- OpenCV: INTER_AREA
- Pillow: BOX
✍️ 결론
- OpenCV와 Pillow 모두 다양한 리사이징 방법을 제공하며, 각 방법마다 속도와 품질 차이가 존재합니다.
- 속도가 중요한 경우 NEAREST 또는 LINEAR 계열을, 품질이 중요한 경우 CUBIC 또는 LANCZOS 계열을 선택하는 것이 좋습니다.
- 특히 다운샘플링(이미지 축소)의 경우 INTER_AREA(OpenCV) 또는 BOX(Pillow)가 더 적합합니다.
이제 여러분의 프로젝트에서 적절한 리사이징 방법을 선택하는 데 도움이 되길 바랍니다! 😊
728x90'영상처리 > 3D computer vision' 카테고리의 다른 글
야경 사진 노이즈 제거 (0) 2024.02.22 Handheld Multi-Frame Super-Resolution (2019) (0) 2023.11.23 pyflow optical flow (0) 2023.11.01 RAFT: Recurrent All-Pairs Field Transforms for Optical Flow 돌려보기 (0) 2023.10.30 Dense Optical Flow algorithm 비교 (open cv) (2) 2023.10.15