영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업
블러링, 샤프닝, 잡음 제거, 엣지 검출 등
푸리에 변환을 이용하여 영상을 주파수 공간으로 변환하여 필터링을 수행하는 방법
영상의 픽셀 값을 직접 이용하는 필터링 방법
주로 마스크 연상을 이용함
OpenCV에서는 공간적 필터링 마스크 크기가 커질 경우 주파수 공간에서의 필터링을 수행
필터링에 사용되는 마스크는 다양한 크기, 모양을 지정할 수 있지만 대부분 3x3 정방형 필터를 사용
영상 부드럽게 만들기
영상 날카롭게 만들기
잡음 제거
엣지 검출
src : 입력 영상
dst : 출력 영상
top : 윗쪽 확장 크기
bottom : 아래쪽 확장 크기
left : 왼쪽 확장 크기
right : 오른쪽 확장 크기
boarderType : 가장자리 픽셀 확장 방법
value : borderType이 BORDER_CONSTANT인 경우 사용할 값
void copyMakeBorder(InputArray src, OutputArray dst,
int top, int bottom,
int left, int right,
int boarderType,
const Scalar& value = Scalar());
boarderType | 설명 |
---|---|
BORDER_CONSTANT | 0으로 패딩 |
BORDER_REPLICATE | 최외곽 픽셀로 패딩 |
BORDER_REFLECT | 최외곽 픽셀 포함 미러링 |
BORDER_REFLECT_101 | 최외곽 픽셀 미포함 미러링 |
src : 입력 영상
dst : 출력 영상
ddepth : 원하는 결과 영상의 깊이를 지정
kernel : 1차원 실수형 필터 마스크 행렬
anchor : 고정점 위치
delta : 추가적으로 더할 값
borderType : 가장자리 픽셀 처리 방법
void filter2D(InputArray src, OutputArray dst,
int ddepth,
InputArray kernel,
Point anchor = Point(-1,-1),
double delta = 0,
int borderType = BORDER_DEFAULT);
엠보싱
직물이나 종이, 금속판 등에 올록볼록한 형태로 만든 객체의 윤곽 또는 무늬
엠보싱 필터
입력 영상을 엠보싱 느낌이 나도록 변환하는 필터
결과를 효과적으로 보여주기 위해 128을 더해서 보여줌
각각의 좌표에서 주변 픽셀 값들의 산술 평균을 계산하고 이를 출력 영상의 픽셀 값으로 설정
영상에 평균 값 필터를 적용하면 인접한 픽셀 간의 급격한 grayscale 값 변화가 줄어들어 날카로운 엣지가 무뎌지고 영상에 있는 잡음이 감소하는 효과
src : 입력 영상
dst : 출력 영상
ksize : 평균값 필터 크기
anchor : 고정점
borderType : 가장자리 픽셀 확장 방식
void blur(InputArray src, OutputArray dst, Size ksize,
Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT);
필터링 대상 위치에서 가까이있는 픽셀과 멀리 있는 픽셀이 모두 같은 가중치를 사용하여 평균을 계산하므로 현재 위치의 픽셀 값의 비중은 줄어들고 상대적으로 멀리 떨어져있는 픽셀들의 영향이 커짐
평균을 중심으로 좌우대칭인 종 모양을 갖는 확률 분포
가우시안 분포
정규 분포를 나타내는 함수 수식
2차원 가우시안 함수
src : 입력 영상
dst : 출력 영상
ksize : 가우시안 커널 크기
sigmaX : x방향 sigma
sigmaY : y방향 sigma
borderType : 가장자리 픽셀 처리 방식
void GaussianBlur(InputArray src, OutputArray dst, Size ksize,
double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT);
값이 커질수록 내부에서 사용하는 커널 사이즈가 증가하고 연산 시간도 증가
날카롭지 않은 영상
블러링된 영상을 이용하여 날카로운 영상을 생성
영상의 픽셀 값에 추가되는 원치 않는 형태의 신호
카메라에서 광학 신호를 전기적 신호로 변환하는 과정(센서)에서 잡음이 추가될 수 있음
Salt&Pepper noise
Gaussian noise
dst : 정상 분포 난수 행렬
mean : 평균
stddev : 표준편차
void randn(InputOutputArray dst, InputArray mean, InputArray stddev);
영상에서 특정 경로 상에 있는 픽셀의 밝기 값을 그래프 형태로 나타낸 것
Line profile, intensity profile
bilateral filter
엣지 보전 잡음 제거 필터의 하나
평균 값 필터 또는 가우시안 필터는 엣지 부근에서도 픽셀 값을 평탄하게 만드는 단점이 있음
기준 픽셀과 이웃 픽셀과의 거리, 그리고 픽셀 값의 차이를 함께 고려하여 블러링 정도를 조절
엣지가 아닌 부분에서만 블러링
p,q : p점 q점의 픽셀 좌표
: p점과 q점에서의 픽셀 값
: 필터 커널 합이 1이 되도록 만드는 정규화 상수
src : 입력 영상
dst : 출력 영상
d : 필터링에 사용될 이웃 픽셀의 거리
sigmaColor : 색 공간에서 필터의 표준 편차
sigmaSpace : 좌표 공간에서 필터의 표준 편차
borderType : 가장자리 픽셀 처리 방식
void bilateralFilter(InputArray src, OutputArray dst,
int d,
double sigmaColor,
double sigmaSpace,
borderType = BORDER_DEFAULT);
bilateral filter 사용 시 속도는 느려지지만 잡음 제거 성능은 우수