[OpenCV] Basic 8 - 이미지 블러 처리 (Blur)
반응형
Blur(블러)는 이미지를 부드럽게 만들어주는 필터로, 노이즈를 제거하거나 이미지의 중요한 부분을 강조할 때 사용합니다. 예를 들어, 사진에서 배경을 부드럽게 처리하여 피사체에 집중하게 만들고 싶을 때 유용합니다. OpenCV에서는 다양한 블러 방법을 제공합니다.
Import packages
import cv2
import numpy as np
import matplotlib.pyplot as plt
Function to Display Images in Jupyter Notebook
Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의합니다.
def img_show(title='image', img=None, figsize=(8, 5)):
plt.figure(figsize=figsize)
if type(img) == list:
titles = title if type(title) == list else [title] * len(img)
for i in range(len(img)):
rgbImg = cv2.cvtColor(img[i], cv2.COLOR_GRAY2RGB) if len(img[i].shape) <= 2 else cv2.cvtColor(img[i], cv2.COLOR_BGR2RGB)
plt.subplot(1, len(img), i + 1)
plt.imshow(rgbImg)
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
else:
rgbImg = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB) if len(img.shape) < 3 else cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(rgbImg)
plt.title(title)
plt.xticks([]), plt.yticks([])
plt.show()
Load Image
이미지를 불러옵니다.
cv2_image = cv2.imread('asset/images/test_image.jpg', cv2.IMREAD_COLOR)
Blur
OpenCV에서 이미지를 블러 처리하는 방법으로는 주로 GaussianBlur, MedianBlur, BilateralFilter 등이 있습니다. 각 방법은 서로 다른 효과를 제공하므로, 목적에 맞는 블러 방법을 선택할 수 있습니다.
Gaussian Blur
가장 일반적인 블러 방식으로, 가우시안 커널을 사용해 주변 픽셀의 평균값을 계산하여 이미지를 부드럽게 만듭니다.
gaussian_blur = cv2.GaussianBlur(cv2_image, (15, 15), 0)
img_show("Gaussian Blur", gaussian_blur)
Median Blur
노이즈 제거에 효과적이며, 특히 이미지 내 점 형태의 노이즈를 제거하는 데 유용합니다. 커널 내의 중간값으로 픽셀 값을 대체합니다.
median_blur = cv2.medianBlur(cv2_image, 15)
img_show("Median Blur", median_blur)
Bilateral Filter
엣지를 유지하면서 블러를 적용하는 방법으로, 고급스러운 블러 처리가 필요할 때 사용됩니다. 공간적인 거리에 따라 가중치를 주기 때문에 엣지가 뚜렷하게 남습니다.
bilateral_blur = cv2.bilateralFilter(cv2_image, 15, 75, 75)
img_show("Bilateral Filter", bilateral_blur)
위와 같이 다양한 블러 기법을 사용해 이미지를 부드럽게 처리할 수 있습니다. 각 방법은 특유의 효과를 가지고 있으므로, 작업 목적에 따라 적절한 블러 방식을 선택하면 좋습니다.
반응형
'Tech & Development > Image Processing' 카테고리의 다른 글
[OpenCV] Basic 10 - 이미지 색상 변환 (Color Conversion) (1) | 2024.11.16 |
---|---|
[OpenCV] Basic 9 - 이미지 경계선 검출 (Edge Detection) (0) | 2024.11.15 |
[ OpenCV ] Basic 7 - 이미지 자르기 (Crop) (0) | 2022.11.21 |
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize) (0) | 2022.03.02 |
[ OpenCV ] Basic 5 - 이미지 상하, 좌우 대칭 (Flip) (0) | 2022.03.02 |
댓글
이 글 공유하기
다른 글
-
[OpenCV] Basic 10 - 이미지 색상 변환 (Color Conversion)
[OpenCV] Basic 10 - 이미지 색상 변환 (Color Conversion)
2024.11.16 -
[OpenCV] Basic 9 - 이미지 경계선 검출 (Edge Detection)
[OpenCV] Basic 9 - 이미지 경계선 검출 (Edge Detection)
2024.11.15 -
[ OpenCV ] Basic 7 - 이미지 자르기 (Crop)
[ OpenCV ] Basic 7 - 이미지 자르기 (Crop)
2022.11.21 -
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize)
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize)
2022.03.02