- 주기(cycle, period) : 전자기파가 일정 시간마다 크기와 방향을 반복해서 바꾸며 반복되는 간격
- 주파수(frequency) : 1초당 한 주기가 반복되는 횟수 (1초에 몇 번? 얼마나 자주?) - 주기의 역수
- 진폭 = amplitude
- 1Hz = 1/s
- 패턴(주기)이 1초에 한 번 반복. 100Hz면 1초에 백 번 반복!
- 고주파수 & 저주파수
- 이미지에서의 주파수
- 대표적인 신호 함수 y(t) = sin(2πft). f = frequency, t = time. f 가 높아질수록 (t=1)초에 자주 반복된다.
- 이처럼 신호를 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) : 어떤 특정 역할을 실행할 수 있는 주파수의 범위. 즉, 신호가 동작하는 주파수의 (점유) 범위.