본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발 명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 대응하는 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 다양한 눈상태를 보여주는 이미지이다. 본 실시예는 도 1에 나타난 바와 같은 다양한 눈상태를 눈 열림, 눈 닫힘 및 눈 깜박임 상태로 판별할 수 있다.
도 2는 본 실시예에 따른 눈 상태 검출방법을 나타내는 순서도이다.
연속 영상에서 정지된 초기 영상을 입력한다(S110). 이러한 정지된 초기 영상은 그레이(grey) 영상일 수 있다.
그런 다음, 정지된 초기 영상으로부터 얼굴영역을 검출한다(S120). 여기서, 얼굴영역의 검출은 얼굴 경계의 좌표를 획득함으로써 수행될 수 있다. 얼굴영역 검출은 haar기반한 얼굴 검출법(haar based face detection) 또는 템플릿 매칭법 등 다양한 방법을 이용할 수 있다. 예를 들어, 템플릿 매칭법을 이용하는 경우, 입력된 초기 영상과 다중 스케일 템플릿으로 템플릿 매칭 연산을 수행한다. 입력된 초 기 영상과 다중 스케일 템플릿으로 템플릿 매칭 연산을 수행한 후, 얼굴 이미지 위치를 출력한다. 여기서, 다중 스케일 템플릿은 10개의 동일하지 않은 크기의 평균 얼굴 템플릿이다. 얼굴 템플릿의 수는 상기 외에도 다양할 수 있다.
도 3은 본 실시예에 따라 얼굴영역을 검출한 결과를 나타내는 도면이다.
다시 도 2를 참조하면, 얼굴영역으로부터 눈영역을 검출한다(S130). 여기서, 눈영역의 검출은 눈 경계의 좌표를 획득함으로써 수행될 수 있다. 눈영역은 눈을 나타내는 정확한 영역이 아닌 눈을 중심으로 상하 좌우로 여유가 있는 영역을 말한다. 이러한 눈영역은 눈 기하학(eye geometry)을 이용하여 검출할 수 있다. 예를 들어, 통상적으로 얼굴의 가로 길이를 X, 세로 길이를 Y라고 할 때, 왼쪽 눈의 위치는 (1/4X, 1/5Y)가 되고 오른쪽 눈의 위치는 (3/16X, 1/5Y)가 된다. 이러한 위치를 중심으로 여유있게 설정된 영역으로 눈영역을 검출할 수 있다.
도 4는 본 실시예에 따라 눈영역을 검출하는 알고리즘의 일 예를 나타내는 도면이고, 도 5는 본 실시예에 따라 눈영역을 검출한 결과를 나타내는 도면이다.
그런 다음, 눈 닫힘과 눈 열림을 예비판별한다(S140). 여기서, 눈 닫힘과 눈 열림의 예비판별은 눈 닫힘과 눈 열림을 판별하여 눈 열림으로 판별되는 경우는 눈 상태를 눈 열림으로 최종판단하고, 눈 닫힘으로 판별되는 경우는 다시 눈 닫힘인지 눈 깜박임인지 판별해야 하므로 눈 닫힘으로 예비판별하고나서 다시 눈 닫힘 또는 눈 깜박임을 판별하는 단계로 넘어가는 것을 말한다. S140는 이하에서 상세히 설명하기로 한다. S140에서 눈 열림 상태로 판별될 수 있다(S190). S140에서 눈 닫힘 상태로 판별된다면, 설정된 회수만큼 S110 내지 S140를 반복한다(S150). 설정된 회 수만큼 S110 내지 S140를 반복한 후, 눈 닫힘으로 판별되는 시간이 설정된 임계치 시간(ms)보다 큰지를 판단한다(S160). 눈 닫힘으로 판별되는 시간이 설정된 임계치 시간(ms)보다 크다면, 눈 닫힘 상태로 판별한다(S170). 눈 닫힘으로 판별되는 시간이 설정된 임계치 시간(ms)보다 크지 않다면, 눈 깜박임(eye blink) 상태로 판별한다(S180).
여기서, 반복되는 단계는 본 실시예에서는 S110 내지 S140이지만, S110 에서 이하 설명되는 S141~S147 중 어느 하나의 단계까지 반복될 수도 있다. 예를 들어, S110 내지 이하 설명되는 S145까지 설정된 회수만큼 반복할 수 있다.
이하에서, 눈 닫힘과 눈 열림을 판별하는 S140를 상세히 설명한다.
도 6은 본 실시예에 따라 눈 개폐 판별단계를 나타내는 순서도이다. 먼저, S130에 따라 획득된 눈영역을 자른다(S141). ISP(Image Signal Processor)의 이미지 크롭핑 기능을 이용하여 수행할 수 있다. 도 7은 본 실시예에 따라 크롭핑된 눈영역을 보여주는 도면이다.
그런 다음, 잘라진 눈영역을 리사이즈(resize)한다(S142). 예를 들면, 눈영역을 80×60로 리사이즈한다. 도 8은 본 실시예에 따라 80×60로 리사이즈된 눈영역을 나타내는 도면이다.
다음으로, 리사이즈된 눈영역을 필터링한다(S143). 예를 들어, 콘볼루션(convolution)을 이용하여 로그 가버(Log Gabor) 필터링한다. 선형 주파수 스케일상에 로그 가버 함수는 다음 수학식 1과 같은 이동 함수이다.
여기서, w0는 필터 중심 주파수이다.
일정한 형태 비 필터를 얻기 위하여, 용어 k/w0는 다양한 w0에 대해서 일정하게 유지될 수 있다. 예를 들어, 0.74의 k/w0는 대략 한 옥타브(octave)의 필터 대역폭일 것이고, 0.55의 k/w0는 대략 두 옥타브(octave)의 필터 대역폭일 것이며, 0.41의 k/w0는 대략 세 옥타브(octave)의 필터 대역폭일 것이다. 도 9는 본 실시예에 이용된 콘볼루션을 위한 로그 가버 커널을 나타내고, 도 10은 본 실시예에 따라 필터링된 눈영역을 나타내는 도면이다.
본 실시예에서 콘볼루션(convolution)을 이용한 필터링은 다음 수학식 2를 이용하여 수행할 수 있다.
여기서, h는 콘볼루션 커널 매트릭스, m 및 n은 콘볼루션 커널 매트릭스 차원, I'(x,y)는 새로운 이미지 및 I(x,y)는 입력 이미지를 나타낸다.
그런 다음, 자동적인(automatic) 임계치 설정을 한다(S144).
이하에서, 자동적인(automatic) 임계치 설정단계인 S144를 상세히 설명한다. 도 11은 본 실시예에 따라 자동적인(automatic) 임계치 설정단계를 나타내는 순서도이다.
도 11을 참조하면, 눈영역의 2D 히스토그램을 계산한다(S144-1). 여기서, 히스토그램은 이미지내에서 다른 이미지 픽셀 주파수들의 통계적 표현이다. 2D 히스토그램은 다른 광원 수준을 가진 상응하는 픽셀들의 수를 나타낸다. 이미지 히스토그램은 원본 이미지에서 정확한 광원 강도를 가진 얼마나 많은 픽셀이 있는지를 나타낼 수 있다. 본 실시예에 적용되는 이미지가 크기면에서 다양할 수 있기 때문에, 히스토그램 값을 저장하기 위하여 일차원 정수 배열을 이용할 수 있다. 2D 히스토그램 계산은 이미지 픽셀내 루프 및 인덱스 256 요소 정수 배열을 이용하여 수행할 수 있다. 여기서, 배열의 수는 상기 외에도 다양할 수 있음은 당업자에게 자명할 것이다. 다음은 본 실시예에 따라 2D 히스토그램을 계산하는 일 예를 나타내는 알고리즘이다.
여기서, pucGrey[usIndexX]는 2D 이미지 휘도에 대한 정보를 보유하는 바이트 배열이고, gssHistogramGray[0]는 2D 이미지 히스토그램을 보유하는 256 요소 정수 배열이다.
그런 다음, 2D 히스토그램을 정규화한다(S144-2). 즉, 히스토그램 256 요소 정수 배열내 저장된 2D 히스토그램을 정규화한다. 정규화된 히스토그램은 다른 픽셀 값들의 확률 분포를 나타낸다. 정규화과정은 각 하나의 히스토그램 256 배열 요소를 이미지내의 전체 픽셀수로 나눠서 수행될 수 있다. 다음은 본 실시예에 따라 2D 히스토그램을 정규화하는 일 예를 나타내는 알고리즘이다.
그런 다음, 2D 히스토그램 엔트로피(entropy)를 계산한다(S144-3) 여기서, 엔트로피는 불확실성(uncertanity)의 평균값을 나타내는 수치이다.
도 12는 본 실시예에 따라 2D 히스토그램 엔트로피를 계산하는 알고리즘의 일 예를 나타내는 도면이다. 도 12을 참조하면, 2D 히스토그램 엔트로피 함수를 수행한 후, 이미지 엔트로피는 2D 256 요소 이중 정확성 배열 gdEntropyGrey[k]내 보유된다. 이러한 함수는 어떤 픽셀들이 이미지 내 대부분의 정보 용량을 가지고 있는지 결정하는데 이용될 수 있다.
그런 다음, 2단계(2nd stage)의 최대 엔트로피 값 인덱스를 획득한다(S144-4). 다음으로, 2단계의 최대 엔트로피 값에 기반한 자동적인 임계치를 설정한다(S144-5). 2D 히스토그램 엔트로피(entropy)값을 계산한 후, 최대값을 검출한 다 음 이를 기반한 임계값을 획득할 수 있다. 검출된 최대값을 중심으로 미리 설정된 퍼센트내로 임계값을 획득할 수 있다.
여기서, 다단계(multistage) 2D 엔트로피 함수가 이용될 수도 있다. 다단계 엔트로피 함수는 반복의 수 및 파트 A 및 B에 의한 히스토그램 분할에서 단일 단계와 다를 수 있다. 예를 들어, 4 단계 엔트로피 함수는 4 층상에 자동적으로 임계값 입력 이미지에 대한 확률을 제공할 수 있다. 히스토그램 내에 선택된 지역에 걸쳐 엔트로피 최대값 계산을 이용하여 수회 히스토그램을 분할하는 것이 요구된다. 일차 엔트로피 최대값을 계산한 후, 0과 일차 최대지점 사이의 엔트로피 최대값을 계산한 다음, 일차 최대값과 히스토그램의 255 요소 사이의 엔트로피 최대 지점을 계산할 수 있다.
또한, 임계값 이미지상에 히스토그램 균등화(equalization)를 이용할 수도 있다. '히스토그램 균등화'는 모든 작은 히스토그램 컬럼을 하나로 그룹핑하는 간단한 과정이다. 이러한 그룹핑 후, 히스토그램 변화에 관한 이미지 픽셀 치환을 수행할 수 있다. 2D 히스토그램 균등화를 위해서 히스토그램 평균값을 계산할 수 있다. 그 후, 루프를 만들고 포지션 0 부터 255까지 모든 히스토그램 컬럼을 체크하고 해당 히스토그램 컬럼이 평균값을 초과하는 글로벌 히스토그램 평균값 보다 작은지 체크한다. 그 경우라면 다음 컬럼으로 넘어가서 이 값을 ac 일차값으로 다룬다. 추가하는 모든 포지션은 그레이 수준 치환 후보로서 마킹된다. 다음 컬럼이 평균값 보다 더 큰 값을 갖는다면 그 값에 일차값을 추가하지 않고 다음 컬럼으로 넘어간다. 도 13은 본 실시예에 따라 자동적인 임계치 설정 전 및 후의 결과를 보여 주는 도면이다.
다시 도 6을 참조하면, 이진화된 이미지를 분할하고 분할된 각 구역의 경계점을 획득한다(S145). 이진화된 이미지 분할은 다음과 같이 수행될 수 있다. 먼저, 사용하지 않을 이미지의 부분을 초기화한다. 그런 다음, 4개의 연결된 성분을 이용하여 이미지를 분할한다. 분할된 것을 라벨링하고 구역 ID를 고정한다. 그런 다음, 구역 사이즈를 계산하고, 사이즈 순으로 구역들에 대해 새로운 ID들을 계산한다. 다음으로, 중심과 주변 박스들을 계산하고, 구역 에지 점들을 계산한다. 도 14는 본 실시예에 따라 이진화된 이미지 분할 및 분할된 각 구역의 경계점 획득단계를 수행한 결과를 보여주는 도면이다.
그런 다음, 각 구역의 경계점들에 타원을 일치시킨다(S146) 즉, 경계점들의 세트에 가장 잘 일치되는 타원을 계산한다. 예를 들어, 6개 경계점들을 이용하여 가장 잘 일치되는 타원을 계산할 수 있다. 도 15는 본 실시예에 따라 각 구역의 경계점들에 타원을 일치시킨 단계를 수행한 결과를 보여주는 도면이다.
그런 다음, 획득된 타원으로 눈의 계폐상태를 판별한다(S147). 예컨대, 타원의 원형도 또는 면적을 계산하여 눈의 계폐상태를 판별할 수 있다. 타원의 면적으로 눈의 계폐상태를 판별하는 경우, 눈 닫힘으로 판별하는 타원의 면적의 범위를 설정할 수 있다. 예를 들어, 타원의 면적이 5㎟ 에서 30㎟ 내인 경우 눈 닫힘으로 판별할 수 있다. 또한, 눈과 눈꺼풀의 기하학에 기인하여 눈닫힘을 판별할 수도 있다.
도 16은 본 실시예에 따라 눈의 계폐상태를 판별하는 일 예를 나타내는 알고 리즘이다.
도 17은 본 실시예에 따른 눈 상태 검출장치를 나타내는 블록도이다.
도 17을 참조하면, 눈 상태 검출장치는 카메라부(110), 메모리(120), 신호처리부(130) 및 제어부(140)를 포함한다. 카메라부(110)는 연속 영상을 촬영하여 촬영된 이미지를 메모리(120)에 출력한다. 메모리(120)는 촬영된 이미지를 입력받아 저장한다. 신호처리부(130)는 메모리(120)에 저장된 디지털 이미지에 대하여 본 실시예에 따라 눈 상태 검출을 수행하여 눈 닫힘, 눈 깜박임 또는 눈 열림으로 눈 상태를 판단하여 그 결과를 메모리(120) 또는 제어부(140)에 출력한다. 제어부(140)는 눈 상태 판단 결과에 따라 제어가 필요한 모듈에 제어신호를 출력한다. 여기서, 제어부(140)는 도시된 바와 다르게 없을 수도 있다. 제어부(140)가 없는 경우는, 신호처리부(130)는 판단된 눈 상태를 외부로 출력한다.
예를 들어, 눈 상태 검출장치가 운전자 모니터링 시스템의 경보발생부에 연결된 경우, 신호처리부(130)에서 피사체가 눈 닫힘으로 판단된 경우, 제어부(140)는 경보발생부에 경보음을 발생하는 신호를 보낼 수 있다. 또 다른 예로, 눈 상태 검출장치가 카메라에 연결된 경우, 신호처리부(130)에서 피사체가 눈 깜박임으로 판단된 경우, 제어부(140)는 최적의 촬영 시점을 포착할 수 있도록 제어신호를 카메라에 보낼 수 있다.
본 실시예에서 보여준 알고리즘은 본 실시예를 구현하기 위해 다양하게 표현될 수 있는 알고리즘의 일 예에 불과하며, 이러한 일 예와 다른 알고리즘도 본 실 시예를 구현할 수 있음은 당업자에게 자명할 것이다.
본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field-programmable gate array) 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터,데이터베이스, 데이터 구조들, 테이블들, 배열들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
상술한 모든 기능은 상기 기능을 수행하도록 코딩된 소프트웨어나 프로그램 코드 등에 따른 마이크로프로세서, 제어기, 마이크로제어기, ASIC(Application Specific Integrated Circuit) 등과 같은 프로세서에 의해 수행될 수 있다. 상기 코드의 설계, 개발 및 구현은 본 발명의 설명에 기초하여 당업자에게 자명하다고 할 것이다.
이상 본 발명에 대하여 실시예를 참조하여 설명하였지만, 해당 기술 분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시켜 실시할 수 있음을 이해할 수 있을 것이다. 따라서, 상술한 실시예에 한정되지 않고, 본 발명은 이하의 특허청구범위의 범위 내의 모든 실시예들을 포함한다고 할 것이다.