KR20210109167A - 3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치 - Google Patents

3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치 Download PDF

Info

Publication number
KR20210109167A
KR20210109167A KR1020200024067A KR20200024067A KR20210109167A KR 20210109167 A KR20210109167 A KR 20210109167A KR 1020200024067 A KR1020200024067 A KR 1020200024067A KR 20200024067 A KR20200024067 A KR 20200024067A KR 20210109167 A KR20210109167 A KR 20210109167A
Authority
KR
South Korea
Prior art keywords
region
image
skin
area
human
Prior art date
Application number
KR1020200024067A
Other languages
English (en)
Inventor
윤호섭
박성우
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200024067A priority Critical patent/KR20210109167A/ko
Publication of KR20210109167A publication Critical patent/KR20210109167A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • G06T5/005
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30004Biomedical image processing
    • G06T2207/30088Skin; Dermal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • G06T2207/30201Face

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

기재된 실시예는 사람의 영상으로부터 머리카락 영역을 쉽고 간단하게 검출하는 방법에 관한 것으로서, 깊이 영상을 기반으로 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출하는 단계, 상기 휴먼 영역에서 얼굴 주변 영역을 검출하는 단계, 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부영역을 제거하여 피부 제외 영역을 검출하는 단계 및 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류 영역을 제거하여 머리카락 영역을 검출하는 단계를 포함하는, 3D 카메라를 이용한 머리카락 영역 검출 방법이 제공될 수 있다.

Description

