학습 자료

신호 및 이미지 처리 모듈

SciPy는 유용한 신호 처리와 이미지 처리 도구를 제공합니다.

이를 통해 시간/공간 데이터에 필터를 적용하고, 주파수를 분석하며, 이미지를 활용한 연산을 수행할 수 있습니다.

주요 모듈은 다음과 같습니다.

  • scipy.signal: 오디오, 시계열, 이미지 등 1D/2D 신호를 다룹니다.
  • scipy.ndimage: 고급 이미지 처리 기능을 제공합니다.

예제 1: 저역통과 필터링

signal.butter()로 저역통과 필터를 설계하고, signal.filtfilt()로 위상 지연 없이 적용합니다.

버터워스 저역통과 필터
import numpy as np import matplotlib.pyplot as plt from scipy import signal, misc # 샘플링 파라미터 fs = 500.0 # Hz t = np.arange(0, 1.0, 1/fs) # 잡음이 섞인 신호 생성 sig = np.sin(2*np.pi*5*t) + 0.5*np.sin(2*np.pi*50*t) # 저역통과 필터 설계 (차단 주파수 10 Hz) b, a = signal.butter(N=4, Wn=10/(fs/2), btype='low') # 필터 적용 (영위상 왜곡) filtered = signal.filtfilt(b, a, sig) # 결과 플로팅 plt.plot(t, sig, label="Original", alpha=0.5) plt.plot(t, filtered, label="Filtered", linewidth=2) plt.xlabel("Time [s]") plt.ylabel("Amplitude") # 진폭 plt.title("Low-Pass Butterworth Filter") # 저역통과 버터워스 필터 plt.legend() plt.show()

예제 2: 스펙트로그램

signal.spectrogram()을 사용해 시간에 따라 변하는 신호의 주파수 성분을 시각화합니다.

스펙트로그램
f, t_spec, Sxx = signal.spectrogram(sig, fs) plt.pcolormesh(t_spec, f, Sxx, shading='gouraud') plt.ylabel("Frequency [Hz]") # 주파수 plt.xlabel("Time [s]") # 시간 plt.title("Spectrogram") # 스펙트로그램 plt.show()

스펙트로그램은 오디오, 기계 진동, 지진파 등 시간에 따라 변하는 주파수 패턴을 분석할 때 유용합니다.


예제 3: 이미지 블러링

signal.convolve2d()로 가우시안 커널을 이용해 이미지를 흐리게 만듭니다.

합성곱으로 가우시안 블러 적용
# 샘플 이미지 불러오기 face = misc.face(gray=True) # 가우시안 블러 커널 생성 kernel_size = 15 sigma = 3.0 x = np.linspace(-sigma, sigma, kernel_size) gauss_kernel_1d = np.exp(-x**2 / (2 * sigma**2)) gauss_kernel_1d /= gauss_kernel_1d.sum() gauss_kernel_2d = np.outer(gauss_kernel_1d, gauss_kernel_1d) # 합성곱 적용 blurred_face = signal.convolve2d(face, gauss_kernel_2d, mode='same', boundary='symm') # 원본과 블러 이미지 표시 plt.subplot(1, 2, 1) plt.imshow(face, cmap='gray') plt.title("Original") plt.axis('off') plt.subplot(1, 2, 2) plt.imshow(blurred_face, cmap='gray') plt.title("Blurred") plt.axis('off') plt.show()

핵심 요약

  • 1D/2D 신호의 필터링과 주파수 분석에는 scipy.signal을 사용하세요.
  • 고급 이미지 처리 작업에는 scipy.ndimage가 적합합니다.
Quiz
0 / 1

SciPy의 신호 처리 모듈을 사용하면 위상 이동 없이 시계열 신호에 버터워스 저역통과 필터를 설계하고 적용할 수 있다.

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말