OpenCV 비전 실무6장 · 평균 필터와 Gaussian 필터12 / 21← 이전목차다음 →MetaContents

6장. 평균 필터와 Gaussian 필터

언제 쓰나와 주의할 점

요리할 때 소금은 맛을 살리지만, 너무 많이 넣으면 재료 맛이 사라집니다. 흐리게 하는 필터도 알맞게 쓰면 노이즈가 줄어 다음 계산이 안정되지만, 지나치면 AI 가 알아봐야 할 무늬(글자, 흠집, 테두리)까지 지웁니다.

노이즈 줄이기, 경계 찾기 전, 크기 줄이기 전, 학습 데이터 늘리기의 네 가지 쓰임을 나란히 놓은 비교 그림

그림의 네 상자가 흐리게 하는 필터를 자주 쓰는 곳입니다. 여기서 소금이 필터이고, 소금의 양이 커널 크기와 시그마입니다.

쓰임과 알맞은 설정

쓰임하는 까닭자주 쓰는 설정다루는 장
노이즈 줄이기어두운 곳에서 찍은 사진의 지글거림을 줄인다Gaussian 3~5이 장
경계 찾기 전노이즈를 경계로 잘못 찾지 않게 한다Gaussian 510장, 11장
크기 줄이기 전줄일 때 생기는 들쭉날쭉한 무늬를 막는다줄이는 비율에 맞춰14장
학습 데이터 늘리기흐린 사진에도 잘 알아보도록 흐린 사진을 섞어 넣는다일부 사진만, 여러 세기로16장

지나치게 흐릴 때 잃는 것

잃는 것예
가는 선과 글자번호판, 안내판 글자가 뭉개진다
작은 흠집불량 검사에서 찾아야 할 긁힘이 사라진다
또렷한 테두리물건의 크기를 잴 때 테두리 자리가 흐려진다

짧은 예시

Python
import cv2

img = cv2.imread("ch06_board.png", cv2.IMREAD_GRAYSCALE)

# 오른쪽 위 줄무늬 판(가로 216~299, 세로 24~128)의 표준편차: 클수록 검고 흰 줄이 또렷하다
area = (slice(24, 129), slice(216, 300))
for k in (1, 3, 9, 15):
    out = img if k == 1 else cv2.GaussianBlur(img, (k, k), 0)
    print(f"크기 {k:2}: 줄무늬 판의 표준편차 {float(out[area].std()):.1f}")

크기 1 은 필터를 걸지 않은 원본입니다. 이 코드를 돌리면 줄무늬 판의 표준편차가 69.7(원본), 58.2(크기 3), 42.9(크기 9), 31.4(크기 15)로 줄어듭니다. 검고 흰 줄이 섞여 회색이 되어 가는 것입니다.

주의할 점

  • 학습 데이터 전체를 일괄로 흐리게 만들면, 실제 현장의 또렷한 사진을 오히려 못 알아볼 수 있습니다. 흐림은 꼭 필요한 곳에 알맞은 세기로만 씁니다.
  • 필터를 고를 때는 이 장의 프로젝트처럼 몇 가지 설정을 숫자로 견주어 보고 정합니다.
← 이전 절6장 · 얼마나 좋아졌나 재기다음 절 →6장 · 실습 지도