공간 영역에서의 영상 향상
디지털 영상처리 4주차 정리입니다. 이번 시간은 공간 영역(Spatial Domain)에서 영상을 개선하는 방법을 다뤘습니다. 크게 포인트 프로세싱(변환 함수, 히스토그램 평활화, 히스토그램 매칭)과 공간 필터링(컨볼루션, 스무딩)으로 나뉘며, 샤프닝 필터는 다음 시간으로 넘어갔습니다.
01처리 도메인과 두 갈래 길
영상 처리를 어디서 할 것인가에 따라 두 가지로 나뉩니다. Spatial Domain은 픽셀 값을 직접 조작하는 것이고, Frequency Domain은 푸리에 변환으로 주파수 영역에서 처리하는 것입니다. 이번 수업에서 다루는 건 전자입니다.
그리고 공간 영역 안에서도 마스크(윈도우) 크기에 따라 다시 둘로 갈립니다.
| 구분 | Point Processing | Filtering |
|---|---|---|
| 마스크 크기 | 1×1 (자기 자신만) | 3×3, 5×5, 7×7 … (이웃 포함) |
| 출력 결정 요소 | 변환 함수 s = T(r) | 마스크 계수(filter coefficients) |
| 예시 | 임계값 이진화, 반전, 히스토그램 평활화 | 스무딩(블러), 샤프닝 |
02변환 함수 (Transformation Function)
입력 화소값 r이 들어가면 출력 화소값 s가 나오는 함수 하나로 영상 전체를 바꿉니다. 곡선의 모양이 곧 목적입니다.
① Image Negative — s = L−1−r
가장 단순한 반전입니다. 밝은 건 어둡게, 어두운 건 밝게. 어두운 영역에 묻혀 있는 흰색·회색 디테일을 살릴 때 유용합니다.
② Log / Inverse Log — s = c·log(1+r)
교수님이 칠판으로 직관을 설명해 주신 부분이 핵심입니다. 로그 커브는 어두운 쪽 두 화소의 간격을 벌리고, 밝은 쪽 두 화소의 간격을 좁힙니다. 그러면 결과가 이렇게 됩니다.
밝기는 영상 전체가 어둡냐 밝냐입니다. 모든 픽셀에서 128을 빼면 영상이 통째로 어두워지죠. 반면 대비는 같은 장면 안에서 A 지점과 B 지점의 밝기 레벨 차이입니다. A가 100, B가 111이면 구분이 안 되지만, A가 80, B가 130이면 선명하게 보입니다. 절대적인 밝기 레벨과는 다른 개념입니다.
③ Power-Law (감마 보정) — s = c·rγ
- γ < 1 → 로그 함수와 비슷한 효과 (어두운 영상에 적합)
- γ > 1 → Inverse log와 비슷한 효과 (밝은 영상에 적합)
- 로그와 유사하지만 커브 형태가 미묘하게 달라서 영상에 따라 결과가 갈립니다. 어느 쪽이 좋고 나쁜 문제가 아니라 내 영상에 무엇이 맞느냐의 문제
03Piecewise-Linear — 함수가 정해지면 한계가 있다
로그나 감마 함수는 어두운 쪽 또는 밝은 쪽에 몰려 있는 영상에만 효과적입니다. 그런데 화소값이 128 근처 중앙에 몰려 있는 흐리멍덩한 영상이라면? 쓸 만한 함수가 없습니다.
그럴 때 쓰는 것이 Piecewise-Linear Transformation입니다. 컨트롤 포인트 두 개를 찍어 조각별 직선으로 함수를 직접 정의하면, 기울기가 1보다 큰 구간의 대비를 확 키울 수 있습니다. 이것이 Contrast Stretching입니다.
04히스토그램 평활화 (Histogram Equalization)
그 답이 히스토그램 평활화입니다. 먼저 히스토그램부터 보면, h(rk) = nk, 즉 각 밝기 레벨이 몇 개의 화소를 갖는지의 분포입니다. 이를 전체 화소 수로 나눈 정규화 히스토그램 p(rk) = nk/n은 곧 그 영상 화소값의 확률 분포가 됩니다.
네 영상을 비교해 보면 답이 보입니다. 어두운 영상은 왼쪽에, 밝은 영상은 오른쪽에, 저대비 영상은 중앙에 몰려 있고, 가장 보기 좋은 영상은 분포가 넓게 퍼져 있습니다. 그렇다면 몰려 있는 히스토그램을 넓게 펴주면(equalize) 되겠다는 발상입니다.
교수님은 증명 대신 직관으로 설명하셨는데, 이게 훨씬 와닿았습니다. 어두운 영상의 CDF를 그려보면 초반에 급격히 올라갔다 포화되는 모양 — 바로 로그 함수 모양입니다. 밝은 영상의 CDF는 뒤에서 급격히 올라가는 Inverse log 모양, 중앙에 몰린 영상의 CDF는 가운데 기울기가 큰 Piecewise-Linear 모양이 나옵니다.
실제 계산 — 3bit 64×64 예제
여기서 중요한 실무 포인트가 하나 나옵니다. CDF를 그대로 적용하면 출력이 1.4, 2.8, 3.5 같은 실수가 나오는데, 3bit 영상의 출력은 정수여야 합니다. 그래서 라운딩(양자화)을 거쳐야 3bit 입력이 3bit 출력으로 나옵니다.
결과 히스토그램을 보면 이론처럼 완벽하게 균일(uniform)하지는 않습니다. 이유는 두 가지입니다. (1) 샘플 개수가 적고(64×64), (2) 이산 공간이라 라운딩이 들어가기 때문입니다. 그래도 원본보다는 분명히 펴졌습니다.
참고로 포토샵이나 영상 편집 툴의 자동 보정 기능 중 "Histogram Equalization" 또는 "HE"라고 적힌 메뉴가 바로 이 연산입니다.
05평활화가 망하는 경우, 그리고 히스토그램 매칭
그럼 모든 저대비 영상에 히스토그램 평활화를 쓰면 될까요? 아닙니다. 대표적인 실패 사례가 이 영상입니다.
해법 — Histogram Matching (Specification)
평활화의 단점은 출력 영상의 형태가 딱 한 가지(균일 분포)로 고정된다는 점입니다. 히스토그램 매칭은 내가 원하는 히스토그램을 직접 설계해서 그 모양으로 만들어 줍니다. 균일 분포일 필요가 없다는 게 핵심입니다.
② 내가 설계한 목표 히스토그램 pz(z)도 평활화하는 함수 G(z)를 구함 → 역시 균일 분포
③ G는 CDF이고 CDF는 단조 증가(monotonically increasing) 함수라서 역함수 G-1이 존재
④ 따라서 z = G-1[T(r)] = G-1(s) — 평활화한 뒤 역변환을 한 번 더 해주면 끝
다만 교수님도 인정하신 한계가 있습니다. 목표 히스토그램을 사람이 보고 시행착오로 설계해야 한다는 점에서 다분히 휴리스틱입니다. 그래서 이런 영상을 잘 지역화(localize)해서 처리하는 알고리즘들이 계속 개발되어 왔고, 요즘은 뉴럴 네트워크 기반 기법들이 좋은 성능을 냅니다. 다만 교수님 말씀대로 그 안에 들어가는 코어 컨셉은 결국 이것과 같습니다.
06공간 필터링 — 컨볼루션
여기서부터는 이웃 화소(neighborhood)를 함께 쓰는 필터링입니다. 3×3이든 7×7이든, 윈도우 안의 화소들에 각각 필터 가중치(filter coefficient)를 곱해서 전부 더하는 것 — 즉 가중 평균입니다. 식으로 쓰면 컨볼루션이 됩니다.
마스크는 보통 홀수 크기(3×3, 5×5, ...)를 씁니다. 중심이 명확해야 하기 때문입니다. 그리고 마스크 계수가 무엇이냐에 따라 연산의 성격이 완전히 달라집니다 — 같은 컨볼루션인데 계수만 바꾸면 블러가 되기도, 샤프닝이 되기도 합니다.
07스무딩 필터 — Box vs Gaussian
스무딩의 목적은 두 가지입니다. 블러링(작은 디테일 제거, 객체 추출 전처리)과 노이즈 제거입니다. 밤에 휴대폰으로 찍은 사진을 확대하면 보이는 그 지글거림, 그걸 걷어내는 것이 스무딩 필터의 역할입니다.
| 구분 | Box Filter (산술평균) | Gaussian Filter (가중평균) |
|---|---|---|
| 가중치 | 모두 동일 (3×3이면 전부 1/9) | 거리가 멀수록 작게 |
| 문제점 | 100m 떨어진 화소와 자기 자신이 같은 가중치 — 불공평 | 계산이 조금 더 복잡 |
| 결과 프로파일 | 꺾이는 지점 발생 → 계단진 라인이 보임 | 미분 불가능한 점이 없음 → 자연스러움 |
08로우패스 필터의 활용 2가지
① Segmentation 전처리
성운 영상에서 일정 크기 이상의 객체만 뽑고 싶을 때, 블러 → Thresholding 순서로 처리합니다. 블러를 걸면 자잘한 점들은 노이즈처럼 사라지고 큼지막한 것만 남아서, 임계값만 걸면 마스킹 영상이 나옵니다.
② Shading Correction (음영 보정)
이게 개인적으로 가장 재미있었던 예제입니다. 체크보드 패턴에 대각선 방향 음영이 낀 영상에서 음영만 걷어내는 방법인데, 원리가 주파수 관점으로 깔끔하게 설명됩니다.
요즘은 뉴럴넷으로 더 좋은 알고리즘을 만들지만,
그 안에 들어가는 코어 컨셉은 결국 이것과 같습니다.
09정리 & 다음 시간
| 기법 | 언제 쓰나 | 한계 |
|---|---|---|
| Log / Power-Law | 한쪽(어두움/밝음)에 몰린 영상 | 함수 형태가 고정, 조절 범위 제한적 |
| Piecewise-Linear | 중앙에 몰린 영상, 특정 구간 타겟팅 | 사용자 입력이 많이 필요 |
| Histogram Equalization | 영상 맞춤형 자동 처리, 한쪽에 몰린 경우 | 출력이 한 가지, 분포가 분산된 영상엔 역효과 |
| Histogram Matching | 밝은 영역과 어두운 영역이 공존 | 목표 히스토그램 설계가 휴리스틱 |
| Smoothing Filter | 노이즈 제거, 세그멘테이션 전처리, 음영 보정 | 디테일도 함께 사라짐 |
가장 인상 깊었던 건 "CDF가 곧 맞춤형 변환 함수"라는 흐름이었습니다. 로그 함수, 감마 함수, 구간선형 함수를 하나씩 배우면서 "매번 이렇게 손으로 골라야 하나" 싶었는데, 히스토그램을 누적하기만 하면 그 영상에 딱 맞는 커브가 자동으로 나온다는 전개가 깔끔했습니다. 각 함수를 먼저 배운 이유도 여기에 있었던 셈입니다.
음영 보정 예제도 좋았습니다. 블러 필터 하나로 저주파 성분만 추출해 나눠버린다는 발상은, 뒤에 배울 주파수 영역 처리와 자연스럽게 연결되는 지점이라 미리 감을 잡기 좋았습니다.
'인하대학교 공학대학원(인공지능융합전공) > 영상처리' 카테고리의 다른 글
| 미분으로 디테일을 살리고, 주파수에서 걸러 낸다 — 샤프닝과 주파수 영역 필터링 (0) | 2026.10.15 |
|---|---|
| 왜 벽돌담이 물결무늬로 찍히는가 — 샘플링과 리컨스트럭션 (0) | 2026.10.02 |
| 이산 푸리에 변환(DFT) (0) | 2026.09.23 |
| Frequencydomainanalysisand FourierTransform (0) | 2026.09.15 |
| Lecture 1 Basics & Image Acquisition (1) | 2026.09.11 |