영상에서 샘플링(sampling)이란, 연속적인(아날로그) 영상을 이산적인(디지털) 데이터로 변환할 때 공간적으로 일정 간격으로 신호를 추출하는 과정을 말한다.
1. 기본 개념
실제 세상에서 빛이 물체에 반사되어 들어오는 영상 신호는 연속적인 빛의 세기(아날로그 신호)이다.
그러나 컴퓨터는 연속적인 값을 직접 다룰 수 없기 때문에, 일정한 간격으로만 값을 선택(샘플)하여 이산적인 데이터 형태로 저장해야 한다.
이때 각 샘플은 하나의 픽셀(pixel)로 대응된다.
샘플링 : 연속된 빛 신호를 일정한 간격으로 끊어서 픽셀 단위로 표현하는 과정
2. 공간적 샘플링(Spatial Sampling)
영상의 경우, 시간에 따라 변화하는 신호가 아니라 공간 상의 밝기 분포를 다루므로,
샘플링은 공간 좌표(x, y) 방향으로 이루어진다.
- 원래 영상이 연속 함수 f(x,y라고 하면,
샘플링 후의 디지털 영상은 \(f[m, n] = f(mT_x, nT_y)\) 로 표현된다.
여기서 는 각각 x축과 y축의 샘플 간격(즉, 픽셀 간 거리)이다. - 간격이 좁을수록(샘플링 주파수가 높을수록) 해상도가 높고,
간격이 넓을수록(샘플링 주파수가 낮을수록) 해상도가 떨어진다.
3. 시간적 샘플링(Temporal Sampling)
영상이 아니라 동영상의 경우에는,
시간의 연속적인 변화를 일정한 간격으로 끊어서 프레임 단위로 저장한다.
이것이 “프레임레이트(Frames per Second, FPS)”로 표현되는 시간적 샘플링이다.
4. 샘플링과 양자화(Quantization)의 차이
샘플링은 “어디서 값을 가져올지”를 결정하는 과정이고,
양자화(Quantization)는 “그 값을 몇 단계로 저장할지”를 결정하는 과정이다.
| 샘플링(Sampling) | 연속 신호 중 일부 위치에서 값을 선택 | 픽셀 격자 생성 |
| 양자화(Quantization) | 샘플의 세기(밝기)를 일정한 단계로 근사 | 각 픽셀의 밝기 값 저장 (예: 0~255) |
예를 들어,
카메라 센서가 4000×3000 해상도로 이미지를 찍는다면
→ 이건 공간 샘플링 단계이다.
각 픽셀의 밝기를 8비트(256단계)로 저장한다면
→ 이건 양자화 단계이다.
5. 샘플링이 너무 적으면 생기는 문제: 에일리어싱(Aliasing)
샘플링 간격이 너무 크면, 즉 샘플링 주파수가 낮으면
원래 신호의 고주파(세밀한 변화)를 제대로 표현하지 못하고,
잘못된 패턴(거짓 무늬, alias)이 나타난다.
이를 방지하기 위해 나이퀴스트 이론을 적용한다.
“샘플링 주파수는 원래 신호의 최대 주파수의 두 배 이상이어야 한다.”
영상에서는 이를 위해 안티에일리어싱(Anti-aliasing) 필터를 사용하거나
적절한 해상도로 이미지를 저장한다.
6. 정리
| Sampling | 연속적인 빛 신호를 일정 간격으로 나누어 픽셀 격자로 변환 |
| Quantization | 각 픽셀의 밝기를 이산적인 숫자 값(예: 0~255)으로 변환 |
| 결과 | 연속적인 아날로그 영상 → 디지털 영상으로 저장 |
| 주의점 | 샘플링 간격이 너무 넓으면 해상도 저하 및 에일리어싱 발생 |
즉,
“샘플링이란, 연속적인 빛의 신호를 일정한 공간적 간격으로 나누어
픽셀 단위의 디지털 영상으로 표현하는 과정이다.”
FFT (Fast Fourier Transform ) 고속 푸리에 변환
푸리에 변환은 기본적으로 시간 도메인(Time Domain)을 주파수 도메인(Frequency Domain)으로 변환시키는, 즉 시간에 대한 함수(혹은 신호)를 구성하고 있는 주파수 성분으로 분해하는 과정이다.
우리는(사람은) 시간 도메인에서 살아간다.
그리고 모든 신호와 함수는 시간을 토대로 흘러간다.
하지만 실제로 우리가 해당 신호 혹은 함수를 분석하고 사용하기 위해서는 그 신호의 주기를 알아야 한다.
Fourier Transform


- 파형은 일정한 주기를 가지고 있다.
- 파형의 성질을 적절히 수량화하면 분류기가 두 신호를 분류하는데 쓸모 있는 특징이 될 수 있다.
- Fourier transform : 어떤 신호를 sin과 cos으로 이루어진 다양한 주기함수로, weighed sum으로 표현할 수 있는 것
FFT 분석은 왜 그레이스케일(또는 luminance) 기준으로 해야 하는가
(1) FFT는 색상(channel) 정보를 다루지 않는다
- FFT는 **각 채널의 밝기 변화 패턴(강도)**를 주파수로 변환하는 수학적 연산이다.
- RGB 각각에 대해 FFT를 하면, 세 채널의 위상·주파수 성분이 달라서 스펙트럼이 뒤섞이고 스파이크가 불분명해진다.
- 특히 periodic noise(사인 간섭)는 RGB 채널에 동일하게 추가되지 않기 때문에, 합성하면 스파이크가 흐려진다.
(2) 색상 정보보다 밝기(luminance)가 주파수 해석의 핵심이다
- 인간 시각은 주파수 변화(에지, 질감 등)를 밝기(luminance) 기반으로 인식한다.
- 따라서 주기적 노이즈(밝기 진동)도 luminance 성분에 나타난다.
- 색상(Hue, Saturation)은 저주파 영역에 머무는 경우가 많고, FFT로 분석해도 의미 있는 주기 패턴이 잘 드러나지 않는다.
(3) 주파수 공간은 복소수 기반이며, 3채널을 동시에 다루기 어렵다
- FFT 결과 F(u,v)F(u,v)는 복소수이므로, RGB 전체를 한 번에 FFT하면
(u,v)(u,v)마다 3개의 복소수 벡터가 생기고 해석이 불가능에 가깝다. - “노이즈 스파이크”를 찾으려면 단일 스칼라(밝기) 스펙트럼으로 단순화해야 한다.
(4) luminance 변환의 실제 방법
- RGB → 그레이스케일 변환은 단순 평균이 아니라 가중합을 사용하는 것이 가장 일반적이다.
- Y = 0.299R + 0.587G + 0.114B
- OpenCV에서 cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)가 이 변환을 수행한다.
- 이렇게 얻은 Y 채널(1채널 영상)을 FFT에 입력한다.
출처: