[ 프로젝트 소개 ] 이 프로젝트는 OpenCV를 활용하여 이미지를 애니메이션 스타일로 변환하는 필터를 구현한 것입니다. 입력된 사진의 외곽선을 강조하고, 색상을 부드럽게 처리하여 마치 애니메이션 장면처럼 보이도록 합니다.
[ 파일 구조 ] 프로젝트 폴더
파일명 | 설명 |
---|---|
cv_hw2.py |
필터 적용 코드 |
README.md |
프로젝트 설명 |
image_statue.png |
원본 이미지 1 (성공한 이미지) |
output_statue.png |
변환된 이미지 1 (실패한 이미지) |
image_wave.png |
원본 이미지 2 (성공한 이미지) |
output_wave.png |
변환된 이미지 2 (실패한 이미지) |
[ 실행 방법 ]
-
OpenCV 및 NumPy 설치 pip install opencv-python numpy
-
Python 스크립트 실행 python cv_hw2.py
[ 변환 전후 이미지 ] (1) image_statue.png → output_statue.png
원본 이미지 | 변환 (성공) |
---|---|
![]() |
![]() |
(2) image_wave.png → output_wave.png
원본 이미지 | 변환 (실패) |
---|---|
![]() |
![]() |
각 원본 이미지는 애니메이션 스타일로 변환됩니다. 변환 과정에서는 외곽선을 강조하고, 색상을 부드럽게 처리하는 필터가 적용됩니다.
[ 코드 설명 (cv_hw2.py) ]
- 파일 목록을 설정하여 여러 개의 이미지를 처리하도록 구성
- 이미지 불러오기 및 그레이스케일 변환
- Median Blur 적용 (노이즈 제거)
- Adaptive Threshold 적용 (외곽선 강조)
- Dilation(팽창) 연산으로 외곽선 두껍게 만들기
- Bilateral Filter 적용 (색상을 부드럽게 유지)
- Sharpening Filter 적용 (이미지를 선명하게 변환)
- 색상과 외곽선을 결합하여 최종 변환 이미지 생성
- 결과 이미지 저장
[ 기대 효과 ]
- 원본 이미지보다 선이 더욱 뚜렷하고, 색상이 부드러운 애니메이션 스타일로 변환됩니다.
- 여러 필터를 조합하여 경계선을 강조하고, 색상을 단순화하는 효과를 얻을 수 있습니다.
[ 자신의 알고리즘의 한계점 ]
세밀한 디테일 보존이 어려움: 외곽선을 강조하면서도 색상을 단순화하기 때문에 작은 디테일이 사라질 수 있음. 일관되지 않은 결과: 이미지에 따라 필터 적용 결과가 다르게 나타날 수 있으며, 특정 이미지에서는 원하지 않는 결과(예: 과도한 경계선 또는 색 번짐)가 나올 수 있음. 연산 속도 문제: Bilateral Filter는 연산량이 많아 고해상도 이미지에서 속도가 느려질 수 있음. 복잡한 배경 처리 어려움: 배경이 복잡한 경우, 원하는 부분만 강조하기 어렵고 경계선이 깨질 수도 있음.