영상 필터링 (Image Filtering)

개요

  • 영상의 각 픽셀 값을 그 주변 픽셀들과 결합(연산)하여 새로운 픽셀 값을 만들어내는 과정으로, 영상을 부드럽게 하거나(노이즈 제거), 선명하게 하거나(샤프닝), 특징을 추출할 수 있음.

필터링의 목적 및 방법

1. 노이즈 제거 (Noise reduction)

  • 센서 잡음, 압축 잡음, 조명 변화 등 제거

2. 영상 개선 (Image enhancement)

  • 흐릿한 영상을 선명하게 → 샤프닝 필터

3. 특징 추출 (Feature extraction)

  • 엣지, 코너, 패턴 등을 검출
  • 컴퓨터 비전 및 객체 인식의 전처리 단계

4. 주파수 성분 제어

  • 저주파(밝기 변화) ↔ 고주파(경계, 세부 무늬) 조절
  • 푸리에 변환 기반 필터링과 연결

필터링의 두 가지 접근 방법

1. 공간 영역 필터링 (Spatial domain filtering)

  • 영상 좌표계에서 직접 연산
  • 커널(마스크, mask)을 영상에 슬라이딩하며 적용
  • 컨볼루션(Convolution) 또는 상관(Correlation) 연산 사용

2. 주파수 영역 필터링 (Frequency domain filtering)

  • 영상 → 푸리에 변환(FFT) → 주파수 영역에서 마스크 적용 → 역변환
  • 저역 통과, 고역 통과, 대역 통과 필터 가능
  • 이론적으로 정확한 성분 분리 가능하나, 구현이 복잡하다.

컨볼루션 (Convolution)

개요

  • 공간 영역 필터링의 핵심 연산으로, 입력 영상과 필터(커널)를 겹쳐가며 곱하고 더해서 새로운 픽셀 값을 만든다.

연산 방법

  • 컨볼루션 연산은 정의된 필터(커널)의 영역만큼 원본 영상의 대상 픽셀에서 범위 내 대응되는 각 점끼리의 곱셈을 한 것을 모두 더하는 연산으로, 원본 영상의 모든 픽셀에 대해 sliding 하며 수행한다.
  • 출력 이미지의 크기가 바뀌는 것을 방지하기 위해(첫번째 픽셀에서도 온전히 커널에 대한 컨볼루션 연산을 하기 위해) Zero Padding 등의 방법이 사용된다.
  • : 출력 영상
  • : 입력 영상
  • : 필터(커널)
  • : 커널 사이즈

필터(커널)

  • 작은 커널: 연산량 적고, 세부 보존.
  • 큰 커널: 더 강한 블러 / 노이즈 제거 가능, 하지만 세부 손실.
  • 홀수 크기(3×3, 5×5)를 사용하는 이유: 중심 픽셀 기준을 명확히 하기 위해.

OpenCV

  • OpenCV의 filter2D 함수를 이용해 생성된 커널과 이미지의 컨볼루션 연산을 할 수 있다.
  • cv2.filter2D(src, ddepth, kernel, dst=None, anchor=None, delta=None, borderType=None) dst
    • src : 입력 영상
    • ddepth : 출력 영상 데이터 타입. (e.g) cv2.CV_8U, cv2.CV_32F, cv2.CV_64F, -1을 지정하면 src와 같은 타입의 dst 영상을 생성한다.
    • kernel: 필터 마스크 행렬. 실수형.
    • anchor: 고정점 위치. (-1, -1)이면 필터 중앙을 고정점으로 사용
    • delta: 추가적으로 더할 값
    • borderType: 가장자리 픽셀 확장 방식
    • dst: 출력 영상

주요 필터링 방법

스무딩(Smoothing) 필터

  • 블러링(Bluring), 저주파 통과, 노이즈 제거 중심
  • 평균 필터 (cv2.blur)
    • 커널 평균을 계산 → 단순 블러 효과
    • 장점/단점 (연산 빠름 / 엣지 흐려짐)
  • 가우시안 필터 (cv2.GaussianBlur)
    • 가우시안 분포 기반 가중치 → 부드러운 블러
    • σ(표준편차)에 따른 효과 차이
  • 중간값 필터 (cv2.medianBlur)
    • 중앙값 대체 → Salt & Pepper 노이즈에 강함
  • 양방향 필터 (cv2.bilateralFilter)
    • 공간 + 색상 거리 모두 고려 → 엣지 보존 블러

샤프닝(Sharpening) 필터

  • 고주파 강조, 선명도 향상
  • 언샤프 마스킹 (Unsharp Masking)
    • 블러 영상 빼서 고주파만 강조 (cv2.filter2D로 구현)

엣지 검출(Edge Detection) 필터

  • 특징 추출, 고주파 성분만
  • 라플라시안 필터 (cv2.Laplacian)
    • 2차 미분 기반, 경계 강조
    • Sobel 필터 (cv2.Sobel)
      • 1차 미분 기반, 수평/수직 방향 엣지
  • Canny Edge Detector (cv2.Canny)
    • 다단계 처리(가우시안 → 그라디언트 → 얇게 → 이력 임계)

Prev : 4. 영상 리사이징 및 보간법

Next :


참고