Bilinear Interpolation(양선형 보간)은 2D 이미지나 데이터를 보간할 때 가장 널리 쓰이는 방법 중 하나입니다. 주어진 네 개의 점을 사용하여 새로운 값을 계산하는 방식입니다.
✅ 이미지 확대/축소, 색 보간, 영상 변환, YUV → RGB 변환 등에 사용됨
✅ 빠르고 계산량이 적으면서도 부드러운 결과를 제공함
1. 개념 이해
Bilinear Interpolation은 가로(X) 방향과 세로(Y) 방향으로 두 번 보간하는 방법입니다. 예를 들어, (x, y) 좌표에 존재하지 않는 값을 예측해야 한다면, 다음 네 개의 픽셀 값을 활용해서 계산할 수 있습니다.
(1) 주어진 네 개의 픽셀 (Q11, Q12, Q21, Q22)
(x1, y1) Q11 -------- Q21 (x2, y1)
| |
| (x, y) | ← 우리가 찾고 싶은 값
| |
(x1, y2) Q12 -------- Q22 (x2, y2)
- Q11, Q12, Q21, Q22: 주변의 네 개의 픽셀 값
- (x, y): 우리가 원하는 보간된 값
우리는 (x, y)에 대한 값을 이 네 개의 픽셀 값으로 예측할 것입니다.
2. Bilinear Interpolation 공식
보간은 두 단계로 이루어집니다.
1️⃣ 가로(X) 방향으로 1차 보간 (Q11 ↔ Q21, Q12 ↔ Q22)
2️⃣ 세로(Y) 방향으로 1차 보간 (최종값 계산)
(1) X 방향 보간
먼저 x 방향에서 선형 보간을 수행합니다.

여기서:
- R1: (x, y1) 위치에서의 보간된 값
- R2: (x, y2) 위치에서의 보간된 값
즉, Q11과 Q21 사이에서 보간한 값(R1), Q12와 Q22 사이에서 보간한 값(R2)을 구합니다.
(2) Y 방향 보간
이제 y 방향에서 최종 보간을 수행합니다.

여기서:
- P: 최종적으로 (x, y) 위치에서의 보간된 값
이제 (x, y) 위치의 값을 구할 수 있습니다! 🎯
3. 코드 예제 (Python)
다음은 Bilinear Interpolation을 직접 구현하는 코드입니다.
def bilinear_interpolation(x, y, x1, y1, x2, y2, Q11, Q12, Q21, Q22):
# X 방향 보간
R1 = ((x2 - x) / (x2 - x1)) * Q11 + ((x - x1) / (x2 - x1)) * Q21
R2 = ((x2 - x) / (x2 - x1)) * Q12 + ((x - x1) / (x2 - x1)) * Q22
# Y 방향 보간
P = ((y2 - y) / (y2 - y1)) * R1 + ((y - y1) / (y2 - y1)) * R2
return P
# 예제: 4개의 픽셀값을 가지고 (1.5, 1.5) 위치의 값을 보간
x1, y1, x2, y2 = 1, 1, 2, 2
Q11, Q12, Q21, Q22 = 50, 60, 80, 90 # 픽셀 값
result = bilinear_interpolation(1.5, 1.5, x1, y1, x2, y2, Q11, Q12, Q21, Q22)
print(f"Bilinear Interpolation Result: {result}")
✅ 이 코드는 (1.5, 1.5) 위치의 값을 보간하는 예제입니다.
✅ 실제 이미지에서는 픽셀 색상 값을 보간할 때 사용됩니다.
4. Bilinear Interpolation vs 다른 보간법
보간법 | 방식 | 속도 | 품질 |
Nearest Neighbor | 가장 가까운 픽셀 선택 | ✅ 빠름 | ❌ 계단현상 발생 |
Bilinear Interpolation | 4개 픽셀 이용, 2차 보간 | 🔥 적당 | 👍 부드러움 |
Bicubic Interpolation | 16개 픽셀 사용, 3차 보간 | ❌ 느림 | 🔥 매우 부드러움 |
✅ Bilinear은 속도와 품질의 균형이 좋아서 이미지 확대, 색 보간, 영상 변환 등에 많이 사용됩니다.
5. Bilinear Interpolation이 사용되는 분야
- 이미지 리사이징 (확대/축소)
→ OpenCV, Photoshop 등에서 사용 - YUV → RGB 변환 (U, V 보간)
→ 비디오 디코딩 과정에서 사용 - 3D 그래픽스 텍스처 매핑
→ 게임 엔진, OpenGL에서 사용 - 지리 데이터 보간 (GIS, 위성 이미지 보정)
→ Google Earth 같은 위성 데이터 처리
6. 결론
✔ Bilinear Interpolation은 2D 보간의 가장 기본적인 기법
✔ 가로(X) → 세로(Y) 두 단계의 선형 보간을 수행함
✔ 이미지 확대, 색 변환(YUV → RGB) 등 다양한 곳에서 사용됨
✔ 속도와 품질의 균형이 좋아 실무에서 가장 많이 사용되는 보간법 중 하나
'프로그래밍' 카테고리의 다른 글
YUV422란? (0) | 2025.04.02 |
---|---|
Understanding Queue and Stack: Essential Data Structures in Programming (0) | 2025.03.28 |
큐(Queue), 스택(Stack)의 개념과 차이점 (0) | 2025.03.27 |
(빅데이터 분석기사) 1. 실기 학습 준비 및 교재 선정 (0) | 2022.04.06 |