관리 메뉴

ComputerVision Jack

[컴퓨터 비전 - 필터링] 본문

Image Processing/Computer Vision

[컴퓨터 비전 - 필터링]

JackYoon 2020. 1. 28. 14:26
반응형

영상의 필터링

필터링(Filtering) : 영상에서 원하는 정보만 통과 시키고 원치 않는 정보는 걸러 내는 작업

영상의 필터링은 보통 마스크(mask)라고 부르는 작은 크기의 행렬을 이용한다.

마스크는 다양한 크기와 모양으로 정의 할 수 있으며, 마스크 행렬의 원소는 보통 실수로 구성

필터 = 마스크 = 커널 = 윈도우

다양한 필터 마스크

필터링 연산 방법

필터링 연산의 결과는 마스크 행렬의 모양과 원소 값에 의해 결정됨

마스크를 이용한 필터링은 입력 영상 픽셀 위로 마스크 행렬을 이동시키면서 마스크 연산을 수행하는 방식으로 작동

마스크 연산의 결과를 출력영상에서 고정점 위치에 대응되는 픽셀 값으로 설정한다.

3 x 3 마스크 행렬 m의 중심이 입력영상 (x, y) 위에 위치한 경우, 출력 값
마스크 연산 수행

필터링 외각 처리

나중에 CNN코드에서 padding 부분과 연관이 있는 부분.

영상의 필터링 수행할 때, 영상의 가장자리 픽셀을 확장하여 영상 바깥쪽에 가상의 픽셀을 만든다.

영상의 바깥쪽 가상의 픽셀 값을 어떻게 설정하는 가에 따라 필터링 연산 결과가 달라진다.

기본적인 외각 처리.
openCV에서 외각 처리

void filter2D(InputArray src, OutputArray dst, int depth, InputArray kernel, Point anchor = Point(-1, -1),

                       double delta = 0, int borderType = BORDER_DEFAULT);

#openCV에서 일방적인 필터링을 적용하는 함수

 

엠보싱 필터링

입력 영상을 엠보싱 느낌이 나도록 변환하는 필터

보통 입력 영상에서 픽셀 값 변화가 적은 평탄한 영역을 회색으로 설정

객체의 경계 부분은 좀 더 밝거나 어둡게 설정하면 엠보싱 느낌이 난다.

엠보싱 필터 마스크

[코드]

float data[] = { -1, -1, 0, -1, 0, 1, 0, 1, 1 };
Mat emboss(3, 3, CV_32FC1, data);

#3 x 3사이즈로 엠보싱에 사용될 마스크를 생성한다.

 

Mat dst;
filter2D(src, dst, -1, emboss, Point(-1, -1), 128);

#filter2D()함수를 사용하여 dst에 결과 이미지를 뿌려준다.

엠보싱 효과 사용

블러링 : 영상 부드럽게 하기

블러링(Bluring) :  초점이 맞지 않은 사진처럼 영상을 부드럽게 만드는 필터링

스무딩(smoothing)이라고도 한다.

영상의 인접한 픽셀 값 변화가 크지 않은 경우 부드러운 느낌을 줄 수 있다.

영상에 존재하는 잡음의 영향을 제거하는 전처리 과정으로도 사용된다.

 

평균값 필터

입력 영상에서 특정 픽셀과 주변 픽셀들의 산술 평균을 결과 영상 픽셀 값으로 설정하는 필터

결과 영상은 픽셀 값의 급격한 변화가 줄어들어 에지가 무뎌지고 잡음의 영향이 크게 사라진다.

마스크 크기가 커지면 사물의 경계가 흐릿해지고, 사물의 구분이 어려워 질 수 있다.

평균값 필터 마스크

void blur(InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1, -1),

                                                                                     int borderType = BORDER_DEFAULT);

#blur()함수를 사용하여 평균값 필터링을 적용할 수 있다.

 

가우시안 필터

가우시안 분포는 평균을 중심으로 좌우 대칭의 종 모양(bell shape)을 갖는 확률 분포를 말하며 

정규 분포라고도 한다.

가아수안 분포는 평균과 표준 편차에 따라 분포 모양이 결정된다.

영상에선 평균이 0 인 가우시안 분포 함수를 사용한다.

