1. 서 론
최근 영상처리 기술의 발달로 얼굴 인식이나 물체 인식 등의 기술을 기반으로 스마트폰뿐만 아니라 카메라, 태블릿 등의 다양한 IT기기와 접목한 사용자 편의 기능들이 소개됨에 따라 영상 인식 분야에 대한 관심이 증가하고 있다. 따라서 인식 정확도를 향상시키기 위한 연구와 이를 기반으로 한 서비스 연구가 활발히 진행되고 있다. 다양한 하드웨어 장비에 영상처리를 지원하기 위한 기능들이 내장되고, 응용 프로그램을 통해 활용하는 서비스들이 등장했다. 또한 오픈 소스 컴퓨터 비전 라이브러리인 OpenCV를 이용한 라이브러리 구축 및 연구가 활발히 진행되고 있다. 영상으로부터 원하는 정보를 인식하기 위해서 크게, 목표대상 영역을 검출하고 영상 정보 중 특징 영역의 위치를 탐색한 뒤 최종적으로 인식하는 과정으로 이루어진다. 이때 인식뿐만 아니라 영상처리 영역 전반에 걸쳐 사용되는 것이 노이즈 필터링 절차이다.
노이즈 필터링은 영상 처리에서 빼놓을 수 없는 중요한 처리과정이다. 주로 영상의 잡음을 제거하거나 손상을 줄이기 위한 용도로 사용된다. 노이즈 필터는 여러 항목으로 분류 될 수 있는데, 특히 스무딩 연산을 위한 대표적인 필터로는 Gaussian filter, Mean filter, Median filter, Bilateral filter 등이 있다. 대부분의 필터들은 영상 정보 중 특징들의 정보나 특성을 기반으로 필터를 수행하는 것이 아닌 이웃 픽셀과 마스크 등을 이용해 연산을 수행한다. 따라서 이웃 픽셀과 대비되는 픽셀들이 마스크에 의해 가중치가 부여되어 두드러지거나, 이웃 픽셀 평균과의 차이 등을 통해 노이즈를 이웃 픽셀에 근사한 값으로 대체하여 노이즈를 제거, 혹은 완화시키는데 효과적이다. 하지만 노이즈 필터를 수행한 후에도 노이즈가 완전히 제거되지 않을 수 있다. 또한 특징 영역의 특성이나 정보를 활용하지 않기 때문에 특징 점과 노이즈들을 구분하여 필터링을 하지 않아 반복적인 필터링으로 특징 점의 손실이 발생할 수 있다.
본 논문에서는 전처리 단계를 통해 얻은 입력영상에 대해 노이즈를 제거하는 것이 아닌, 기울기 값을 계산하여 노이즈를 판단하기 위한 기준으로 활용한다. 노이즈를 판별하고 노이즈로 판별된 개체에 대해 특징벡터의 기울기에 해당하는 값으로 보정하면서 입술 모양의 특징 벡터를 생성하는 기법에 대해 제안하였다.
본 논문의 구성은, 2장에서 본 논문에서 기본이 되는 관련 연구에 대하여 고찰한 다음, 3장에서 제안하는 입 영역에서 외곽선의 기울기 보정을 통해 특징 벡터를 생성하는 기법을 제시한다. 여기에서는 특징 벡터 생성을 위한 전처리 과정과 초기 외곽선 추출, 그리고 기울기 보정 방법과 그에 따른 결과 순으로 서술한다. 그리고 4장에서는 결론을 맺는다.
2. 관련 연구
2.1 Otsu's method
Otsu’s method는 영상을 이진화하기 위한 임계값을 계산하는 통계학적인 방법이다. 영상을 두 클래스로 나눌 때 클래스 내 분산이 최소가 되는 값을 계산해 영상을 두 개의 클래스로 나누기 위한 임계값을 구한다[1].
식(1)에 의해 전체 분산은 클래스 내 분산과 클래스 간 분산의 합으로 나타낼 수 있다.
식(2)에 의해 두 클래스 내 분산의 합을 정의한다. 식(3)에서 Otsu는 클래스 내 분산이 최소화 되는 값은 클래스 간 분산이 최대가 되는 값임을 보였다.
식(4)에서 가중치 ω(i)는 전체 영상에서 클래스 내에서 해당 픽셀이 나타날 확률을 의미한다. x(i)는 i번째 히스토그램 bins의 중앙값을 나타내며, 식(3)과 식(4)에 의해서 각각 ω1와 μ1을 계산하여 클래스 간 분산이 최대가 되는 값 t를 구할 수 있고 ω2와 μ2 또한 위 식에 의해서 구해질 수 있다. 클래스 간 분산은 클래스 내 분산의 역이므로 클래스 내 분산이 최소가 되는 값 t를 임계값으로 정의한다[2].
2.2 Laplacian
Laplacian 연산은 Marr에 의해 영상 처리에서 사용되었다[5].
Laplacian 연산이 2차 미분 항으로 구성되어있으며, Computer Vision Library인 OpenCV에서는 Laplacian을 구현할 때 내부적으로 Sobel 연산자를 사용하고 있다.
cvLaplace() 함수는 원본 영상 src와 결과 영상 dst를 인자로 입력받고, aperture_size에는 커널의 크기를 입력받는다. Laplacian 연산은 일반적으로 blob 검출에 사용된다. 주변 픽셀보다 큰 값으로 둘러싸인 작은 blob또는 한 점에서 큰 양수 값을 반환하고, 주변보다 작은 값으로 둘러싸인 점 또는 blob에서는큰 음수 값이 반환된다. 이러한 특성으로 Laplacian 연산은 Edge Detection에도 활용된다[3,6].
Table 1.Implementation of laplacian operator in OpenCV
2.3 OpenCV
OpenCV(Open Computer Vision)은 오픈 소스 컴퓨터 비전 라이브러리이다. C, C++, Java, Python을 지원한다. 최적화된 C/C++ 언어로 작성되어 멀티코어 프로세서의 장점을 활용할 수 있도록 설계되었다. 또한 실시간 영상 처리가 가능하도록 지원하기 위해서 계산 효율성을 고려하여 설계되었고, OpenCV 라이브러리는 Windows, Linux, Mac OS, iOS, Android 플랫폼에서 동작한다.[4]
2.4 Histogram
영상처리에서 히스토그램은 영상 정보를 분석하기 위한 용도로 이용된다. 히스토그램은 디지털 이미지의 색조 분포를 시각화해서 보여준다. 이미지 히스토그램이라고도 하며, 많은 카메라에 기본적으로 내장되어 있다. 히스토그램은 색상의 분포나, 특정 객체를 구분하는 등 다양한 용도로 사용된다. 일반적으로 그래프의 가로축은 톤의 변화를 나타내며, 세로축은 특정 톤에서의 픽셀 수로 정의된다[7].
2.5 Face detection
얼굴 검출은 얼굴 인식을 위해 선행되어야 할 과정이다. 사람의 얼굴을 검출해내기 위해서는 크기와 색상, 조명 등 얼굴이 가지는 특징 요소들을 정의하고 검출해야 한다. 하지만 모든 얼굴들에 대해 특징을 정의하고 검출하는 것은 불가능에 하다.
기존의 연구[9-12]에서 Viola, Jones는 integral image 방식을 활용하여 빠르게 특징들을 평가할 수 있도록 이미지를 새로운 방식으로 나타내었다. 또한 객체가 가지는 공통적인 특징을 정의할 Haar-like feature set을 사용하고 다양한 스케일에서 feature set을 빠르게 연산하기 위해 이미지를 integral image로 표현하는 방법을 제시했다. 하나의 이미지에 대해 integral image를 적용하여 각 픽셀 당 수회의 연산으로 계산을 할 수 있고, 계산 후에는 어떠한 조건의 haar-like feature도 일정 시간에 계산해 낼 수 있다. 또한 adaboost를 활용해 중요한 feature들을 이용하여 효율적인 분류기를 구성해 강한 분류기를 생성해내고, cascaded classfier 구성을 통해 빠른 속도로 영상처리를 수행하며 높은 검출률을 달성한 실시간 얼굴 검출 프레임워크를 제안했다[8].
2.6 Lip Extraction
입술을 추출하기 위한 연구는 얼굴에서 입술이 일반적으로 위치하는 위치에 근거한 방법, 색상정보의 차이를 이용한 방법이나 Active contour등 다양한 접근법이 연구되고 있다. 특히 기존의 연구에서 입술의 색상 특징 정보를 분석결과에서 그레이 영상에서 보다 RGB채널 중 Green채널에서 피부와 윗입술간의 성분 차이가 두드러지고, 아랫입술에서는 Red채널과 Green채널 성분의 차영상이 피부와 아랫입술 간의 성분 차이가 크게 나타나는 것을 분석했다[13]. 본 연구에서는 전처리 과정의 일부에 적용하였다.
3. 특징 벡터 생성 기법
본 논문에서 제안하는 방법은 입 영역에서 외곽선을 추출하고 기울기를 기준으로 노이즈를 판단하고 보정해나가면서 특징 벡터를 생성하는 것이다. 본 절에서는 특징 벡터를 생성하기에 앞서 전처리 과정과 외곽선을 추출하는 과정, 기울기 계산으로부터 노이즈 판단 및 보정을 거쳐 최종적으로 얼굴 특징벡터를 생성하는 순으로 서술한다. Fig. 1은 특징 벡터를 생성하기 위한 흐름을 나타낸 활동 다이어그램이다.
Fig. 1.Activity diagram for feature vector generation.
입술 영역의 특징 벡터를 생성하기위해 얼굴 검출과 얼굴 특징에 대한 검출을 선행 작업으로 수행한다. 얼굴과 얼굴 특징에 대해 성공적으로 검출이 되면 다음 단계로 넘어간다. 이때, 얼굴의 중앙선 검출과 입술의 코너점 검출, 그리고 특징 벡터 생성을 위한 입술 모양 추출이 수행된다. 얼굴의 중앙선과 입술의 코너점은 입술의 초기 외곽선을 추출하는 단계에서 허용 범위로 활용 된다.
입술 모양이 추출되면 입술 모양의 초기 외곽선을 추출한다. 이후 점들 간의 기울기 보정 절차를 거쳐 최종적으로 특징벡터를 생성한다.
3.1 특징 벡터 생성을 위한 전처리
특징 벡터를 생성하기 위한 전처리 과정은 원본 영상에서 특징벡터를 생성하기위한 전처리 과정은 크게 3단계로 나누어진다. 첫 단계는 입력 영상에 대해서 얼굴을 검출하여 얼굴의 특징을 검출하는 단계이고 3.1.1절에서 다룬다. 두 번째 단계는 얼굴의 중심선을 검출하는 단계이고 3.1.2절에서 내용을 다룬다. 마지막 단계는 특징벡터를 생성하기 위한 입력 영상을 만드는 단계로 3.1.3절에서 내용을 다룬다. Fig. 2는 각 단계를 수행하기 전 가장 먼저 수행되는 전처리의 기본 단계를 나타낸다. 이 단계에서는 크게 3단계로 나누어 원본 영상에 대해 얼굴 검출과 얼굴의 특징 검출을 위한 프로세스를 수행한다.
Fig. 2.Basis step of pre-processing
최초 입력 영상에서 Adaboost 알고리즘을 통해 학습된 분류기를 이용하여 얼굴을 검출한다. 얼굴 검출 시에는 OpenCV 라이브러리에서 제공하는 기본 데이터 셋을 이용하였으나, 정면 얼굴에 집중된 데이터를 사용함으로써 각각의 얼굴 특징에 대해 더 높은 검출률을 얻을 수 있었다. 얼굴 검출이 수행된 후에는 얼굴이 가지는 각각의 특징인 눈, 코, 입을 검출한다. 이때, 각각의 특징부위별로 관심영역을 지정할 때 실험적인 결과를 바탕으로 일정 비율 확장하여 얼굴의 특징이 관심영역 안에 포함될 수 있도록 관심영역을 지정했다.
3.1.1 얼굴의 중심선 검출
각 전처리 단계를 수행하기 위하여 원본 영상에 대한 얼굴 검출과 얼굴 특징 검출에 대한 관심영역이 지정되고 나면, 얼굴의 중심선 검출을 수행한다. 얼굴의 중심선 검출은 Fig. 3과 같이 크게 5단계의 수행 절차를 거쳐 수행된다.
Fig. 3.Detecting center-line of face.
본 연구에서는 얼굴의 특징 요소를 검출하기에 앞서, 기준점으로서 활용하기 위한 기준치로 얼굴의 중심선을 고려하였다. 기본적인 방향은 얼굴의 중심선을 검출하기 위해 두 콧구멍을 검출 한 후, 두 콧구멍의 중심을 얼굴의 중심선으로 지정한다. 얼굴의 두 콧구멍을 검출해내기 위해서 HSV색상공간에서 S채널을 활용하여 이진화를 통해 두 콧구멍을 검출한다. 이렇게 정의된 얼굴의 중심선은 얼굴의 중심축으로 서 입술의 양 끝 코너점과 윗입술에 대한 두 개의 봉우리 부분을 찾기 위해 입술의 중심 x 값을 정하는 기준으로 활용된다. Fig. 4는 원본 영상에 대해 얼굴의 중심선을 표시한 영상을 나타낸다.
Fig 4.Center-line of face.
3.1.2 입술의 양 끝점 검출
얼굴의 중심선이 정의되면, 입술의 초기외곽선 추출하고 특징벡터를 생성하기 위해서 입술의 특징 벡터 영역의 범위를 정의해야 한다. 입술 특징 벡터 영역의 범위를 정의하기위해 입술의 양 끝점 검출을 수행한다. Fig. 5는 입술의 양 끝 코너점을 정의하기 위한 6 단계의 수행 절차를 나타낸다.
Fig. 5.Detecting corner-points of mouth.
입술 영역의 양 끝점을 추출하기 위해 Laplacian 연산을 사용하였으나, 캐니 에지 검출기의 결과보다 두꺼운 에지 성분이 나타나기 때문에 입술의 양 끝점을 추출하는데 캐니 에지 검출기가 더 적합함을 확인하였다. 따라서 입술 관심영역을 채널분리를 통해 Green채널 영상을 획득한다. 이후 Green채널 영상에 대해 캐니 에지 검출기를 이용하여 에지를 검출한다. 검출된 에지에 대해 모폴로지 팽창-침식 연산을 수행한다. 이후 레이블링을 수행하여 입술 이외의 영역을 제거한다. 마지막으로 중심축에 대해서 좌우에 존재하는 최외곽 코너점을 선택한다.
3.1.3 특징 벡터 생성을 위한 입술 영역 검출
입술의 초기 외곽선 및 특징 벡터를 생성하기 위한 입술 영역을 검출하기 위한 단계로 수행절차는 Fig. 6과 같은 절차를 수행한다.
Fig. 6.Input image for feature vector generation.
입술의 양 끝점이 선택되면, 입술 관심 영역을 R, G, B 각각의 단일 채널로 분리한다. 윗입술에 대하여 Green 영상을 이용해, Laplacian 연산을 수행한다. 이때, Laplacian 커널의 크기를 5로 적용하여 두꺼운 에지를 검출한다. 입 영역이 포함된 관심 영역은 크게 입술과 피부성분으로 구분할 수 있다. 따라서 두 개의 클래스로 분할하여 이진화를 수행해야 좋은 결과를 얻을 수 있기 때문에 통계적인 방법인 Otsu 방법을 이용하여 검출된 에지영상에 대해 이진화를 수행한다. 이진화 영상에서 형태를 가다듬기 위한 용도로 모폴로지 팽창-침식 연산을 수행한다. 수행된 결과를 레이블링을 통해 입술을 걸러내고 미디언 필터를 거쳐 초기 외곽선 추출 전 단계의 과정을 마친다.
아랫입술에 대해 Red-Green 차영상을 이용하여 윗입술이 수행했던 추가적인 연산을 수행하지 않고, Otsu 방법을 이용해 이진화를 수행한다.
이 단계는 전처리의 마지막 단계로 최종 산출물은 특징 벡터 생성을 위해 초기외곽선의 입력 영상으로 활용한다. Fig. 7은 특징 벡터 생성을 위한 전처리 단계를 마친 영상을 나타낸다. (a)는 윗입술 추출 시 사용할 영상을 나타내며, (b)는 아랫입술 추출 시 활용할 영상의 결과이다.
Fig. 7.Results of pre-processing (a)Upper lip, (b) Lower lip.
3.2 초기 외곽선 선택
전처리 과정을 마친 영상에 대해 특징 벡터를 생성하기 위해서는 3단계로 이루어진다. 먼저 최외곽점을 추출하고, 최외곽점을 이용해 특징벡터와 남아 있는 오류점에 대하여 기울기를 이용해 보정한다. 기울기 보정을 한 후, 최종적으로 특징벡터를 추출한다. Fig. 8은 특징벡터 생성 절차를 나타낸다.
Fig. 8.Process of feature vector generation.
전처리 과정을 마친 영상(Fig. 7)에 대하여 입술좌표들을 선택한다. 초기 좌표는 윗입술과 아랫입술 각각의 관심 영역 범위 안에서 x축에 대하여 1씩 증가하는 방향으로 최상단, 최하단 y좌표들을 선택한다. Fig. 9(a)는 윗입술의 초기 외곽 점을 나타내고, (b)는 아랫입술의 초기 외곽 점을 나타낸다.
Fig. 9.Initial outline of lip shape (a) Upper lip, (b) Lower lip.
3.3 기울기 보정
초기 외곽선은 Fig. 9에서 나타난 것과 같이 입술의 특징벡터와 노이즈를 포함하고 있다. 본 연구에서는 노이즈를 판별하기 위한 방법으로 기울기 보정을 제안했다. 기울기 보정은 입술의 코너점의 기울기를 기본으로 노이즈를 판별하고, 이어지는 세 개의 점 p1,p2,p3에서 각 점들 간의 기울기를 추가적으로 확인하여 노이즈를 보정한다.
이때, x축의 변화량은 균등하기 때문에, 기울기는 y축에 변화량을 검사하며 동작한다. 따라서 부드러운 형태를 나타내기 위해 입술의 기울기 변화량은 식(7)과 같다. OpenCV에서는 (x,y) = (0.0) 의 좌표가 좌측 최상단이 기준이 된다.
Fig. 10은 기울기 보정이 수행되는 절차를 나타낸다.
Fig. 10.Gradient correction operation.
초록색 원은 입술의 코너점을 나타낸다. 본 연구에서는 상, 하에 존재하는 코너점을 선택하기 위해 얼굴의 중심선에서 입술의 좌, 우 코너점까지의 길이를 구하고 약 1/4지점의 허용범위를 두어 최상단 지점을 정하였다. 빨간 점은 초기 외곽으로 추출된 점들의 집합이며, 빨간 점선으로 이루어진 원은 초기 외곽점에 포함된 오류점들이다. 보라 점은 오류점들이 기울기 보정에 의해 치환된 점들이다. 초록색 선은 점과 점사이의 기울기를 나타내는 점들이며 빨간 점선은 기울기 보정 후의 기울기를 나타내는 선분이다. 파란 선은 코너점 간의 평균기울기를 의미한다.
Fig. 11에서 흰색 선은 윗입술에 대해 기울기 보정을 위한 각각의 코너점과 보정전의 점들 간의 기울기를 이은 선을 나타내며, (a) x축에 대해 입술 영역의 최대 허용 범위, (b) x축에 대해 입술의 봉우리로 간주할 수 있는 최대 허용 범위, (c) 윗입술로 간주할 수 있는 최대 허용 범위를 나타낸다.
Fig. 11.Gradient of point to point(white line) (a) x-axis bounds of lip (b) x-axis bounds of peak of lip (c) y-axis bounds of upper lip.
윗입술과 아랫입술에 대해서 동일한 방법으로 기울기 보정을 수행한다. 최종적으로 보정이 수행된 영상은 Fig. 12에 나타난다. (a)와 (b)는 각 영상의 특징 벡터로, 상단부터 차례대로 윗입술, 아랫입술, 원본 영상에 특징 벡터를 투영시킨 결과를 나타낸다.
Fig. 12.Feature vector generation from image (a), (b).
5. 결 론
기존 노이즈 필터링 기법은 이웃 픽셀간의 대비나 마스크를 정의하기에 따라서 효과적으로 노이즈를 제거할 수 있는 방법이다.
하지만 특징 영역의 특성이나 정보를 활용하지 않기 때문에 특징점과 노이즈를 구분하여 제거할 수 없다.
따라서 본 논문에서는 특징 벡터를 생성하기 위한 전처리 과정을 수행한 후, 초기 외곽선을 추출하고 잔여 노이즈를 제거하기 위한 접근법이 아닌, 기울기 값을 계산하여 노이즈를 판단하기 위한 기준으로 활용하여 노이즈를 추정하고 특징벡터의 기울기에 해당하는 값으로 보정하면서 입술 모양의 특징 벡터를 생성하는 기법에 대해 제안하였다.
향후 연구에서는 얼굴의 전체 특징 벡터 생성을 위해 얼굴의 특징 중 얼굴의 전체 윤곽과 눈, 코 영역에 대한 특징 요소를 정의하고 각각의 특징 요소 별로 노이즈와 특징 벡터를 구분할 수 있는 선형 알고리즘에 대한 연구를 진행할 예정이다.
References
- Otsu Nobuyuki, "A Threshold Selection Method from Gray-Level Histograms," IEEE Transactions on Systems, Man and Cybernetics, Vol. 9, Issue 1, pp. 62-66, 1979. https://doi.org/10.1109/TSMC.1979.4310076
- Otsu's Method, http://en.wikipedia.org/wiki/Otsu's_method#cite_note-Otsu-2 (accessed July, 20, 2014).
- Laplace Operator, http://en.wikipedia.org/wiki/Laplace_operator (accessed July, 20, 2014)
- OpenCV, http://opencv.org/ (accessed Aug., 2, 2013).
- G.R Bradski and A. Keahler, Learning OpenCV, Hanbit Media, Seoul, 2009.
- Image histogram, http://en.wikipedia.org/wiki/Image_histogram#Image_manipulation_ and_histograms (accessed July, 20, 2014).
- P. VIOLA and M.J. JONES, "Robust Real-Time Face Detection," International Journal of Computer Vision, Vol. 57, Issue 2, pp. 137-154, 2004. https://doi.org/10.1023/B:VISI.0000013087.49260.fb
- C.P. Papageorgiou, M. Oren, and T. Poggio, "A General Framework for Object Detection," Proceeding of 6th International Conference on IEEE Computer Vision, pp. 555-562, 1998.
- Y. Freund, R.E Schapire, and N. Abe, "A Short Introduction to Boosting," Journal-Japanese Society For Artificial Intelligence, Vol. 14, No. 5, pp. 771-780, 1999.
- Y. Freund and R.E. Schapire, "Experiments with a New Boosting Algorithm," Proceeding of the 13th International Conference, Machine Learning, pp. 148-156, 1996
- R.E Schapire, Y. Freund, P. Bartlett, and W.S. Lee, "Boosting the Margin: A New Explanation for the Effectiveness of Voting Methods," The Annals of Statistics, Vol. 26, No. 5, pp. 1651-1686, 1998. https://doi.org/10.1214/aos/1024691352
- E.J. Han, B.J. Kang, and K.R. Park, "A Study on Enhancing the Performance of Detecting Lip Feature Points for Facial Expression Recognition based on AAM," Korea Information Processing Society, Vol. 16-B, No. 4, pp. 299-308, 2009. https://doi.org/10.3745/KIPSTB.2009.16-B.4.299
- H.B. Kwon, D.J. Kwon, U.D. Chang, Y.B. Yun, and J.H. Ahn, "A Facial Detection using the Skin Color and Edge Information at YCrCb," Journal of Korea Multimedia Society, Vol. 7, No. 1, pp. 27-34, 2004.
- J.H. Park, J.J. Jung, and G.B. Kim, "Feature Vectors Generation Technique through Gradient Correction of Outline in Mouth Region", Proceeding of the Spring Conference of the Korea Multimedia Society, Vol. 17, No. 1, pp. 18-19, 2014.