가우시안 필터(Gaussian Filter)란? AI에서 거리별 가중평균으로 이미지의 변화를 부드럽게 하는 방법
TL;DR
가우시안 필터는 가까운 이웃에 큰 비중을 주는 종 모양의 가중치로 픽셀값을 평균내어 영상을 부드럽게 만드는 방법입니다. 작은 밝기 변화를 줄이는 과정에서 물체의 경계와 가는 획도 함께 흐려집니다. 표준편차인 sigma와 실제 계산 창의 크기, 처리할 축과 영상 밖의 값 처리 규칙을 구분합니다. 화면의 매끈함을 AI 정확도 향상으로 보지 않고 원본과 후속 인식 오류를 함께 비교합니다.
핵심 3줄 요약
- 핵심 1
위치의 가까움으로 비중을 정합니다. 밝기·색이 다른 이웃도 거리가 같으면 같은 공간 가중치를 받습니다. - 핵심 2
sigma와 창 크기는 다릅니다. 가중치가 퍼지는 폭과 실제 포함할 위치의 범위를 따로 설정합니다. - 핵심 3
잡음과 필요한 세부가 함께 줄어듭니다. 경계·문자 획·작은 결함이 남는지 실제 업무 결과와 함께 확인합니다.
이 글에서 다룰 내용
- 가우시안 필터의 한 문장 정의
- 세 픽셀로 보는 가중평균의 쉬운 예시
- AI 전처리의 사용 이유와 계산 순서
- sigma·창·경계·채널과 출력 자료형의 뜻
- 상자·양방향·중앙값 필터 및 CNN과의 차이
- 영상 처리의 실전 사용처와 체크리스트
- 세부 손실·단위·반복 적용의 주의점
가우시안 필터를 한 문장으로 정의하면 무엇인가요?
가우시안 필터는 중심에서 멀수록 작아지는 가우시안 가중치를 이웃값에 곱하고 합해 위치별 밝기를 다시 계산하는 선형 평활 필터입니다.
영문명은 Gaussian Filter이며 이미지를 흐리게 하는 용도에서는 가우시안 블러, Gaussian Blur라고도 부릅니다. 이 글은 미분 차수가 0인 기본 평활화를 다룹니다. 가우시안의 도함수로 밝기 변화를 계산하는 미분 필터는 같은 출력으로 취급하지 않습니다.
OpenCV의 공식 평활 필터 안내는 가우시안이 공간적 거리로 비중을 정한다고 설명합니다. 중심과 이웃의 밝기 차이를 따로 비교하지 않으므로 물체 경계의 반대편도 평균에 섞입니다. 정답 라벨로 가중치를 배우거나 잡음의 의미를 판정하는 모델은 아닙니다.
한 줄 정리: 가까운 픽셀을 더 많이 섞어 작은 변화를 완화합니다. 가우시안 모양인 것은 평균의 가중치이며 입력 사진의 밝기 분포를 정규분포로 바꾸는 작업은 아닙니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 한 줄의 밝기
[0,100,0]
에서 가운데 100을 처리한다고 가정해 보겠습니다. 계산에 넣을 위치는 이 세 점만 사용하고 공간 표준편차를 1픽셀로 둡니다. 양옆은 중심에서 같은 거리이므로 같은 비중을 받습니다.
세 위치에서 가우시안 가중치를 구해 합이 1이 되게 나누면 왼쪽·가운데·오른쪽의 비중은 약 0.2741·0.4519·0.2741입니다. 이 비중으로 밝기를 합한 가운데 결과는 약 45.19입니다. 같은 창의 상자 평균은 세 값을 똑같이 반영하므로 약 33.33입니다.
같은 세 점 창에서 표준편차만 0.5픽셀로 줄이면 가운데 결과는 약 78.70입니다. 가중치가 중심에 더 몰려 주변 0이 덜 섞입니다. 창을 고정한 비교와 표준편차에 따라 창도 커지는 비교는 조건이 다르므로 함께 기록합니다.
이 숫자들은 Python 표준 라이브러리로 유한한 세 점의 지수함수와 가중평균을 계산한 설명용 결과입니다. OpenCV·SciPy·scikit-image를 실제 실행한 사진 처리 결과나 성능 수치는 아닙니다. 각 라이브러리의 기본 창, 자료형 반올림과 경계 처리까지 재현했다고 주장하지 않습니다.
쉬운 예시: 밝은 점의 높이가 낮아져도 원래 장면이 복원됐다는 뜻은 아닙니다. 그 점이 작은 결함이나 글자의 일부였다면 같은 평균이 필요한 신호를 약하게 만듭니다.
왜 AI에서 가우시안 필터가 중요한가요?
작은 밝기 변화의 영향을 비교합니다
문자 인식·특징 추출·경계 검출 앞에서 잡음의 영향을 줄이는 전처리 후보로 검토합니다. 공간적으로 빠른 변화를 약하게 하는 저역 통과 성질을 이용합니다. 단, 잡음뿐 아니라 날카로운 경계도 빠른 변화이므로 함께 흐려집니다. 처리하지 않은 입력을 비교 기준으로 남기는 이유입니다.
전처리와 최종 인식의 성공을 나눕니다
같은 사진에서 점 잡음이 덜 보이더라도 작은 문자 획이나 표면의 균열이 사라질 수 있습니다. 후속 AI가 그 정보를 사용한다면 화면은 부드러워지고 인식은 나빠질 수 있습니다. 원본·필터 출력·인식 결과를 따로 저장하면 실패가 시작된 단계를 살피기 쉽습니다.
핵심 인사이트: 필터는 없애야 할 잡음과 지켜야 할 세부를 의미로 구별하지 않습니다. 어떤 변화가 필요한지는 업무의 정답과 평가 자료로 확인합니다.
가우시안 필터는 어떤 순서로 작동하나요?
1. 처리할 축과 가중치의 폭을 정합니다
영상의 높이·너비 방향에 사용할 표준편차를 정합니다. 격자에서 sigma는 보통 픽셀 간격 단위로 읽으며 가로·세로 값을 다르게 줄 수도 있습니다. 색상 채널을 공간 축처럼 함께 처리하지 않도록 입력 배열의 축 순서를 먼저 확인합니다.
2. 유한한 창에서 가중치를 정규화합니다
이론상의 가우시안은 멀리까지 이어지지만 실제 계산은 정한 반경이나 커널 크기에서 자릅니다. 포함한 가중치의 합이 1이 되도록 나눠 평균을 만듭니다. OpenCV의 getGaussianKernel API도 합이 1인 계수를 반환합니다. 창 크기는 위치 수이고 sigma는 그 안에서 비중이 퍼지는 폭입니다.
3. 축별 계산을 이어 새 배열을 만듭니다
기본 축 정렬 가우시안은 가로·세로의 1차원 계산으로 나눌 수 있습니다. SciPy 1.17.0의 공식 구현과 scikit-image 설명은 다차원 처리를 일련의 1차원 필터로 구성합니다. 이웃의 값을 가중합해 새 출력을 만들며 중간 결과의 자료형도 최종 정밀도에 영향을 줍니다.
4. 영상 밖의 값과 세부 손실을 확인합니다
영상 가장자리에서는 계산 창 일부가 입력 밖으로 나갑니다. 끝값 복제, 반사, 상수 채움 중 어떤 규칙을 쓰는지에 따라 결과가 달라집니다. 원본과 같은 크기의 출력이라는 사실만으로 같은 경계 처리나 같은 밝기 척도가 보장되지는 않습니다.
실전 팁: 표준편차만 적지 말고 창의 반경·축·자료형·경계 방식도 남기세요. 같은 sigma를 썼는데 결과가 다른 이유를 찾는 기본 기록입니다.
주요 설정과 결과는 어떻게 읽나요?
OpenCV는 커널 크기와 두 sigma를 구분합니다
GaussianBlur의
ksize
는 가로·세로 커널 크기입니다. 명시한 양수 크기는 홀수여야 하지만 0으로 주어 sigma에서 계산하게 하는 경로도 있습니다. 튜토리얼의 홀수 창 예시만 보고 모든 사용에서 창을 직접 지정해야 한다고 해석하지 않습니다.
sigmaX
는 가로 방향,
sigmaY
는 세로 방향의 표준편차입니다. 세로 값을 0으로 두면 가로 값을 따르고 두 값이 모두 0이면 창 크기로 계산합니다. 결과를 명확히 기록하려면 창과 두 sigma를 함께 지정합니다. 채널은 독립적으로 처리하며 출력은 입력과 같은 크기·자료형입니다.
BORDER_WRAP
은 이 함수에서 지원하지 않습니다.
SciPy는 반경·미분 차수·처리 축을 확인합니다
확인한 SciPy 1.17.0 gaussian_filter의
order=0
은 평활화이고 양수 차수는 가우시안 미분입니다. 기본
axes=None
은 모든 축을 대상으로 합니다. 높이·너비·채널 배열에서 공간 축만 쓰려면
axes=(0,1)
처럼 해당 축을 명시하고 축별 설정의 길이도 맞춥니다.
truncate=4.0
은 표준편차의 몇 배에서 커널을 자를지 정합니다. sigma가 1인 예에서 기본 반경은 4, 창 길이는 9입니다.
radius=2
를 명시하면 창 길이는 5가 되고 truncate는 무시됩니다. 출력 자료형을 생략하면 입력 자료형을 따르는 경로이므로 정수 입력의 중간 계산 정밀도도 점검합니다.
scikit-image는 밝기 변환과 채널을 분리합니다
scikit-image filters.gaussian API는 기본
mode="nearest"
를 사용하며 SciPy의 기본
mode="reflect"
와 다릅니다. RGB 채널이 마지막 축이면
channel_axis=-1
을 지정해 채널별로 공간 처리를 합니다. 채널 축을 생략한 다차원 배열은 같은 의도로 해석되지 않을 수 있습니다.
기본
preserve_range=False
는 정수 영상을 img_as_float 규칙으로 변환하며 출력은 실수입니다. 원래 척도를 유지하려면
preserve_range=True
를 검토합니다. 공식 자료형 안내처럼 이미 실수인 입력은 자동으로 0~1에 재조정되지 않습니다.
astype(float)
만으로 uint8의 0~255가 0~1이 되지는 않습니다.
가우시안 필터와 헷갈리는 용어는 무엇이 다른가요?
상자·양방향·중앙값 필터와의 차이
상자 평균은 창 안의 위치에 같은 비중을 주고 가우시안은 중심에서 멀수록 비중을 줄입니다. 양방향 필터는 중심과의 밝기·색 차이도 반영합니다. 중앙값 필터는 이웃값의 순서에서 가운데를 고릅니다. 계산 원리가 달라 같은 창 크기를 같은 처리 강도로 보지 않습니다.
히스토그램 평활화·CNN·가우시안 잡음과의 차이
히스토그램 평활화는 밝기의 누적분포로 값 대응을 바꾸는 대비 조정입니다. 가우시안 평활화는 위치가 있는 이웃을 섞습니다. CNN의 합성곱은 학습되는 여러 커널로 특징을 만드는 구성인 반면 여기서는 정한 가우시안 계수를 씁니다. 가우시안 잡음은 잡음값의 분포를 가리키며 필터와 같은 대상은 아닙니다.
비교 정리: 가우시안 필터는 거리별 평균, 양방향 필터는 거리와 값 차이별 평균, 중앙값 필터는 순위 선택입니다. 이름보다 어떤 값을 섞고 무엇을 출력하는지로 구분합니다.
실전에서는 어디에 쓰이나요?
경계와 특징을 구하기 전 입력을 비교합니다
미세한 밝기 흔들림이 경계 후보를 복잡하게 만들 때 평활화 후보를 비교합니다. 캐니 에지 검출처럼 다음 단계가 기울기를 이용한다면 가는 선과 약한 윤곽이 얼마나 남는지도 봅니다. 처리 영상 자체에 사물 이름이나 경계 좌표 목록이 들어 있다고 읽지 않습니다.
문서와 제품 이미지의 기준선을 만듭니다
스캔 문서나 제품 사진에서 무처리·약한 평활화·강한 평활화의 차이를 확인하는 비교 기준으로 사용합니다. 작은 글자와 결함을 포함한 확대 구역을 함께 남깁니다. 특정 예제에서 잡음이 줄었다는 이유로 모든 촬영 조건이나 모든 AI 모델에 같은 전처리를 강제하지 않습니다.
가우시안 필터를 적용할 때 어떤 순서로 확인하나요?
1. 입력 단위와 지켜야 할 세부를 고정합니다
해상도·잘라낸 영역·색상·자료형·축 순서를 기록합니다. 같은 1픽셀 폭도 촬영 배율이 달라지면 다른 실제 크기에 해당합니다. 없앨 잡음뿐 아니라 남겨야 할 소수점·문자 획·미세 결함도 먼저 표시합니다. 원본 파일은 보관하고 비교 중 덮어쓰지 않습니다.
2. 작은 배열과 영상 가장자리를 시험합니다
한 점이 밝은 배열, 일정한 밝기, 날카로운 경계를 시험합니다. 앞의 반경 1·sigma 1 가중치를 두 축에 쓰면 밝기 10인 영상의 모서리는 끝값 복제에서 10이지만 밖을 0으로 채우면 약 5.27입니다. 이 역시 표준 라이브러리의 설명용 계산입니다.
mode="constant"
와
cval=0
을 무조건 중립적인 설정으로 보지 않습니다.
3. 설정 선택과 최종 평가를 분리합니다
창·sigma·경계·채널 중 한 조건씩 바꾸고 원본과 출력의 차이를 남깁니다. 설정을 고른 자료와 최종 평가 자료를 분리해 OCR 오류나 검출 누락·오탐을 비교합니다. 학습 입력과 운영 입력의 전처리도 맞추고 실제 해상도·장치에서 처리 시간과 메모리를 측정합니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 큰 sigma가 더 좋은 복원을 뜻하지 않습니다. 잡음처럼 보이는 작은 신호도 함께 약해집니다. 글자 획이 끊기거나 가까운 경계가 섞이는지 확인합니다. 흐려진 결과를 무조건 더 선명하거나 원본에 가까워졌다고 표현하지 않습니다.
둘째, 공간 sigma와 밝기의 척도를 섞지 않습니다. 여기서 sigma는 가중치가 퍼지는 위치 범위입니다. 양방향 필터의 색상 sigma와 같은 숫자라고 같은 의미가 되지 않습니다. 0~255와 0~1로 표시한 밝기의 차이도 입력·출력 기록에서 구별합니다.
셋째, 반복과 채널·시간 축을 숨기지 않습니다. 출력에 다시 필터를 적용한 결과는 한 번 처리한 결과와 다릅니다. 프레임 묶음이나 채널까지 모든 축에 동일하게 적용하면 공간 평활화만 한 것이 아닙니다. 사용하는 함수의 실제 축 선택을 확인합니다.
넷째, 자료형과 경계에서 생긴 오차를 따로 봅니다. 정수 출력이나 낮은 정밀도의 중간 저장은 작은 차이를 잃을 수 있습니다. 영상 중앙만 확인하지 말고 모서리와 끝줄도 확대합니다. 표시 도구가 밝기를 자동으로 늘려 보여 주면 수치 손실이 화면에서 가려질 수 있습니다.
주의: 부드러워진 영상은 원래 장면의 완전 복원이나 AI 정확도의 보증이 아닙니다. 정량 측정에서는 원래 값과 처리한 값을 구별합니다. 최종 업무 오류도 따로 검수합니다.
자주 묻는 질문
Q1. 가우시안 필터는 딥러닝 모델인가요?
이 글의 기본 필터는 정한 거리별 가중치로 평균을 계산합니다. 정답 라벨로 커널을 학습하지 않습니다. 학습 모델 앞에 결합할 수 있지만 필터 처리와 모델 훈련은 별개입니다.
Q2. sigma는 커널 한 변의 길이인가요?
아닙니다. 가우시안 가중치의 표준편차입니다. 커널 크기나 반경은 실제 포함할 위치를 정합니다. 자동 계산 경로와 명시한 창을 구분하고 함께 기록합니다.
Q3. 같은 sigma면 모든 라이브러리가 같은 결과인가요?
창의 반경과 자름 규칙, 경계 방식, 채널 축, 입력 범위와 출력 자료형이 다를 수 있습니다. 숫자 하나보다 전체 조건을 맞춘 뒤 작은 배열과 실제 영상에서 비교합니다.
Q4. 밝기 경계는 그대로 지켜지나요?
기본 가우시안은 이웃과 중심의 밝기 차이를 따로 보지 않습니다. 다른 색의 경계도 평균에 섞입니다. 경계가 필요한 업무라면 약한 윤곽·작은 결함과 후속 오류를 함께 확인합니다.
Q5. 필터를 적용하면 입력 밝기가 정규분포가 되나요?
아닙니다. 종 모양 가우시안은 위치별 평균의 가중치입니다. 사진 전체의 밝기 분포를 특정 분포로 맞추는 변환이 아닙니다. 가우시안 잡음이라는 분포 이름과도 구분합니다.
출처
마무리
가우시안 필터는 위치별 거리에 따른 가중평균으로 영상의 작은 변화를 부드럽게 만드는 방법입니다. sigma·창·축·경계와 자료형을 나누어 읽으면 같은 이름의 함수가 다른 결과를 내는 이유를 이해하기 쉽습니다.
처음 적용한다면 한 점과 일정한 밝기의 가장자리부터 시험해 보세요. 원본과 처리 영상, 전체 설정을 함께 남기고 가는 획·작은 결함·후속 인식 오류를 따로 확인합니다. 매끈한 화면보다 실제 업무에서 필요한 정보가 남았는지가 선택 기준입니다.