3D 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치 {METHOD FOR DETECTING HAIR REGION USING 3D CAMERA, AND APPARATUS FOR THE SAME}
본 발명은 3D 카메라를 이용하여 사람의 영상으로부터 쉽고 간단하게 머리카락 영역을 검출하는 기술에 관한 것이다.
현재 가상 헤어스타일 디자인, 가상 인간 모델, 가상 이미지 디자인 등에 머리카락 영역 검출 기술을 매우 유용하다. 그러나 현대인의 다양한 헤어스타일, 머리카락의 색상 및 밝기로 인해 머리카락의 검출은 매우 도전적인 연구 주제가 되었다.
종래의 카메라를 이용한 머리카락 검출 방법은 주로 인공지능의 머신 러닝 또는 딥러닝을 이용하여 미리 준비된 데이터 셋을 가지고 학습하여 검출하는 방식으로 진행된다.
딥러닝을 이용한 머리카락 검출 방식은 머리카락이 분할된 데이터셋이 많이 필요하고, 딥러닝 모델을 감당할 수 있는 높은 사양의 컴퓨터가 필요하다. 그러나 현재 머리카락이 분할되어 있는 데이터셋 중 다운받아 쓸 수 있는 데이터는 약 6,000개에 불과하고, 실제 머리카락 분할을 통해 컨텐츠를 개발하기 위해서는 많은 인력을 고용해 다량의 고수준의 데이터셋을 만들어내야 한다. 따라서 딥러닝을 이용한 머리카락 검출 방식은 정확도가 보장되는 반면, 그 소요 비용이 상당하다.
현재 머신러닝을 이용한 머리카락 검출 방식은 LTP, HOG, SIFT 등 기술자를 이용하여 이미지의 대표 기술자를 추출한 다음 머신러닝 기법(주로 Random Forest)를 사용해 어느정도 머리 영역의 윤곽을 잡은 다음에 그래프 컷 등을 이용해 분할을 하지만 정확도가 계획했던 것만큼 나오지 않는다. 한국 공개 특허 제 10-2100-0090764호에는 머리영역의 신뢰도 이미지를 획득하여, 상기 회복한 신뢰도 이미지를 처리하여 머리카락영역을 검출하는 단계를 포함하는 머리카락 영역 검출 방법이 개시되어 있다. 상기 방법은 피부 및 머리카락의 색깔, 주파수, 깊이 정보를 결합하여 머리카락 영역을 검출하는데 그래프 컷 방법를 이용하여 노이즈 배경에서 전체 머리카락 영역을 분할한다.
위와 같은 종래 기술은 검출의 정확성은 어느 정도 보장할 수는 있지만, 잘못된 검출을 한다면 그 원인을 알기 어려워 그 오류를 고치기가 쉽지 않다. 그리고 데이터셋의 정확성에 대한 의존도가 높고, 딥러닝이나 머신러닝에 대한 고도의 지식도 필요하며, 무엇보다도 비용의 부담이 상당하다.
따라서 위 종래 기술들이 가지는 문제점을 해결하고, 쉽고 간단하게 머리카락 영역을 검출하는 기술의 필요성이 대두된다.
본 발명의 목적은, 3D 카메라를 이용하여 사람의 영상으로부터 머리카락 영역을 쉽고 간단하게 검출하는 방법 및 이를 위한 장치를 제공함에 있다.
실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 방법은, 깊이 영상을 기반으로 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출하는 단계; 상기 휴먼 영역에서 얼굴 주변 영역을 검출하는 단계; 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부영역을 제거하여 피부 제외 영역을 검출하는 단계; 및 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류 영역을 제거하여 머리카락 영역을 검출하는 단계를 포함한다.
상기 얼굴 주변 영역을 검출하는 단계는 상기 휴먼 영역에 대하여 랜드마크 알고리즘을 사용하여 복수개의 랜드마크 포인트를 검출하는 단계; 적어도 하나 이상의 상기 랜드마크 포인트에 기반하여 얼굴 주변 영역을 검출하는 단계를 포함할 수 있다.
상기 피부 제외 영역을 검출하는 단계는 피부 색상의 범위에 기반하여, 색상의 값이 상기 피부 색상의 범위 내에 해당하는 영역을 피부 영역으로 생성하는 단계를 포함할 수 있다.
상기 피부 제외 영역을 검출하는 단계는 적어도 하나 이상의 상기 랜드마크 포인트로부터 얼굴의 외곽선을 검출하는 단계를 더 포함하고, 상기 얼굴의 외곽선의 내부에 위치하는 상기 피부 영역을 제거하는 것일 수 있다.
상기 의류 영역을 제거하는 단계는 상기 적외선 영상으로부터 정해진 밝기 이상의 값을 가지는 구조광(Structured Light)의 위치를 추출하는 단계; 상기 구조광의 크기를 초기값으로부터 증가시키며 구조광을 제거하는 단계를 포함할 수 있다.
상기 구조광의 위치를 추출하는 단계는 상기 랜드마크 포인트에 기반하여 두 눈 사이의 거리를 추출하는 단계; 상기 두 눈 사이의 거리로부터 상기 구조광의 크기의 초기값을 정하는 단계를 포함할 수 있다.
상기 피부 제외 영역을 검출하는 단계에서 색상 모델을 YUV 모델을 사용한 경우 상기 피부 영역을 77≤U≤127, 133≤V≤173 인 영역으로 정하는 것일 수 있다.
3D 카메라를 이용한 머리카락 영역 검출 방법은 상기 색상 영상의 기준 좌표를 상기 깊이 영상의 기준 좌표에 맞추는 단계를 더 포함할 수 있다.
상기 휴먼 영역을 검출하는 단계는 상기 깊이 영상의 깊이 값이 1보다 작거나 같은 경우는 휴먼 영역으로 저장하는 단계; 상기 깊이 영상의 깊이 값이 1보다 큰 경우는 배경 영역으로 저장하는 단계를 포함할 수 있다.
실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 장치는 깊이 영상을 기반으로 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출하는 휴먼 검출부; 상기 휴먼 영역에서 얼굴 주변 영역을 검출하는 얼굴 검출부; 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부영역을 제거하여 피부 제외 영역을 검출하는 피부 제거부; 및 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류 영역을 제거하여 머리카락 영역을 검출하는 의류 제거부를 포함할 수 있다.
본 발명에 따르면, 3D 카메라를 이용하여 사람의 영상으로부터 머리카락 영역을 쉽고 간단하게 검출하는 방법 및 이를 위한 장치를 제공할 수 있다.
도 1은 실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 장치의 일 예를 나타낸 블록도이다.
도 2는 실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 방법의 일 예를 나타낸 동작 흐름도이다.
도 3은 도 2에 도시된 영상 입력 단계의 일 예를 나타낸 동작 흐름도이다.
도 4는 도 2에 도시된 휴먼 검출 단계의 일 예를 나타낸 동작 흐름도이다.
도 5는 도 2에 도시된 얼굴 검출 단계의 일 예를 나타낸 동작 흐름도이다.
도 6는 도 2에 도시된 피부 검출 및 제거 단계의 일 예를 나타낸 동작 흐름도이다.
도 7은 도 2에 도시된 의류 검출 및 제거 단계의 일 예를 나타낸 동작 흐름도이다.
도 8은 실시예에 따른 본 발명의 활용예를 나타낸 도면이다.
도 9는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 9를 참조하여 실시예에 따른 3D 카메라를 이용한머리카락 영역 검출 방법 및 이를 위한 장치가 상세히 설명된다.
도 1은 실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 장치의 일 예를 나타낸 블록도이다.
도 1을 참조하면, 3D 카메라를 이용한 머리카락 영역 검출 장치(100)는 영상 수집부(110), 휴먼 검출부(120), 얼굴 검출부(130), 피부 제거부(140), 의류 제거부(150)를 포함하고, 상기 3D 카메라를 이용한 머리카락 영역 검출 장치의 입력으로 들어오는 3D 카메라 영상(105)과 상기 머리카락 영역 검출 장치의 출력으로 나가는 검출된 머리카락 영역(155)을 포함한다.
3D 카메라를 이용한 머리카락 영역 검출 장치(100)는 3D 카메라 영상(105)를 입력으로 받아, 본 발명에서 제안하는 3D 카메라를 이용한 머리카락 영역 검출 기술을 적용하여, 검출된 머리카락 영역(155)을 출력하는 장치이다.
영상 수집부(110)에서 3D 카메라 영상(105)의 색상 영상, 깊이 영상, 적외선 영상을 수집하여 좌표를 맞춘다. 휴먼 검출부(120)에서 상기 깊이 영상을 기반으로 상기 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출한다. 얼굴 검출부(130)에서 상기 휴먼 영역에서 얼굴 주변 영역을 검출한다. 피부 제거부(140)에서 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부영역을 제거하여 피부 제외 영역을 검출한다. 의류 제거부(150)에서 상기 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류 영역을 제거하여 검출된 머리카락 영역(155)를 생성한다.
이하에서는 3D 카메라를 Intel RealSense D400 시리즈를 사용하였을 경우의 일 예를 들어, 본 발명상의 3D 카메라를 이용한 머리카락 영역 검출 장치의 동작을 보다 상세히 설명한다.
영상 수집부(110)는 색상 영상, 깊이 영상, 적외선 영상을 수집하기 위해서는 Visual Studio 2015 professional 버전의 환경에서 github에 있는 librealsense2 라이브러리를 사용할 수 있다. 컬러 영상, 깊이 영상, 적외선 영상은 get_color_frame(), get_depth_frame(), first(RS2_STREAM_INFRARED)를 이용해 얻을 수 있다. 상기 세 영상을 얻은 후 색상 영상과 깊이 영상의 좌표를 맞추기 위해 캘리브레이션(calibration)하는 과정이 필요하다. 각 영상의 좌표를 맞추는 것은 librealsense2의 align()함수를 이용하면 쉽게 할 수 있는데, 우선 색상 영상을 깊이 영상에 맞출 것인지 깊이 영상을 색상 영상에 맞출 것인지를 정해야 한다. Intel RealSense D400 시리즈는 카메라 디자인상 출시할 때 적외선 영상이 깊이 영상에 맞춰져 있으므로, 색상 영상을 깊이 영상에 align()함수를 통해 맞춰주고, 적외선 영상은 따로 조작을 가하지 않고 그대로 쓰면 된다.
휴먼 검출부(120)는 깊이 영상만을 기반으로 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출하는 장치이다. 구체적으로 휴먼 검출부는 깊이 영상의 깊이 값이 1보다 작거나 같은 경우는 휴먼 영역으로 저장하고, 상기 깊이 영상의 깊이 값이 1보다 큰 경우는 배경영역으로 저장하는 동작을 수행한다.
휴먼 검출에 대한 알고리즘은 다양하지만 깊이 영상만을 이용하여 휴먼만 남기고 배경은 제거하는 알고리즘이 가장 일반적이다. 배경의 깊이 값은 휴먼의 깊이 값보다 훨씬 크기 때문에 배경이 휴먼과 붙어 있지 않는 한 휴먼만 남기고 배경을 지울 수 있다. 구체적으로는 distance = 1.f로 설정하여, 1m 이내에 있지 않은 깊이 값은 모두 지워 버리거나 혹은 value = 211 과 같이 아주 큰 값으로 바꾼다. 이렇게 깊이 영상만을 이용하여 배경을 지우게 되면, 휴먼 주위에 약간의 일부 배경이 붙는 현상이 생길 수 있다. 이는 카메라가 일부 배경의 깊이 값을 인식을 못하기 때문이다. 그러나 이러한 현상은 극히 일부에서 일어나고 그 발생빈도도 크지 않기 때문에 머리카락 영역을 검출하는데 있어서는 큰 영향을 주지 않는다.
얼굴 검출부(130)는 상기 휴먼 영역에서 얼굴 주변 영역을 검출하는 장치이다.
얼굴 검출부(130)는 랜드마크 알고리즘을 사용하여 복수개의 랜드마크 포인트를 자동으로 검출할 수 있다. 랜드마크 포인트((Landmark Point)는 얼굴의 각 구성요소들의 위치로, 보통의 경우 총 64개가 검출된다. 그리고 적어도 하나 이상의 랜드마크 포인트로부터 얼굴 주변 영역을 검출할 수 있는데, 모든 랜드마크 포인트의 중심점(대부분 코의 위치)을 통해 대략적인 얼굴을 해당하는 얼굴 주변 영역을 검출할 수 있다. 즉, 상기 중심점을 중심으로 모든 랜드마크 포인트를 포함하는 사각형 상자 박스를 얼굴 주변 영역으로 정할 수 있다.
그리고 새로운 정보를 얻기 위해 랜드마크 포인트를 이용해 얼굴의 외곽선을 검출하고, 상기 얼굴의 외곽선 정보는 이후 색 기반으로 얼굴 내의 피부를 지울 때 사용할 수 있다. 구체적으로는 OpenCV 함수의 Polyline으로 랜드마크 포인트의 몇 개의 지점(얼굴의 틀을 대표하는 points들의 집합)을 저장한 집합을 대입해서 넣으면 외곽선이 그려지게 되고 fillConvexPoly를 통해 Polyline 안에 있는 픽셀들을 전부 지울 수 있다.
피부 제거부(140)는 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부 영역을 제거하여 피부 제외 영역을 검출하는 장치이다.
피부를 제거하기 위한 방법에는 여러 방법이 있지만 보통 색을 기반으로 제거하는 방법이 주로 사용되고 있다. 색을 기반으로 피부를 제거할 경우, YUV 색상 모델을 사용하는 것이 바람직하다. YUV 색상 모델은 색차 신호와 밝기 신호를 분리한 색상 모델로 RGB, YIV, HSI, YIQ 등의 다른 색상 모델보다 피부 제거 효과가 뛰어나기 때문이다.
YUV 색상 모델을 사용하여 피부를 제거할 경우, Y값은 밝기이므로 피부 영역을 결정하는 데에 있어 사용하지 않고, 77≤U≤127, 133≤V≤173이 피부 영역으로 설정하여 상기 피부 영역을 제거할 수 있다. 이상과 같이 YUV 색상 모델을 사용하여 얼굴 주변 영역에서 피부 영역을 제거할 경우, 머리카락 영역 중 피부 영역과 겹치는 부분이 지워질 수 있다. 이 문제는 레이블링을 사용해 얼굴 주변 영역에 해당하는 레이블만 지우는 방법으로 해결할 수 있다. 구체적으로는 코 주변에 위치해 있는 임의의 랜드마크 포인트의 레이블을 가져오면 그 레이블이 바로 피부 영역을 대표하는 레이블이 된다. 이 레이블에 해당하는 피부 영역을 지우고 지워진 머리 영역을 원본을 이용하여 다시 복원하면 피부 영역만 제거할 수 있다.
그러나 이상과 같은 레이블링 방법을 사용하여 피부를 제거하는 경우에도 피부와 겹쳐진 머리카락 영역이 함께 제거될 수 있다. 이와 같은 문제는 앞서 얼굴 검출부(130)에서 랜드마크 포인트를 이용해 검출한 얼굴의 외곽선 정보를 이용하여, 얼굴의 외곽선 내부에 위치하는 피부 영역만을 레이블링 방법을 사용하여 지우는 것으로써 해결될 수 있다.
의류 제거부(150)는 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류영역을 제거하여 머리카락 영역을 검출하는 장치이다.
이 때 앞서 피부 제거부(140)에서 얼굴 주변 영역내의 피부를 제거하였기 때문에 레이블링 과정을 다시 진행하는 것만으로도 의류 영역을 제거할 수 있다. 즉, 남자의 경우 보통 머리카락의 길이가 짧아 머리카락 영역과 의류 영역이 서로 떨어져 있다. 이때 지워진 피부와 배경의 픽셀 값은 0이기 때문에 0을 기점으로 레이블링을 실시하면 머리카락 영역을 확실히 추출할 수 있다. 그러나 여자의 경우 보통 머리카락의 길이가 길어 머리카락 영역과 의류 영역이 겹쳐 있기 때문에 위와 같은 레이블링을 통해서만은 의류 영역 제거가 불가능하다.
따라서 이러한 문제점을 해결하기 위해 적외선 영상을 사용할 수 있다. Intel Real RealSense D400 시리즈의 탑재된 적외선 영상의 경우 패턴화된 구조의 광(Structured Light, 이하 '구조광'이라고만 함)을 사용하는데, 특히 의류 영역에 분명하고 구조광이 많이 분포되어 있다. 또한 머리카락 색과는 상관 없이 머리카락 영역에는 구조광이 없다. 따라서 구조광을 이용하면 의류 영역을 제거할 수 있다.
먼저 얼굴 경계 부분 중 턱 살짝 위쪽을 가리키는 랜드마크 포인트(CHIN.Y)를 찾는다. 그리고 적외선 영상에서 상기 랜드마크 포인트의 아래 부분에 대하여만 구조광을 추출한다. 의류 영역을 나타내는 구조광은 다른 구조광보다 그 밝기가 크기 때문에 특정 값 이상인 픽셀은 구조광으로 처리하는 방법도 있다. 그러나 이 구조광의 밝기는 상황에 따라, 사람에 따라 다 달라지고, 거리가 멀어질수록 그 밝기는 점차 줄어들어 특정 값을 통해 구조광을 추출하는 것은 바람직하지 못하다. 따라서 이상과 같은 문제를 해결하기 위하여 흑백(Grayscale) 영상을 적외선 영상과 함께 사용하는 방법을 제안한다.
Intel RealSense D400의 탑재된 적외선 영상은 흑백(Grayscale) 영상과 매우비슷한 양상을 띠고 있는데, 흑백 영상에서 밝은 부분이 적외선 영상에서도 밝다. 이러한 점에 착안하여 흑백 영상과 적외선 영상의 값의 차이의 절대값(FStructuredLight = FSL = FSL)이 특정 값보다 큰 픽셀을 구조광으로 추출할 수가 있다. FSL을 계산하는 수학식은 하기 수학식 1과 같다.
Figure pat00001
위 식에서 GRAY(i, j)는 흑백 영상의 (i, j) 좌표에서의 값을, IR(i, j)는 적외선 영상의 (i, j) 좌표에서의 값을, h는 입력 영상의 height, w는 width, FSL은 FStructuredLight를 의미한다.
이 때, FSL이 특정한 임계값보다 크면 구조광으로 볼 수 있다. 실험을 통해 상기 임계값이 40일 경우, 구조광 추출의 정확도가 가장 높음을 확인하였다. 따라서 하기 수학식 2와 같이 FSL이 임계값인 40보다 큰 영역은 Fremainlight을 255로 변경하고, FSL이 40보다 작거나 같은 영역은 Fremainlight을 0으로 변경할 수 있다. 이렇게 FSL값을 Fremainlight 변경해 저장하면, Fremainlight이 0이 아니기만 하면 구조광으로 볼 수 있어 구조광 추출에 용이하다.
Figure pat00002
위 식에서 FSL은 FStructuredLight이고, Fremainlight는 변경된 FSL 값을 의미한다.
본 발명에서 제안하는 의류 영역을 제거하는 방법은 구조광의 크기를 어느 일정한 초기값으로부터 점차 크게 하며 지워나가는 방식을 사용할 수 있다. 만약 구조광의 크기의 초기값을 13으로 정한다면, 가로가 13, 세로가 13인 정사각형 모양의 관심 영역(ROI=Region Of Interest)을 설정하고, Y > CHIN.Y에 대해서 적외선 영상과 흑백 영상으로부터 상기 수학식 1 및 수학식 2에 따라 FSL과 Fremainlight을 순차적으로 계산한다. 그리고 이렇게 계산하는 중에 같은 관심 영역안에 Fremainlight이 255인 픽셀을 발견하면, 관심 영역의 모든 값을 255로 변경하고, 다음 관심영역에 대하여 상기 동작을 똑같이 반복한다. 이때 주의해야 할 점은 FSL 및 Fremainlight를 계산하는 이미지는 적외선 영상이고, 255의 값으로 변경하는 이미지는 앞서 피부 영역을 제거한 색상 영상이다. 그리고 구조광의 크기를 점차 증가해가며 상기 동작을 반복해 의류 영역을 제거한다.
이상과 같이 의류 영역을 제거할 때, 구조광의 크기의 초기값이 중요하다. 사람(휴먼)이 카메라와 가까이 있으면 영상에서 두 눈 사이의 거리는 멀어지지만 카메라와 멀리 있으면 두 눈 사이의 거리는 좁아지므로, 이 간격을 통해 구조광의 크기의 초기값을 결정할 수 있다. 구체적으로는 구조광의 크기의 초기값은 두 눈 사이의 거리가 30픽셀 미만의 경우 3, 30에서 50픽셀 사이의 경우 5, 50에서 70픽셀 사이의 경우는 7로, 20픽셀 간격으로 초기값을 2씩 증가시켜 두 눈 사이의 거리가 150픽셀을 초과하면 15로 할 수 있다.
이상과 같은 구조광 추출 방식으로 구조광을 추출한 경우 구조광 외의 다른 잡티 또한 많이 추출된다는 문제가 있지만, 앞서 설명한 바와 같이 머리카락 영역에는 구조광이 존재하지 않으므로 잘못 추출된 잡티를 구조광으로 취급해 부풀려서 지운다고 해도 머리카락 영역 검출에는 문제가 되지 않는다.
그리고 적외선 영상에서 머리카락 영역 안에 작은 노이즈가 발생하였을 경우, 구조광을 추출하는 과정에서 머리카락 영역 안에 구멍이 생길 수 있다. 이러한 구멍은 머리카락 영역의 외곽선을 그리고 그 외곽선 안쪽에 해당하는 영역을 다시 복원함으로써 해결할 수 있다.
도 2는 실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 방법의 일 예를 나타낸 동작 흐름도이다.
도 2를 참조하면, 우선 영상 수집부에 3D 카메라 영상의 색상 영상, 깊이 영상, 적외선 영상이 입력된다(S210). 휴먼 검출부에서 상기 깊이 영상을 기반으로 상기 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출한다(S220). 얼굴 검출부에서 상기 휴먼 영역에서 얼굴 주변 영역을 검출한다(S230). 피부 제거부에서 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부영역을 제거하여 피부 제외 영역을 검출한다(S240). 의류 제거부에서 상기 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류 영역을 제거하여 검출된 머리카락 영역을 생성한다(S250).
이하에서는 3D 카메라를 Intel RealSense D400 시리즈를 사용하였을 경우의 일 예를 들어, 본 발명상의 3D 카메라를 이용한 머리카락 영역 검출 방법을 보다 상세히 설명한다.
영상 수집부는 색상 영상, 깊이 영상, 적외선 영상을 수집하는데(S210), 이때 Visual Studio 2015 professional 버전의 환경에서 github에 있는 librealsense2 라이브러리를 사용하여, 컬러 영상, 깊이 영상, 적외선 영상은 get_color_frame(), get_depth_frame(), first(RS2_STREAM_INFRARED)를 이용해 얻을 수 있다. 상기 세 영상을 얻은 후 색상 영상과 깊이 영상의 좌표를 맞추기 위해 캘리브레이션(calibration)하는 과정이 필요하다. 각 영상의 좌표를 맞추는 것은 librealsense2의 align()함수를 이용하면 쉽게 할 수 있는데, 우선 색상 영상을 깊이 영상에 맞출 것인지 깊이 영상을 색상 영상에 맞출 것인지를 정해야 한다. Intel RealSense D400 시리즈는 카메라 디자인상 출시할 때 적외선 영상이 깊이 영상에 맞춰져 있으므로, 색상 영상을 깊이 영상에 align()함수를 통해 맞춰주고, 적외선 영상은 따로 조작을 가하지 않고 그대로 쓰면 된다.
휴먼 검출부는 깊이 영상만을 기반으로 깊이 영상을 기반으로 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출한다(S220). 구체적으로 휴먼 검출부는 깊이 영상의 깊이 값이 1보다 작거나 같은 경우는 휴먼 영역으로 저장하고, 상기 깊이 영상의 깊이 값이 1보다 큰 경우는 배경영역으로 저장하는 동작을 수행한다.
휴먼 검출에 대한 알고리즘은 다양하지만 깊이 영상만을 이용하여 휴먼만 남기고 배경은 제거하는 알고리즘이 가장 일반적이다. 배경의 깊이 값은 휴먼의 깊이 값보다 훨씬 크기 때문에 배경이 휴먼과 붙어 있지 않는 한 휴먼만 남기고 배경을 지울 수 있다. 구체적으로는 distance = 1.f로 설정하여, 1m 이내에 있지 않은 깊이 값은 모두 지워 버리거나 혹은 value = 211 과 같이 아주 큰 값으로 바꾼다. 이렇게 깊이 영상만을 이용하여 배경을 지우게 되면, 휴먼 주위에 약간의 일부 배경이 붙는 현상이 생길 수 있다. 이는 카메라가 일부 배경의 깊이 값을 인식을 못하기 때문이다. 그러나 이러한 현상은 극히 일부에서 일어나고 그 발생빈도도 크지 않기 때문에 머리카락 영역을 검출하는데 있어서는 큰 영향을 주지 않는다.
얼굴 검출부는 상기 휴먼 영역에서 얼굴 주변 영역을 검출한다(S230). 이 때, 얼굴 검출부는 랜드마크 알고리즘을 사용하여 복수개의 랜드마크 포인트를 자동으로 검출할 수 있다. 랜드마크 포인트((Landmark Point)는 얼굴의 각 구성요소들의 위치로, 보통의 경우 총 64개가 검출된다. 그리고 적어도 하나 이상의 랜드마크 포인트로부터 얼굴 주변 영역을 검출할 수 있는데, 모든 랜드마크 포인트의 중심점(대부분 코의 위치)을 통해 대략적인 얼굴을 해당하는 얼굴 주변 영역을 검출할 수 있다. 즉, 상기 중심점을 중심으로 모든 랜드마크 포인트를 포함하는 사각형 상자 박스를 얼굴 주변 영역으로 정할 수 있다.
그리고 새로운 정보를 얻기 위해 랜드마크 포인트를 이용해 얼굴의 외곽선을 검출하고, 상기 얼굴의 외곽선 정보는 이후 색 기반으로 얼굴 내의 피부를 지울 때 사용할 수 있다. 구체적으로는 OpenCV 함수의 Polyline으로 랜드마크 포인트의 몇 개의 지점(얼굴의 틀을 대표하는 points들의 집합)을 저장한 집합을 대입해서 넣으면 외곽선이 그려지게 되고 fillConvexPoly를 통해 Polyline 안에 있는 픽셀들을 전부 지울 수 있다.
피부 제거부는 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부 영역을 제거하여 피부 제외 영역을 검출한다(S240).
피부를 제거하기 위한 방법에는 여러 방법이 있지만 보통 색을 기반으로 제거하는 방법이 주로 사용되고 있다. 색을 기반으로 피부를 제거할 경우, YUV 색상 모델을 사용하는 것이 바람직하다. YUV 색상 모델은 색차 신호와 밝기 신호를 분리한 색상 모델로 RGB, YIV, HSI, YIQ 등의 다른 색상 모델보다 피부 제거 효과가 뛰어나기 때문이다.
YUV 색상 모델을 사용하여 피부를 제거할 경우, Y값은 밝기이므로 피부 영역을 결정하는 데에 있어 사용하지 않고, 77≤U≤127, 133≤V≤173이 피부 영역으로 설정하여 상기 피부 영역을 제거할 수 있다. 이상과 같이 YUV 색상 모델을 사용하여 얼굴 주변 영역에서 피부 영역을 제거할 경우, 머리카락 영역 중 피부 영역과 겹치는 부분이 지워질 수 있다. 이 문제는 레이블링을 사용해 얼굴 주변 영역에 해당하는 레이블만 지우는 방법으로 해결할 수 있다. 구체적으로는 코 주변에 위치해 있는 임의의 랜드마크 포인트의 레이블을 가져오면 그 레이블이 바로 피부 영역을 대표하는 레이블이 된다. 이 레이블에 해당하는 피부 영역을 지우고 지워진 머리 영역을 원본을 이용하여 다시 복원하면 피부 영역만 제거할 수 있다.
그러나 이상과 같은 레이블링 방법을 사용하여 피부를 제거하는 경우에도 피부와 겹쳐진 머리카락 영역이 함께 제거될 수 있다. 이와 같은 문제는 앞서 얼굴 검출부(130)에서 랜드마크 포인트를 이용해 검출한 얼굴의 외곽선 정보를 이용하여, 얼굴의 외곽선 내부에 위치하는 피부 영역만을 레이블링 방법을 사용하여 지우는 것으로써 해결될 수 있다.
의류 제거부는 적외선 영상을 기반으로 상기 피부 제외 영역에서 의류영역을 제거하여 머리카락 영역을 검출한다(S250).
이 때 앞서 피부 제거부(140)에서 얼굴 주변 영역내의 피부를 제거하였기 때문에 레이블링 과정을 다시 진행하는 것만으로도 의류 영역을 제거할 수 있다. 즉, 남자의 경우 보통 머리카락의 길이가 짧아 머리카락 영역과 의류 영역이 서로 떨어져 있다. 이때 지워진 피부와 배경의 픽셀 값은 0이기 때문에 0을 기점으로 레이블링을 실시하면 머리카락 영역을 확실히 추출할 수 있다. 그러나 여자의 경우 보통 머리카락의 길이가 길어 머리카락 영역과 의류 영역이 겹쳐 있기 때문에 위와 같은 레이블링을 통해서만은 의류 영역 제거가 불가능하다.
따라서 이러한 문제점을 해결하기 위해 적외선 영상을 사용할 수 있다. Intel Real RealSense D400 시리즈의 탑재된 적외선 영상의 경우 패턴화된 구조의 광(Structured Light, 이하 '구조광'이라고만 함)을 사용하는데, 특히 의류 영역에 분명하고 구조광이 많이 분포되어 있다. 또한 머리카락 색과는 상관 없이 머리카락 영역에는 구조광이 없다. 따라서 구조광을 이용하면 의류 영역을 제거할 수 있다.
먼저 얼굴 경계 부분 중 턱 살짝 위쪽을 가리키는 랜드마크 포인트(CHIN.Y)를 찾는다. 그리고 적외선 영상에서 상기 랜드마크 포인트의 아래 부분에 대하여만 구조광을 추출한다. 의류 영역을 나타내는 구조광은 다른 구조광보다 그 밝기가 크기 때문에 특정 값 이상인 픽셀은 구조광으로 처리하는 방법도 있다. 그러나 이 구조광의 밝기는 상황에 따라, 사람에 따라 다 달라지고, 거리가 멀어질수록 그 밝기는 점차 줄어들어 특정 값을 통해 구조광을 추출하는 것은 바람직하지 못하다. 따라서 이상과 같은 문제를 해결하기 위하여 흑백(Grayscale) 영상을 적외선 영상과 함께 사용하는 방법을 제안한다.
Intel RealSense D400의 탑재된 적외선 영상은 흑백(Grayscale) 영상과 매우 비슷한 양상을 띠고 있는데, 흑백 영상에서 밝은 부분이 적외선 영상에서도 밝다. 이러한 점에 착안하여 상기 수학식 1과 같이 흑백 영상과 적외선 영상의 값의 차이의 절대값(FStructuredLight = FSL = FSL)이 특정 값보다 큰 픽셀을 구조광으로 추출할 수가 있다.
이 때, FSL이 특정한 임계값보다 크면 구조광으로 볼 수 있다. 실험을 통해 상기 임계값이 40일 경우, 구조광 추출의 정확도가 가장 높음을 확인하였다. 따라서 상기 수학식 2와 같이 FSL이 임계값인 40보다 큰 영역은 Fremainlight을 255로 변경하고, FSL이 40보다 작거나 같은 영역은 Fremainlight을 0으로 변경할 수 있다. 이렇게 FSL값을 변경해 저장하면, Fremainlight이 0이 아니기만 하면 구조광으로 볼 수 있는 장점이 있다.
본 발명에서 제안하는 의류 영역을 제거하는 방법은 구조광의 크기를 어느 일정한 초기값으로부터 점차 크게 하며 지워나가는 방식을 사용할 수 있다. 만약 구조광의 크기의 초기값을 13으로 정한다면, 가로가 13, 세로가 13인 정사각형 모양의 관심 영역(ROI=Region Of Interest)을 설정하고, Y > CHIN.Y에 대해서 적외선 영상과 흑백 영상으로부터 상기 수학식 1 및 수학식 2에 따라 FSL과 Fremainlight을 순차적으로 계산한다. 그리고 이렇게 계산하는 중에 같은 관심 영역안에 Fremainlight이 255인 픽셀을 발견하면, 관심 영역의 모든 값을 255로 변경하고, 다음 관심영역에 대하여 상기 동작을 똑같이 반복한다. 이때 주의해야 할 점은 FSL 및 Fremainlight를 계산하는 이미지는 적외선 영상이고, 255의 값으로 변경하는 이미지는 앞서 피부 영역을 제거한 색상 영상이다. 그리고 구조광의 크기를 점차 증가해가며 상기 동작을 반복해 의류 영역을 제거한다.
이상과 같이 의류 영역을 제거할 때, 구조광의 크기의 초기값이 중요하다. 사람(휴먼)이 카메라와 가까이 있으면 영상에서 두 눈 사이의 거리는 멀어지지만 카메라와 멀리 있으면 두 눈 사이의 거리는 좁아지므로, 이 간격을 통해 구조광의 크기의 초기값을 결정할 수 있다. 구체적으로는 구조광의 크기의 초기값은 두 눈 사이의 거리가 30픽셀 미만의 경우 3, 30에서 50픽셀 사이의 경우 5, 50에서 70픽셀 사이의 경우는 7로, 20픽셀 간격으로 초기값을 2씩 증가시켜 두 눈 사이의 거리가 150픽셀을 초과하면 15로 할 수 있다.
이상과 같은 구조광 추출 방식으로 구조광을 추출한 경우 구조광 외의 다른 잡티 또한 많이 추출된다는 문제가 있지만, 앞서 설명한 바와 같이 머리카락 영역에는 구조광이 존재하지 않으므로 잘못 추출된 잡티를 구조광으로 취급해 부풀려서 지운다고 해도 머리카락 영역 검출에는 문제가 되지 않는다.
그리고 적외선 영상에서 머리카락 영역 안에 작은 노이즈가 발생하였을 경우, 구조광을 추출하는 과정에서 머리카락 영역 안에 구멍이 생길 수 있다. 이러한 구멍은 머리카락 영역의 외곽선을 그리고 그 외곽선 안쪽에 해당하는 영역을 다시 복원함으로써 해결할 수 있다.
도 3은 도 2에 도시된 영상 입력 단계(S210)의 일 예를 나타낸 동작 흐름도이다.
도 3을 참조하면, 상기 영상 입력 단계는 3D 카메라로부터 색상 영상, 깊이 영상, 적외선 영상을 불러오는 단계(S310), 색상 영상의 기준 좌표를 깊이 영상의 기준 좌표에 맞추는 단계(S320), 기준 좌표가 맞춰진 색상 영상, 깊이 영상, 적외선 영상을 저장하는 단계(S330)을 포함한다.
영상 입력 단계(S210)에서 영상 수집부는 색상 영상, 깊이 영상, 적외선 영상을 수집하기 위해서는 Visual Studio 2015 professional 버전의 환경에서 github에 있는 librealsense2 라이브러리를 사용할 수 있다. 컬러 영상, 깊이 영상, 적외선 영상은 get_color_frame(), get_depth_frame(), first(RS2_STREAM_INFRARED)를 이용해 얻을 수 있다. 상기 세 영상을 얻은 후 색상 영상과 깊이 영상의 좌표를 맞추기 위해 캘리브레이션(calibration)하는 과정이 필요하다. 각 영상의 좌표를 맞추는 것은 librealsense2의 align()함수를 이용하면 쉽게 할 수 있는데, 우선 색상 영상을 깊이 영상에 맞출 것인지 깊이 영상을 색상 영상에 맞출 것인지를 정해야 한다. Intel RealSense D400 시리즈는 카메라 디자인상 출시할 때 적외선 영상이 깊이 영상에 맞춰져 있으므로, 색상 영상을 깊이 영상에 align()함수를 통해 맞춰주고, 적외선 영상은 따로 조작을 가하지 않고 그대로 쓰면 된다.
도 4는 도 2에 도시된 휴먼 검출 단계(S220)의 일 예를 나타낸 동작 흐름도이다.
도 4를 참조하면, 휴먼 검출부에 기준 좌표가 맞춰진 색상 영상이 입력된다(S410). 입력된 색상영상에 대하여 깊이 값이 1.0보다 작거나 같은지를 판단한다(S420). 만약 깊이 값이 1.0보다 크면 배경영역으로 저장하고(S430), 작거나 같으면 휴먼영역으로 저장한다(S440). 그리고 배경과 분리된 휴먼 영역의 영상을 저장한다(S450).
휴먼 검출에 대한 알고리즘은 다양하지만 깊이 영상만을 이용하여 휴먼만 남기고 배경은 제거하는 알고리즘이 가장 일반적이다. 배경의 깊이 값은 휴먼의 깊이 값보다 훨씬 크기 때문에 배경이 휴먼과 붙어 있지 않는 한 휴먼만 남기고 배경을 지울 수 있다. 구체적으로는 distance = 1.f로 설정하여, 1m 이내에 있지 않은 깊이 값은 모두 지워 버리거나 혹은 value = 211 과 같이 아주 큰 값으로 바꾼다. 이렇게 깊이 영상만을 이용하여 배경을 지우게 되면, 휴먼 주위에 약간의 일부 배경이 붙는 현상이 생길 수 있다. 이는 카메라가 일부 배경의 깊이 값을 인식을 못하기 때문이다. 그러나 이러한 현상은 극히 일부에서 일어나고 그 발생빈도도 크지 않기 때문에 머리카락 영역을 검출하는데 있어서는 큰 영향을 주지 않는다.
도 5는 도 2에 도시된 얼굴 검출 단계(S230)의 일 예를 나타낸 동작 흐름도이다.
도 5를 참조하면, 우선 얼굴 검출부에 배경과 분리된 휴먼 영상이 입력된다(S510). 얼굴 검출부는 랜드마크 알고리즘을 이용하여 랜드마크 포인트를 검출한다(S520). 상기 랜드마크 포인트의 중심점(주로 코의 위치)을 기준으로 얼굴 주변 영역을 검출한다(S530). 그리고 얼굴 주변 영역 검출에 성공했는지 여부를 판단하고(S540), 만약 얼굴 주변 영역 검출에 성공하지 못하였다면 다시 랜드마크 포인트 중심점을 기준으로 얼굴 주변 영역을 검출하는 단계(S530)로 돌아간다. 만약 얼굴 주변 영역 검출에 성공하였다면 얼굴 주변 영역 및 랜드마크 포인트를 저장한다(S550).
이 때, 얼굴 검출부는 랜드마크 알고리즘을 사용하여 복수개의 랜드마크 포인트를 자동으로 검출할 수 있다. 랜드마크 포인트((Landmark Point)는 얼굴의 각 구성요소들의 위치로, 보통의 경우 총 64개가 검출된다. 그리고 적어도 하나 이상의 랜드마크 포인트로부터 얼굴 주변 영역을 검출할 수 있는데, 모든 랜드마크 포인트의 중심점(대부분 코의 위치)을 통해 대략적인 얼굴을 해당하는 얼굴 주변 영역을 검출할 수 있다. 즉, 상기 중심점을 중심으로 모든 랜드마크 포인트를 포함하는 사각형 상자 박스를 얼굴 주변 영역으로 정할 수 있다.
그리고 새로운 정보를 얻기 위해 랜드마크 포인트를 이용해 얼굴의 외곽선을 검출하고, 상기 얼굴의 외곽선 정보는 이후 색 기반으로 얼굴 내의 피부를 지울 때 사용할 수 있다. 구체적으로는 OpenCV 함수의 Polyline으로 랜드마크 포인트의 몇 개의 지점(얼굴의 틀을 대표하는 points들의 집합)을 저장한 집합을 대입해서 넣으면 외곽선이 그려지게 되고 fillConvexPoly를 통해 Polyline 안에 있는 픽셀들을 전부 지울 수 있다.
도 6는 도 2에 도시된 피부 검출 및 제거 단계(S240)의 일 예를 나타낸 동작 흐름도이다.
도 6을 참조하면, 우선 피부 검출부에 배경과 분리된 휴먼 영상이 입력된다(S610). 그리고 YUV 색상 모델을 이용하여 Y, U, V를 구한다(S620). 이때 구해진 U와 V 가 피부 색상의 범위인 77≤U≤127, 133≤V≤173의 범위안에 들어가는지를 판단한다(S630). 만약 구해진 U와 V 가 위 범위안에 포함되면 피부로 결정되고(S650), 위 범위안에 포함되지 않으면 피부가 아닌 것으로 결정된다(S640). 랜드마크 포인트로부터 검출한 얼굴 외곽선 내부에서 앞서 피부로 결정된 영역만을 제거한다(S660). 그리고 피부가 제거된 휴먼 영상을 저장한다(S670).
피부 검출 및 제거 단계(S240)에서 피부 제거부(140)는 상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부 영역을 제거하여 피부 제외 영역을 검출할 수 있다.
피부를 제거하기 위한 방법에는 여러 방법이 있지만 보통 색을 기반으로 제거하는 방법이 주로 사용되고 있다. 색을 기반으로 피부를 제거할 경우, YUV 색상 모델을 사용하는 것이 바람직하다. YUV 색상 모델은 색차 신호와 밝기 신호를 분리한 색상 모델로 RGB, YIV, HSI, YIQ 등의 다른 색상 모델보다 피부 제거 효과가 뛰어나기 때문이다.
YUV 색상 모델을 사용하여 피부를 제거할 경우, Y값은 밝기이므로 피부 영역을 결정하는 데에 있어 사용하지 않고, 77≤U≤127, 133≤V≤173이 피부 영역으로 설정하여 상기 피부 영역을 제거할 수 있다. 이상과 같이 YUV 색상 모델을 사용하여 얼굴 주변 영역에서 피부 영역을 제거할 경우, 머리카락 영역 중 피부 영역과 겹치는 부분이 지워질 수 있다. 이 문제는 레이블링을 사용해 얼굴 주변 영역에 해당하는 레이블만 지우는 방법으로 해결할 수 있다. 구체적으로는 코 주변에 위치해 있는 임의의 랜드마크 포인트의 레이블을 가져오면 그 레이블이 바로 피부 영역을 대표하는 레이블이 된다. 이 레이블에 해당하는 피부 영역을 지우고 지워진 머리 영역을 원본을 이용하여 다시 복원하면 피부 영역만 제거할 수 있다.
그러나 이상과 같은 레이블링 방법을 사용하여 피부를 제거하는 경우에도 피부와 겹쳐진 머리카락 영역이 함께 제거될 수 있다. 이와 같은 문제는 앞서 얼굴 검출부(130)에서 랜드마크 포인트를 이용해 검출한 얼굴의 외곽선 정보를 이용하여, 얼굴의 외곽선 내부에 위치하는 피부 영역만을 레이블링 방법을 사용하여 지우는 것으로써 해결될 수 있다.
도 7은 도 2에 도시된 의류 검출 및 제거 단계(S250)의 일 예를 나타낸 동작 흐름도이다.
도 7을 참조하면, 우선 의류 제거부에 피부가 제거된 휴먼 영상이 입력된다(S710). 적외선 영상을 이용하여 FSL을 구한다(S720). 상기 FSL이 40보다 크고, Y좌표가 CHIN.Y(얼굴 경계 부분의 턱 살짝 위쪽을 가리키는 랜드마크 포인트)보다 큰지를 판단한다(S730). 만약 어떤 관심영역이 위 판단식을 통과하면 구조광으로 결정되고(S750), 위 판단식을 통과하지 못하면 구조광이 아닌 것으로 결정되어(S740), 구조광의 위치를 추출한다. 이렇게 추출된 구조광의 크기를 점점 크게 하여 구조광이 속해 있는 의류 영역을 제거한다(S760). 이렇게 의류 영역을 제거함으로써 머리 카락 영역을 추출해 내 저장하게 된다(S770).
의류 제거부는 앞서 피부 제거부에서 얼굴 주변 영역내의 피부를 제거하였기 때문에 레이블링 과정을 다시 진행하는 것만으로도 의류 영역을 제거할 수도 있다. 즉, 남자의 경우 보통 머리카락의 길이가 짧아 머리카락 영역과 의류 영역이 서로 떨어져 있다. 이때 지워진 피부와 배경의 픽셀 값은 0이기 때문에 0을 기점으로 레이블링을 실시하면 머리카락 영역을 확실히 추출할 수 있다. 그러나 여자의 경우 보통 머리카락의 길이가 길어 머리카락 영역과 의류 영역이 겹쳐 있기 때문에 위와 같은 레이블링을 통해서만은 의류 영역 제거가 불가능하다.
따라서 이러한 문제점을 해결하기 위해 적외선 영상을 사용할 수 있다. Intel Real RealSense D400 시리즈의 탑재된 적외선 영상의 경우 패턴화된 구조의 광(Structured Light, 이하 '구조광'이라고만 함)을 사용하는데, 특히 의류 영역에 분명하고 구조광이 많이 분포되어 있다. 또한 머리카락 색과는 상관 없이 머리카락 영역에는 구조광이 없다. 따라서 구조광을 이용하면 의류 영역을 제거할 수 있다.
먼저 얼굴 경계 부분 중 턱 살짝 위쪽을 가리키는 랜드마크 포인트(CHIN.Y)를 찾는다. 그리고 적외선 영상에서 상기 랜드마크 포인트의 아래 부분에 대하여만 구조광을 추출한다. 의류 영역을 나타내는 구조광은 다른 구조광보다 그 밝기가 크기 때문에 특정 값 이상인 픽셀은 구조광으로 처리하는 방법도 있다. 그러나 이 구조광의 밝기는 상황에 따라, 사람에 따라 다 달라지고, 거리가 멀어질수록 그 밝기는 점차 줄어들어 특정 값을 통해 구조광을 추출하는 것은 바람직하지 못하다. 따라서 이상과 같은 문제를 해결하기 위하여 흑백(Grayscale) 영상을 적외선 영상과 함께 사용하는 방법을 제안한다.
Intel RealSense D400의 탑재된 적외선 영상은 흑백(Grayscale) 영상과 매우 비슷한 양상을 띠고 있는데, 흑백 영상에서 밝은 부분이 적외선 영상에서도 밝다. 이러한 점에 착안하여 상기 수학식 1과 같이 흑백 영상과 적외선 영상의 값의 차이의 절대값(FStructuredLight = FSL = FSL)이 특정 값보다 큰 픽셀을 구조광으로 추출할 수가 있다.
이 때, FSL이 특정한 임계값보다 크면 구조광으로 볼 수 있다. 실험을 통해 상기 임계값이 40일 경우, 구조광 추출의 정확도가 가장 높음을 확인하였다. 따라서 상기 수학식 2와 같이 FSL이 임계값인 40보다 큰 영역은 Fremainlight을 255로 변경하고, FSL이 40보다 작거나 같은 영역은 Fremainlight을 0으로 변경할 수 있다. 이렇게 FSL값을 변경해 저장하면, Fremainlight이 0이 아니기만 하면 구조광으로 볼 수 있는 장점이 있다.
본 발명에서 제안하는 의류 영역을 제거하는 방법은 구조광의 크기를 어느 일정한 초기값으로부터 점차 크게 하며 지워나가는 방식을 사용할 수 있다. 만약 구조광의 크기의 초기값을 13으로 정한다면, 가로가 13, 세로가 13인 정사각형 모양의 관심 영역(ROI=Region Of Interest)을 설정하고, Y > CHIN.Y에 대해서 적외선 영상과 흑백 영상으로부터 상기 수학식 1 및 수학식 2에 따라 FSL과 Fremainlight을 순차적으로 계산한다. 그리고 이렇게 계산하는 중에 같은 관심 영역안에 Fremainlight이 255인 픽셀을 발견하면, 관심 영역의 모든 값을 255로 변경하고, 다음 관심영역에 대하여 상기 동작을 똑같이 반복한다. 이때 주의해야 할 점은 FSL 및 Fremainlight를 계산하는 이미지는 적외선 영상이고, 255의 값으로 변경하는 이미지는 앞서 피부 영역을 제거한 색상 영상이다. 그리고 구조광의 크기를 점차 증가해가며 상기 동작을 반복해 의류 영역을 제거한다.
이상과 같이 의류 영역을 제거할 때, 구조광의 크기의 초기값이 중요하다. 사람(휴먼)이 카메라와 가까이 있으면 영상에서 두 눈 사이의 거리는 멀어지지만 카메라와 멀리 있으면 두 눈 사이의 거리는 좁아지므로, 이 간격을 통해 구조광의 크기의 초기값을 결정할 수 있다. 구체적으로는 구조광의 크기의 초기값은 두 눈 사이의 거리가 30픽셀 미만의 경우 3, 30에서 50픽셀 사이의 경우 5, 50에서 70픽셀 사이의 경우는 7로, 20픽셀 간격으로 초기값을 2씩 증가시켜 두 눈 사이의 거리가 150픽셀을 초과하면 15로 할 수 있다.
이상과 같은 구조광 추출 방식으로 구조광을 추출한 경우 구조광 외의 다른 잡티 또한 많이 추출된다는 문제가 있지만, 앞서 설명한 바와 같이 머리카락 영역에는 구조광이 존재하지 않으므로 잘못 추출된 잡티를 구조광으로 취급해 부풀려서 지운다고 해도 머리카락 영역 검출에는 문제가 되지 않는다.
그리고 적외선 영상에서 머리카락 영역 안에 작은 노이즈가 발생하였을 경우, 구조광을 추출하는 과정에서 머리카락 영역 안에 구멍이 생길 수 있다. 이러한 구멍은 머리카락 영역의 외곽선을 그리고 그 외곽선 안쪽에 해당하는 영역을 다시 복원함으로써 해결할 수 있다.
도 8은 실시예에 따른 본 발명의 활용예를 나타낸 도면이다.
본 발명상의 3D 카메라를 이용한 머리카락 영역 검출 장치의 영상 수집부는 3D 카메라 영상을 입력으로 받고, 3D 카메라 영상의 색상 영상, 깊이 영상, 적외선 영상의 각 기준 좌표가 맞춰진다. 휴먼 검출부는 영상 수집부에서 기준 좌표가 맞춰진 상기 색상 영상(810)을 배경과 분리하여 배경과 분리된 휴먼 영상1(820)을 저장한다. 그리고 얼굴 검출부는 상기 배경과 분리된 휴먼 영상1으로부터 랜드마크 알고리즘을 사용하여 얼굴 주변 영역과 랜드마크 포인트를 검출하고, 배경과 분리된 휴먼 영상2(830)를 생성한다. 이 때, 상기 배경과 분리된 휴먼 영상2(830)의 각 얼굴 사진에서 사각형 상자로 표시된 부분이 검출된 얼굴 주변 영역이고, 점으로 표시된 부분이 랜드마크 포인트를 나타낸다. 피부 제거부는 배경과 분리된 휴먼 영상2(830)를 YUV 색상모델을 이용하여 피부 영역만을 제거한다. 이 때, 랜드마크 포인트로부터 검출한 얼굴 외곽선 내부의 피부 영역만을 제거함으로써 피부가 제거된 휴먼 영상(840)을 생성할 수 있다. 의류 제거부는 상기 피부가 제거된 휴먼 영상(840)를 적외선 영상을 이용하여 의류 영역을 나타내는 구조광만을 추출하고, 상기 구조광을 제거하여 의류 영역을 제거한 휴먼 영상(850)을 생성한다. 그리고 의류 영역을 제거한 휴먼 영상(850)으로부터 머리카락 영역만이 표시된 휴먼 영상(860)을 생성할 수 있다.
도 9는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
실시예에 따른 3D 카메라를 이용한 머리카락 영역 검출 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(900)에서 구현될 수 있다.
컴퓨터 시스템(900)은 버스(920)를 통하여 서로 통신하는 하나 이상의 프로세서(910), 메모리(930), 사용자 인터페이스 입력 장치(940), 사용자 인터페이스 출력 장치(950) 및 스토리지(960)를 포함할 수 있다. 또한, 컴퓨터 시스템(900)은 네트워크(980)에 연결되는 네트워크 인터페이스(970)를 더 포함할 수 있다. 프로세서(910)는 중앙 처리 장치 또는 메모리(930)나 스토리지(960)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(930) 및 스토리지(960)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(930)는 ROM(931)이나 RAM(932)을 포함할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 3D 카메라를 이용한 머리카락 영역 검출 장치
105: 3D 카메라 영상 110: 영상 수집부
120: 휴먼 검출부 130: 얼굴 검출부
140: 피부 제거부 150: 의류 제거부
155: 검출된 머리카락 영역

Claims (1)

  1. 깊이 영상을 기반으로 색상 영상으로부터 배경 영역을 제거하여 휴먼 영역을 검출하는 단계;
    상기 휴먼 영역에서 얼굴 주변 영역을 검출하는 단계;
    상기 휴먼 영역에서 상기 얼굴 주변 영역 내에 위치한 피부영역을 제거하여 피부 제외 영역을 검출하는 단계; 및
    적외선 영상을 기반으로 상기 피부 제외 영역에서 의류 영역을 제거하여 머리카락 영역을 검출하는 단계를 포함하는, 3D 카메라를 이용한 머리카락 영역 검출 방법.
KR1020200024067A 2020-02-27 2020-02-27 3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치 KR20210109167A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200024067A KR20210109167A (ko) 2020-02-27 2020-02-27 3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200024067A KR20210109167A (ko) 2020-02-27 2020-02-27 3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
KR20210109167A true KR20210109167A (ko) 2021-09-06

Family

ID=77782395

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200024067A KR20210109167A (ko) 2020-02-27 2020-02-27 3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치

Country Status (1)

Country Link
KR (1) KR20210109167A (ko)

Similar Documents

Publication Publication Date Title
US9013489B2 (en) Generation of avatar reflecting player appearance
JP7113657B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US9959603B2 (en) Method and device for image processing
KR101853006B1 (ko) 깊이영상에서 코 검출을 이용한 얼굴 인식
KR20040059313A (ko) 치아영상으로부터 치아영역 추출방법 및 치아영상을이용한 신원확인방법 및 장치
EP2980755A1 (en) Method for partitioning area, and inspection device
CN105844242A (zh) 图像中的肤色检测方法
KR20140036803A (ko) 위장 얼굴 판별 장치 및 방법
Monwar et al. Pain recognition using artificial neural network
Tsitsoulis et al. A methodology for extracting standing human bodies from single images
CN109858464B (zh) 底库数据处理方法、人脸识别方法、装置和电子设备
Weerasekera et al. Robust asl fingerspelling recognition using local binary patterns and geometric features
JP2010020594A (ja) 瞳画像認識装置
CN106778751B (zh) 一种非面部roi识别方法及装置
KR20210109167A (ko) 3d 카메라를 이용한 머리카락 영역 검출 방법 및 이를 위한 장치
CN111860079A (zh) 活体图像检测方法、装置以及电子设备
JP5286574B2 (ja) オブジェクト検出認識装置、オブジェクト検出認識方法、および、プログラム
KR101087250B1 (ko) 피부색 영역 검출을 이용한 얼굴 검출 장치
Khamele et al. An approach for restoring occluded images for face-recognition
KR20160017152A (ko) 이진 하르 캐스케이드에 기반한 성별 분류 방법
CN111428553A (zh) 人脸色素斑识别方法、装置、计算机设备和存储介质
KR101551190B1 (ko) 영상의 유해성을 나타내는 인체의 구성요소 검출 방법
Wang et al. Real-time beard detection by combining image decolorization and texture detection with applications to facial gender recognition
Alzubaydi et al. Face Clip Detection System Using HSV Color Model
Ma et al. A lip localization algorithm under variant light conditions