Python Pillow Blur 처리 방법 3가지

Python Pillow Blur 처리 방법 3가지 BLUR, BoxBlur, GaussianBlur를 살펴보겠습니다.

Python Pillow Blur 처리 방법 3가지

Pillow Blur(블러) 처리 방법에는 3가지가 있습니다. 사전 정의된 필터 ImageFilter.BLUR, 그리고 BoxBlur와 GaussianBlur 입니다. 아래의 그림은 본 블로그의 포스팅을 캡처한 이미지로 아래의 이미지를 대상으로 블러 처리를 해 보도록 하겠습니다.

그림 1. Python Pillow Blur 처리를 위한 이미지 원본

Python Pillow Blur 필터

ImageFilter.BLUR

ImageFilter.BLUR는 사전 정의된 이미지 향상 필터입니다. ImageFilter.BLUR를 이용하는 경우에는 블러의 수준을 지정할 수는 없습니다.

from PIL import Image, ImageFilter

img = Image.open("test4.png")
img = img.filter(ImageFilter.BLUR)
img.save("output_blur.png")
Python
그림 2. Python Pillow Blur: ImageFilter.BLUR
그림 2. Pillow Blur: ImageFilter.BLUR

ImageFilter.BoxBlur

BoxBlur는 이름처럼 정사각형 픽셀의 평균값으로 블러처리를 하는 방식입니다. radius 값은 float 값으로 사용할 수 있습니다.

from PIL import Image, ImageFilter

img = Image.open("test4.png")
img = img.filter(ImageFilter.BoxBlur(radius=2))
img.save("output_boxblur2.png")

img = Image.open("test4.png")
img = img.filter(ImageFilter.BoxBlur(radius=8))
img.save("output_boxblur8.png")
Python

radius값을 2와 8로 주었을 때 각각의 이미지를 확인해 보겠습니다.

그림 3. Python Pillow Blur: BoxBlur(2)
그림 3. Pillow Blur: BoxBlur(2)
그림 4. Python Pillow Blur: BoxBlur(8)
그림 4. Pillow Blur: BoxBlur(8)

ImageFilter.GaussianBlur

이미지를 가우시안 커널을 근사화하는 일련의 확장된 상자 필터로 흐리게 만들어준다고 합니다. 가우시안 블러를 적용해 보도록 하겠습니다. BoxBlur와 마찬가지로 radius 값은 2와 8로 적용해 보았습니다.

from PIL import Image, ImageFilter

img = Image.open("test4.png")
img = img.filter(ImageFilter.GaussianBlur(radius=2))
img.save("output_gaussianblur2.png")

img = Image.open("test4.png")
img = img.filter(ImageFilter.GaussianBlur(radius=8))
img.save("output_gaussianblur8.png")
Python
그림 5. Python Pillow Blur: GaussianBlur(2)
그림 5. Pillow Blur: GaussianBlur(2)
그림 6. Python Pillow Blur: GaussianBlur(8)
그림 6. Pillow Blur: GaussianBlur(8)

정리

블러가 적용된 이미지들에 차이가 있는 것을 확인하셨죠? 필요한 Blur 필터를 이용해서 적용하면 되겠습니다.

관련 자료

Pillow의 ImageFilter Module 페이지를 참고했습니다. 가우시안 커널에 대한 자세한 내용은 Theoretical Foundations of Gaussian Convolution by Extended Box Filtering 문서를 참고하시면 됩니다.

같이 읽으면 좋은 글

Leave a Comment