표준 편차가 작으면 그래프가 뾰족한 형태, 크면 그래프가 넓게 퍼지면서 완만해진다.

편차에 따르는 가우시안 분포

가우시안 필터링 : 필터링 대상 픽셀 근처에 가중치를 크게 주는 것

가중 평균(weighted average)을 구하는 것과 같다.

 

마스크에 의한 영상 필터링은 마스크 크기가 커짐에 따라 연산량도 증가한다.

큰 표준 편차 값을 사용하면 마스크 크기도 커지므로 연산 속도 측면에서 부담이 될 수 있다.

하지만 2차원 가우시안 분포 함수를 1차원 가우시안 분포 함수의 곱으로 분리하여 연산량을 줄일 수 있다.

 

void GaussianBlur(InputArray src, OuputArray dst, Size ksize, double sigmaX, double sigmaY = 0, 

                                                                                          int borderType = BORDER_DEFAULT);

#가우시안 필터링을 수행하는 함수

가우시안 필터링 적용

영상이 전체적으로 선명해진다.

샤프닝 : 영상 날카롭게 하기

샤프닝(Sharpening) : 영상을 날카로운 느낌이 나도록 변경하는 필터링 기법

객체의 윤곽이 뚜렷하게 구분되는 영상을 의미함

샤프닝 기법을 구현하기 위해서 블러된 영상을 이용한다.

언샤프한 영상(블러 영상)을 이용하여 역으로 날카로운 영상을 생성하는 필터를 언샤프 마스크 필터라고 한다.

언샤프 마스크 동작 방식
언샤프닝 필터링

영상이 조금더 날이 선것을 확인 할 수 있다.

잡음 제거 필터링

잡음(noise) : 원본 신호에 추가된 원치 않은 신호

주로 영상을 획득하는 과정에서 발생한다. 센서(sensor)에서 주로 잡음이 추가됨

 

잡음 모델(noise model) : 잡음이 생성되는 방식

대표적 잡음 모델 : 가우시안 잡음 모델

 

void randn(InputOutputArray dst, InputArray mean, InputArray stddev);

#가우시안 잡음으로 구성된 행렬을 생성하여 반환한다.

 

[코드]

Mat noise(src.size(), CV_32SC1);
randn(noise, 0, 5);
add(src, noise, src, Mat(), CV_8U);

#노이즈를 생성하여 영상에 더한다.

 

양방향 필터

가우시안 잡음을 제거하기 위해서 가우시안 필터를 사용한다.

하지만 잡음이 줄어들면서 엣지도 무뎌져 객체의 윤곽이 흐릿하게 바뀐다.

따라서 엣지 보전 잡음 제거 필터(edge-preserving noise removal filter)가 등장했다.

양방향 필터 공식

총 두번의 가우시안 분포 값을 따른다.

첫번짼 픽셀 값에 의한 가우시안 분포를 적용하고, 두번째는 픽셀 값 위치에 의한 가우시안 분포를 적용한다.

 

void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace,

                                                                                               int boderType = BORDER_DEFAULT);

#양방향 필터 수행

양방향 필터 수행

src는 가우시안 잡음이 추가된 lenna이다.

가우시안 필터는 잡음을 제거 하지만 영상이 블러도니다.

하지만 양방향성 필터는 잡음이 제거되도 영상이 블러되지 않는다.

 

미디언 필터

미디언 필터는 입력 영상에서 자기 자신 픽셀과 주변 픽셀 값 중에서 중간값(median)을 선택하여 결과 영상 픽셀

값으로 설정하는 필터링 기법

중간값 선택을 위한 내부에서 픽셀값 정렬 과정이 사용된다.

소금 & 후추 (salt & pepper noise)잡음에 효과적이다,

미디언 필터 실행 과정

void medianBlur(InputArray src, OutputArray dst, int ksize);

#미디언 필터링 수행

미디언 필터링

소금 후추 잡음에 대해 가우시안 필터링 보다 미디언 필터링이 효과적이다.

ex_bilateral.cpp
0.00MB
ex_embossing.cpp
0.00MB
ex_gaussian.cpp
0.00MB
ex_median.cpp
0.00MB
ex_unsharpmask.cpp
0.00MB

반응형
Comments