본 발명의 기술적 과제를 달성하기 위한 비디오 영상에서의 실 객체 판별 방법은 비디오 영상의 소정의 프레임에서 객체 특징점을 검출하여 트레킹을 초기화하는 단계; 상기 검출된 객체 특징점을 기초로 상기 비디오 영상의 다음 프레임들에 대한 객체 특징점들을 트레킹하는 단계; 상기 검출된 객체 특징점 및 상기 트레킹된 제n-1 프레임의 객체 특징점을 각각 제n 프레임에 대해 어파인 변환하고, 상기 어파인 변환된 객체 특징점들과 상기 트레킹된 제n 프레임의 객체 특징점과의 통계 적 거리를 계산하는 단계; 및 상기 계산된 거리 값을 기초로 실제 값을 계산하고, 상기 계산된 실제 값에 따라 상기 비디오 영상이 실 객체인지 여부를 판별하는 단계를 포함한다.
본 발명의 다른 기술적 과제를 달성하기 위한 하는 비디오 영상에서의 실 객체 판별 방법은 비디오 영상으로부터 객체 특징점을 검출하여 트레킹을 초기화하는 단계; 상기 객체 프레임이 검출된 프레임의 다음 프레임에 대한 객체 특징점들을 트레킹하는 단계; 및 검출된 객체 특징점과 제n-1 프레임의 객체 특징점들을 제n 프레임에 대해 어파인 변환하고, 상기 어파인 변환된 객체 특징점들과 상기 제n 프레임의 객체 특징점의 특성을 이용하여 상기 비디오 영상이 실 객체 인지 여부를 판별하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 비디오 영상에서의 실 객체 판별 장치는 비디오 영상의 소정의 프레임에서 객체 특징점을 검출하여 트레킹을 초기화하는 초기화부; 상기 검출된 객체 특징점을 기초로 상기 비디오 영상의 다음 프레임들에 대한 객체 특징점들을 트레킹하는 트레킹부; 상기 검출된 객체 특징점 및 상기 트레킹된 제n-1 프레임의 객체 특징점을 각각 어파인 변환하고, 상기 어파인 변환된 객체 특징점들과 상기 제n 프레임의 객체 특징점과의 통계적 거리를 계산하는 계산부; 및 상기 계산된 거리 값을 기초로 실제 값을 계산하고, 상기 계산된 실제 값에 따라 상기 비디오 영상이 실 객체인지 여부를 판별하는 판별부를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 상기 방법을 컴퓨터에서 실 행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
본 발명의 세부 및 개선 사항은 종속항에 개시된다.
이하, 본 발명의 바람직한 실시 예들을 첨부한 도면들을 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 실 객체 판별 장치의 개략적인 구성을 도시한 블록도이다.
도 1을 참조하면, 실 객체 판별 장치는 초기화부(100), 트레킹부(110), 계산부(120) 및 판별부(130)를 포함한다.
초기화부(100)는 입력된 비디오 영상의 특정 프레임에서 객체 특징점을 검출하여 트레킹을 초기화시킨다. 여기서, 객체 검출과 객체의 특징점 검출은 첫 번째 프레임에서 검출될 수도 있고, 이후 프레임에서 검출될 수도 있다. 비디오 영상에서 객체 검출과 객체의 특징점 검출이 완료될 때까지 반복한다.
트레킹부(110)는 초기화부(100)에서 객체와 객체의 특징점이 검출된 경우, 소정의 트레킹 알고리즘, 예를 들면 LKT 광류(optical flow)의 피라미드 알고리즘, 평균-시프트(mean-shift) 알고리즘 등을 이용하여, 검출된 객체 특징점을 기초로 이후 프레임들에 대한 객체 특징점들을 각각 트레킹한다. 트레킹 알고리즘에 대한 더 자세한 사항은 J.Y. Bouguet의 Pyramidal Implementation of the Lucas Kanade Feature Tracker, OpenCV Documentation, Microprocessor Research Labs, Intel Corp., 2000. 및 D. Comaniciu 등의 Real-Time Tracking of Non-Rigid Objects using Mean Shift, CVPR 2000.에 개시되어 있다.
계산부(120)는 첫 번째 프레임 또는 이후 프레임에서 검출된 객체 특징점과 이를 기초로 트레킹된 n-1번째 프레임의 객체 특징점을 n번째 프레임, 즉 현재 프레임에 대해 각각 어파인 변환(affine transformation)을 수행한다.
이렇게 어파인 변환된 초기 프레임에서 검출된 객체 특징점과 제n 프레임, 즉 현재 프레임의 객체 특징점과의 거리(D1)를 계산하고, 이러한 거리 값에 대한 분산(V1)을 계산한다. 또한, 제n-1 프레임, 즉 현재 프레임(제n 프레임)에 대한 이전 프레임의 객체 특징점과 제n 프레임, 즉 현재 프레임의 객체 특징점과의 거리(D2)를 계산한다. 어파인 변환과 통계적 거리, D1, D2 및 V1 에 대한 자세한 설명은 도 3을 참조하여 후술한다.
판별부(130)는 계산된 거리 값, D1, D2 및 V1을 이용하여, 실제 값(liveness value)을 계산하고, 계산된 실제 값에 따라 비디오 영상이 실제 객체인지 아니면 사진 객체인지 여부를 판별한다.
도 2는 도 1에 도시된 실 객체 판별 장치의 보다 구체적인 구성을 도시한 블록도이다.
도 2를 참조하면, 실 객체 판별 장치는 객체 검출부(200)와 특징 검출부(210)를 포함하는 초기화부(100), 트레킹부(110), 특징점 정규화부(220), 어파인 변환부(230)와 거리 계산부(240)를 포함하는 계산부(120) 및 실제 값 계산부(250)와 실 객체 판별부(260)를 포함하는 판별부(120)를 포함한다.
객체 검출부(200)는 입력된 비디오 영상의 특정 프레임에서 객체를 검출한다. 본 발명의 바람직한 실시 예에서, 객체는 얼굴을 포함하며, 얼굴 검출을 위해 J. Vola의 아다부스트(adaboosting) 알고리즘을 사용한다. 얼굴 검출에 관한 자세한 사항은 Paul Viola 등의 Robust Real-time Object Detection, vol. 57, p137-154, no. 2, 2004.에 개시되어 있다.
특징 검출부(210)는 객체 검출부(200)에서 검출된 객체 영역에서 소정의 특징점들을 검출한다. 본 발명의 바람직한 실시 예에서, 객체 검출부(200)는 n-1 번째 프레임에서 소정의 객체 특징점을 검출한다. 특히, 첫 번째 프레임의 영상에서 얼굴 영상을 검출하고, 검출된 얼굴 영상 중 얼굴의 주요 특징을 반영하는 얼굴 특징점을 선택한다. 이 경우 객체는 사람의 얼굴이다. 검출된 객체 특징점의 예로는 눈 각각의 중심 위치에 해당하는 2개의 포인트, 눈썹 각각의 중심 위치에 해당하는 2개의 포인트, 코 끝의 위치에 해당하는 1개의 포인트, 입술의 양 끝에 해당하는 2개의 포인트 및 윗 입술의 끝에 해당하는 1개의 포인트 등을 객체 특징점으로 이용할 수 있다.
객체 특징점을 검출하는 방법으로는 AAM(Active Appearance Models) 또는 ASM(Active Shape Models) 등이 있다. ASM은 눈의 위치를 검출하고, 검출된 눈의 위치를 기준으로 일반적인 모델(generic model)에 따른 다른 부위, 예를 들면 코, 입, 눈썹 등의 모양(shape) 정보를 이용하여 위치를 결정하는 모델이다. AAM은 모양 정보뿐만 아니라, 질감 정보(texture information)를 더욱 고려하여 얼굴 특징을 효율적으로 설명할 수 있는 특징점을 검출하는 모델이다.
또한, 본 발명의 바람직한 실시 예에서, 좀더 양호한 특징점을 선택하기 위해 코너(corner)를 검출할 수 있다. 이는 특징 검출을 에러를 줄이기 위해 검출된 얼굴 영역에서 모서리 부분을 검출하여 특징점을 선택하는 것이다.
코너 검출은 다음 수학식 1 및 2를 이용하여, 영상 I의 모든 픽셀에서 G 행렬과 행렬 G의 고유값(λm)을 계산한다.
여기서, I(x,y)는 그레이 영상이고, (wx,wy)는 영상 영역의 폭(width)과 높이(height)이다.
행렬 G와 행렬 G의 고유값(λm)을 구하고, 특징점을 선택한다. 전체 영상에 대해 λm 의 최대값을 λmax 라하고, λm>0.2λmax 인 화소에 대해, 최대 화소를 찾는다. 여기서, 선택된 화소의 λm 값은 이웃하는 다른 화소들보다 더 크다. 또한, 선택된 화소들의 거리를 소정 값 이하로 유지한다.
코너 검출에 관한 자세한 사항은 Jianbo Shi 등의 "Good features to track", Proc. IEEE Comput. Soc. Conf. Comput. Vision and Pattern Recogn., p593-600, 1994에 개시되어 있다.
트레킹부(110)는 특징 검출부(210)에서 검출된 객체의 특징점을 기초로, 다음 프레임들 각각에 대한 특징점들을 트레킹한다.
본 발명의 바람직한 실시 예에서, 트레킹부(110)는 초기화부(100)를 통해 첫번째 프레임에서 얼굴 특징점이 검출되면, 트레킹부(110)는 두 번째 프레임과 첫 번째 프레임의 화소 값 차이를 최소로 하는 광류(optical flow)를 계산한다. 예를 들면, 첫 번째 프레임에서 검출된 얼굴 특징점 각각을 중심으로 하는 소정 크기의 템플릿 이미지의 그레이 레벨(grey level)과 상기 템플릿에 대응되는 두 번째 프레임의 템플릿 이미지의 그레이 레벨을 구하고, 템플릿 이미지에 속하는 각 픽셀이 갖는 그레이 레벨의 차를 이용하여 광류를 계산할 수 있다. 본 발명의 바람직한 실시 예에서는 광류를 계산하는 방법으로 LKT(Lucas-Kanade-Tomasi) 알고리즘을 이용하였으며, 하기 수학식3 내지 7에 따라 ε(v)값을 최소로 하는 광류(v) 값을 계산할 수 있다.
여기에서, I는 이전 (n-1 번째) 프레임이고, J는 현재 (n 번째) 프레임이며, u = (ux, uy)는 이전 프레임에서 하나의 특징점이고, v=(vx, vy)는 광류이며, (wx, wy)는 광류를 계산하는 이미지의 템플릿 사이즈이고, Ix와 Iy는 I의 미분 영상값이다.
특징점 정규화부(220)는 특징점 검출부(210)에서 검출된 특징점, 즉 초기 프레임에서의 특징점, 현재 프레임(n 번째)의 특징점 및 이전 프레임(n-1 번째)의 특징점을 정규화시킨다.
특징점은 다음 수학식 8을 이용하여 정규화한다.
여기서, Pi(n), n=1,2,...N이다.
어파인 변환부(230)는 특징점 정규화부(220)에서 정규화된 특징점들의 어파인 변환을 수행한다. 즉, 어파인 변환부(230)는 초기 프레임에서의 특징점을 현재 프레임(n 번째 프레임)에 대해 어파인 변환하고, 이전 프레임(n-1 번째 프레임)에서의 특징점을 현재 프레임(n 번째 프레임)에 대해 어파인 변환을 수행한다.
T는 n-1번째 프레임의 좌표 행렬 X를 입력으로 하는 어파인 변환이고, X'는 n 번째 프레임의 좌표 행렬이다.
여기에서, (xi, yi)는 이전(n-1번째) 프레임에서 결정된 객체 특징점들의 좌표이고, (xi', yi')는 현재(n 번째) 프레임에서 결정된 객체 특징점들의 좌표이다.
어파인 변환 파라미터 T는 상기 수학식10과 같이 6개(tx, ty, a, b, c 및 d)의 요소(element)들에 의하여 특정된다.
사진 얼굴 영상과 실제 얼굴 영상과의 가장 큰 차이점은 사진 얼굴은 깊이 변화를 가지지 않는 2차원 평면 객체이고, 실제 얼굴은 비교적 큰 깊이 변화를 가지는 3차원 객체라는 것이다.
이상적인 영상 조건, 이상적인 정사영(orthography), 영상 잡음 및 왜곡이 없는 등의 조건과 트레킹 오류 및 바이어스가 없는 이상적인 트레킹 알고리즘에서, 서로 다른 프레임들에서 어파인 변환된 트레킹 포인트들 사이의 거리는 평면 객체, 즉 사진 얼굴에 대해서 제로이다. 반면에, 이러한 거리는 사진 얼굴 객체에서 보다 실제 얼굴 객체에 대해서 훨씬 크다.
그러나, 사진 얼굴의 거리는 실제 경우에 있어서 명백히 제로가 아니다. 보다 강인한 실 얼굴 판별이 트레킹 효과들과 영상 조건들에 의한 외부적 요인을 배제하고, 사진 얼굴과 실제 얼굴 사이의 3차원 깊이 차이의 내재적 요인을 반영하도록 정의되어야 한다.
어파인 변환을 설명하기 위해 도 3을 참조하면, 먼저, 제1 프레임의 특징점 i를 Pi(1)라고 가정하고, 여기서, i=1,2,...,N이고, N>3이라고 가정한다.
제1, 2,...,n-1, n 프레임이 도시되어 있고, 제1 프레임의 특징점은 Pi(1)(300), 제n-1 프레임의 특징점은 Pi(n-1)(310), 제n 프레임의 특징점은 Pi(n)(320)으로 도시되어 있다.
N>3에 대해서, 첫 번째 프레임의 특징점(300)을 현재 프레임(제n 프레임)에 대해 어파인 변환을 수행한다. 어파인 변환된 제1 프레임의 특징점은
(305)이다.
이전 프레임의 특징점(310)을 현재 프레임(제n 프레임)에 대해 어파인 변환을 수행한다. 어파인 변환된 제n-1 프레임의 특징점은
(315)이다.
다시 도 2를 참조하면, 거리 계산부(240)는 어파인 변환된 제1 프레임의 특징점은
(305)과 현재 프레임의 특징점 P
i(n)과의 거리, D
i 1(n)를 다음 수학식 12에 의해 계산한다.
그리고, 다음 수학식 13에 의해 D1(n)을 구한다.
여기서, D1(n) 은 Di 1(n)의 평균이고, K는 특징점의 개수이다.
D1 은 평면 객체들에 대해서는 제로이다. D1(n)의 실제 값은 누적 트레킹 오차와 주로 관련된다. 이러한 D1(n)의 실제 값은 트레킹된 포인트가 처음 위치에서 멀리 떨어진 경우에 증가한다.
또한, 어파인 변환된 제n-1 프레임의 특징점
(315)과 현재 프레임의 특징점 P
i(n)과의 거리, D
i 2(n)를 다음 수학식 14에 의해 계산한다.
그리고, 다음 수학식 15에 의해 D2(n)을 구한다.
여기서, D2(n)은 Di 2(n)의 평균이고, K는 특징점의 개수이다.
D2(n)의 정의에 따르면 D2(n)의 값은 연속한 2개의 프레임들의 특징점들의 거리를 나타낸다. 이 값은 주로 움직임 정보에 관련된다.
특정 객체가 더 빠르게 움직인다면, 움직임 흐릿함(motion blur), 트레킹 알고리즘의 탐색 범위의 초과와 같은 요인들이 발생하는데, 이러한 요인들은 트레킹 에러 또는 트레킹 바이어스의 확률을 증가시킨다. 따라서, D2(n)의 값은 이러한 경우에 증가한다.
만약 D2(n)의 값이 소정의 임계치(T1)보다 크다면, 즉 D2>T1 이라면 심각한 트레킹 에러가 존재하는 것이므로 자동적으로 시스템을 재시작한다. 이는 급격한 움직임으로 인한 트레킹 에러를 피하기 위함이다.
D1(n)과 D2(n)의 차이점은 D1(n)은 누적된 트레킹 결과로부터 기인한 에러를 나타내고, D2(n)은 순간적인 트레킹 에러를 나타낸다는 것이다.
또한, D1 의 분산(variance)을 다음 수학식 16에 의해 계산한다.
여기서, V
1(n)은 D
i 1(n)의 분산이고, K는 특징점의 개수이고,
은 D
i 1(n)의 평균이다.
V1(n)은 D1(n)의 분산이기 때문에, 영상 왜곡과 영상 양자화, 평균 트레킹 효과들과 같은 항상 존재하는 외부적인 요인들을 감소시킬 수 있다.
만약 입력 객체가 평면이라면, V1(n)은 작은 값이 될 것이다. 반면에 3차원 객체인 경우, 예를 들면 실제 얼굴인 경우에 V1(n)값은 평면 객체보다 훨씬 더 클 것이다.
실제 값(liveness value) 계산부(250)는 거리 계산부(240)에서 계산된 D1, D2 및 V1 의 값을 이용하여 다음 수학식 17에 따라 실제 값을 계산한다.
즉, 실제 값, L(n)은 V1(n)을 D1(n)과 D2(n)으로 나눈 것이다.
또한, 다음 수학식 18에 따라 실제 값을 계산할 수 있다. 이는 실제 값의 강인성을 증가시키기 위한 것으로 상기 수학식 17에 의해 계산된 L(n)을 F의 프레임들로 나눈 것이다.
실 객체 판별부(260)는 상기 수학식 18에 의해 계산된 실제 값(L)이 소정의 임계치(T2)보다 크다면(L>T2), 입력된 비디오 영상을 실제 객체로 판단하고, 실제 값이 소정의 임계치(T2)보다 작다면(L<T2), 입력된 비디오 영상을 사진 객체로 판단한다. 여기서 임계치(T2)는 사용자의 설정에 의해 또는 시스템의 특성에 따라 결정될 수 있는 값이다.
요약하면, 사진 얼굴과 실제 얼굴의 영상의 가장 큰 차이점은 사진 얼굴은 평면 객체이고, 실제 얼굴은 비교적 큰 깊이 변화를 가진 3차원 객체라는 것이다.이러한 차이점을 이용한 3가지 통계적 거리, D1, D2 및 V1의 정의한다.
D1은 누적 트레킹 오차를 나타낸다. D1의 값은 특징점들이 초기 형태에서 벗어나는 경우 증가한다. D2는 주로 움직임 정보에 관계된다. 특징점들이 더 빨리 움직일수록, D2의 값은 더 커진다.
V1은 3차원 깊이 변화를 포함한다. 트레킹된 특징점들이 같은 평면에 있거나 또는 거의 깊이 변화가 없다면, V1의 값은 매우 작지만, 그렇지 않다면 크다.
본 발명의 바람직한 실시 예에서 정의된 실제 값, L은 V1 을 D1 및 D2로 나눈 값인데, 이는 누적 트레킹 오차와 움직임 트레킹 오차가 보상된 트레킹된 객체의 3차원 정보를 반영한다.
도 4 내지 6은 본 발명의 또 다른 실시 예에 따른 통계적 거리, D1, D2 및 V1 의 실제 객체와 사진 객체를 비교하기 위한 도면이다.
도 4 내지 6은 실제 얼굴과 사진 얼굴에 대한 통계적 거리 D1, D2 및 V1의 히스토그램을 나타낸다.
X축은 소정의 범위, 최소값과 최대값 사이에서, 256개로 양자화된 D1, D2 및 V1 의 값이고, Y축은 프레임 수이다.
D1 및 D2 의 값은 비디오 영상이 실제 얼굴(400, 500)인 경우와, 사진 얼굴(410, 510)인 경우가 일반적인 트레킹 조건 하에서 유사하게 나타난다.
하지만, V1 은 실제 얼굴(600)인 경우에는 크게 나타나지만, 사진 얼굴(610)인 경우에는 더 작게 나타난다.
도 7은 본 발명의 또 다른 실시 예에 따른 실 객체 판별 방법을 설명하기 위한 흐름도이다.
도 7을 참조하면, 실 객체 판단 장치는 단계 700 및 702에서, 영상을 획득하고, 현재 시스템이 트레킹 모드인지 판단한다. 여기서 트레킹 모드는 비디오 영상에서 객체가 검출되고, 객체의 특징점이 검출되고 난 후에 수행되는 모드이다.
트레킹 모드가 아닌 경우, 단계 704로 진행하여 다음 프레임에 대해 객체와 특징점 검출을 수행한다. 객체와 특징점이 검출된 경우, 단계 706으로 진행하여 이후 프레임에 대한 특징점 트레킹을 수행한다.
단계 708에서, 검출된 특징점과 n-1번째 프레임의 특징점을 n프레임에 대해 어파인 변환한다. 단계 710에서, 초기에 검출되어 어파인 변환된 특징점과 n 프레임의 특징점 사이의 거리(D1)를 계산하고, 어파인 변환된 n-1번째 프레임의 특징점과 현재 특징점 사이의 거리(D2)를 계산한다. 또한, 초기에 검출되어 어파인 변환된 특징점과 n 프레임의 특징점 사이의 거리(D1)의 분산(V1)을 계산한다.
단계 712에서, 단계 710에서 계산된 통계적 거리값, D1, D2 및 V1 을 기초로, 상기 수학식 18을 이용하여 실제 값(L)을 계산한다.
단계 714에서, 단계 712에서 계산된 실제 값 L을 이용하여, 실제 객체 여부를 판단한다.
도 8은 본 발명의 또 다른 실시 예에 따른 실 객체 판별 방법을 설명하기 위 한 흐름도이다.
단계 800 및 802에서, 입력된 비디오 영상에서 소정의 영상 프레임을 획득하고, 획득한 영상에서 얼굴을 검출한다. 단계 804에서, 검출된 얼굴 영역에서 코너점들을 검출한다. 단계 806에서, 검출된 코너점을 기초로 특징점을 선택한다. 단계 808에서, 트레킹 알고리즘, 예를 들면 LKT알고리즘을 이용하여 이후 프레임들에 대한 특징점들을 트레킹한다. 단계 810에서, 검출된 특징점과 트레킹된 특징점들에 대한 통계적 거리, D1, D2 및 V1 를 계산한다. 단계 812에서, D2 가 소정의 임계치(T1) 이상인지를 판단한다. 이는 과도한 트레킹 오차가 발생한 경우 시스템을 재시작하기 위함이다. 즉 D2>T1 인 경우, 다시 처음으로 돌아가 비디오 영상을 다시 획득하여 다음 프로세스들을 수행한다.
D2<T1 인 경우, 단계 814에서, 수학식 18을 이용하여 실제 값 L을 계산한다. 단계 816에서, 실제 값 L이 소정의 임계치(T2) 이상인지를 판단하여, L>T2 인 경우 입력된 비디오 영상이 실 얼굴이라고 판단하고, L<T2 인 경우에는 사진 얼굴이라고 판단한다.
도 9는 본 발명의 또 다른 실시 예에 따른 실 객체 판별 장치를 이용한 접근 제어시스템의 개략적인 구성을 도시한 블록도이다.
도 9를 참조하면, 접근 제어 시스템은 카메라(800), 영상 획득부(810), 영상 제어부(820), 얼굴 검출부(830), 얼굴 인식부(840), 접근 제어부(850), DB(860), 실 얼굴 판별 장치(870), 입력부(880) 및 도어 제어부(890)를 포함한다.
접근 제어시스템은 카메라를 통해 촬영한 비디오 영상, 예를 들면 사람의 얼굴을 검출하고, 검출된 얼굴을 인식하여 도어를 개폐하는 것이다. 여기서 본 발명의 바람직한 실시 예에 따른 실 얼굴 판별 장치를 이용하여 촬영한 비디오 영상이 사람의 실제 얼굴인지 아니면 사진 얼굴인지를 판별할 수 있다.
한편 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트 들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이 다. 그러므로, 상기 개시된 실시예 들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.