article thumbnail image
Published 2022. 8. 10. 15:59
  • 주기(cycle, period) : 전자기파가 일정 시간마다 크기와 방향을 반복해서 바꾸며 반복되는 간격
  • 주파수(frequency) : 1초당 한 주기가 반복되는 횟수 (1초에 몇 번? 얼마나 자주?) - 주기의 역수

  • 진폭 = amplitude
  • 1Hz = 1/s
    • 패턴(주기)이 1초에 한 번 반복. 100Hz면 1초에 백 번 반복!
  • 고주파수 & 저주파수

 

 

  • 이미지에서의 주파수
    • 대표적인 신호 함수 y(t) = sin(2πft). f = frequency, t = time. f 가 높아질수록 (t=1)초에 자주 반복된다.

100 Hz(왼쪽), 50 Hz (오른쪽) - 소리로 따지자면 왼쪽이 더 높은 소리

 

  • 이처럼 신호를 temporal 하게 보았다면, spacial 하게도 볼 수 있다.
  • 공간 신호로 보자면 y(x) = sin(2πfx). f = frequency, x = spacial variable. f는 1/s 로 측정되는 대신에, 1/(공간단위)로 측정된다.
  • 푸리에 해석 “you can generate any signal by adding a number of sine and cosine signals with different amplitudes and frequencies“. 즉 어떤 함수 y(x)라도 다양한 주파수의 사인, 코사인 함수(Y(f))로 나타낼 수 있다.
    • y(x) = Function(Y(f)) / Y(f) = Reverse_Function(y(x))
  • 푸리에 변환 F : 도메인 x 의 신호를 주파수 도메인으로 변환하는 것이다.
    • Y(f) = F(y(x)) / y(x) = F_inv(Y(f))
  • 컴퓨터 이미지는 픽셀로 이루어져 있으며, 각 픽셀은 RGB 값을 가진다. (흑백의 경우 RGB에 대한 intensity(I)가 동일)
  • I(x) = sin(2πfx). f 는 800픽셀에 한 번 반복하는 주파수, 즉 픽셀당 0.00125번 반복.

I(x) = sin(2πfx). f 는 800픽셀에 열 번 반복하는 주파수, 즉 픽셀당 0.0125번 반복

 

이미지 생성하는 파이썬 코드

from PIL import Image, ImageDraw
from math import sin, pi

# 이미지
img = Image.new('RGB', (800,100), color='black')
draw = ImageDraw.draw(img)

# 주파수 정의 (공간 단위당 10회 반복)
f = 10 / img.width

# 너비 픽셀만큼 iterate : 픽셀 x에서 intensity 계산
for x in range(img.width):
  # 값의 범위 : -1 ~ +1
  # -pi/2 : intensity가 다음 라인에서 0으로 시작하도록
  y = sin(2*pi*f*x - pi/2) 
  
  # 0 ~ 255 로 설정
  i = (255+255*y)/2 
  draw.line((i, 0, i, img.height), fill=(int(i), int(i), int(i)))

img.show()

주파수가 높을수록 디테일이 세세하다는(finer) 것을 알 수 있음; 즉 이미지에서 주파수는 변화율(얼마나 급격하기 변하는지)을 가리킨다

 

대역폭(bandwidth) : 어떤 특정 역할을 실행할 수 있는 주파수의 범위. 즉, 신호가 동작하는 주파수의 (점유) 범위.

'인공지능' 카테고리의 다른 글

공부 계획  (0) 2022.05.01
복사했습니다!