[Python] 데이터 처리와 이미지 분석 OpenCV Filtering

뽕칠이·2024년 1월 18일

Flitering

  • 이미지에 커널을 적용하여 이미지를 블러 처리하는 것이다.
  • 이미지를 흐리게 만들어서 노이즈 및 손상을 줄일 수 있다.
  • 특정 이미지에서 커널을 적용해 컨볼루션 계산을 통해 필터링을 수행할 수 있다.

직접 커널을 생성하여 필터 적용

import cv2
import matplotlib.pyplot as plt
import numpy as np

image = cv2.imread('black.jpg')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

size = 4
# 크기가 (1/4)x(1/4)인 커널 생성 
kernel = np.ones((size, size), np.float32) / (size**2)
print(kernel)

# 필터 적용
dst = cv2.filter2D(image, -1, kernel)
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()

Basic Blurring

Basic Kernel: 커널 안의 모든 값이 1인 커널

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('black.jpg')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

# 크기가 4x4인 커널로 블러 처리
dst = cv2.blur(image, (4, 4))
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()

Gaussian Blurring

Gaussian Kernel: 커널의 중심에 있는 값이 가장 크고 중심에서 멀어질수록 값이 작아진다.


import cv2

image = cv2.imread('black.jpg')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

# kernel_size: 홀수
dst = cv2.GaussianBlur(image, (5, 5), 0)
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()

0개의 댓글