... 3... 4... 5... 5.... 5.... 6..... 6..... 8.... 8.... 8... 9.... 9..... 9..... 10.....11..... 12.... 17..... 17.... 19..... 19..... 21..... 23..... 24..... 25.... 26..... 26..... 26... 29.... 29.... 29.... 30.. 1... 30..... 31.... 31..... 32..... 34 1
..... 34..... 35..... 35..... 36.... 37..... 37..... 40..... 41..... 42..... 43..... 44.... 45... 46.... 46.... 46... 48... 49 2
DNA 1990 DNA 100 DNA NEC NTT [1][2] 100 WDM CCD 3
OS CPU : Pentium4 1.5GHz Memory : 512MB Camera : CMOS 10 352 288 USB1.1 : CCD 30 640 480 PCI : FinePix50i 220 720 576 USB1.1 : BT878 PCI : IEEE1394 PCI Microsoft Visual Studio 6.0 Enterprise DirectX SDK 8.1 OS Microsoft Windows XP Professional OS Windows OS 4
2.1 2.1. DNA VoiceGATE FacePass DNA NTT DNA IC NEC SecureFinger 5
6 2.2 DNA 2.2 DNA...
( 2.1) 2.1 7
.. RGB 3 RGB HSV 3. 2.2 USB CCD USB PC WDM CCD. 100% 8
. Windows Driver Model (WDM) [3].. WDM 1992 Video for Windows [4] WDM 32 DirectShow(3.13 ) DVD/MPEG ( ) (VBI) (VPE) Windows 1 3.1 WDM 3 3.1 WDM WDM DirectShow WDM DirectShow WDM DirectShow Windows (DDK) KsTune.ax KsXbar.ax KsCap.ax USB 1394 DV TV WDM DirectShow 3.2 9
3.2 WDM Video Capture Architecture 3.2 KsTune.ax KsXbar.ax KsCap.ax DirectShow KsTune.ax KsXbar.ax KsCap.ax ( 3 ).. DirectX Microsoft [5] SDK(Software Development Kit) DirectX DirectX COM(Component Object Model) COM DirectX Visual C++ Visual Basic DirectX DirectX 3.1 10
3.1 DirectX [5] DirectXGraphics API DirectX7 DirectDraw Direct3D DirectXAudio DirectInput DirectPlay DirectShow DirectSetup API DirectX7 DirectSound DirectMusic API DirectX API DirectShow.. DirectShow [5] DirectShow DirectShow 3 DirectShow 1 4 1 DirectShow DirectShow DirectShow 3.3 DirectShow 11
3.3 DirectShow 3.3 TV SMPTE.. USB [6] 3.4 Pin Pin Pin 3.4 12
DirectShow 5 ( IGraphBuilder ) ( IBaseFilter ) ( IBaseFilter ) ( ISampleGrabber ) ( IMediaControl ) USB BYTE OnTimer USB DirectShow 3.2 DirectShow #include <dshow.h> #include <streams.h> #include <qedit.h> 5 DirectShow ( IGraphBuilder ) m_pgraph ( IBaseFilter ) psrc ( IBaseFilter ) pgrabber ( ISampleGrabber ) m_pgrabberinterface ( IMediaControl ) pmediacontrol 13
3.3 1. CoCreateInstance( CLSID_FilterGraph ) 2. ICreateDevNum, IEnumMoniker, IMoniker, IBaseFilter 3. ICaptureGraphBuilder2 3-1. CoCreateInstance( CLSID_CaptureGraphBuilder2 ) 3-2. ICaptureGraphBuilder2::SetFilterGraph((IFilterGraph)pGraph) 4. IFileSinkFilter 4-1. ICaptureGraphBuilder2::SetOutputFileName(...) 4-2. ICaptureGraphBuilder2::RenderStream(...) 5. IMediaControl::Run() 3.4 2-1. ICreateDevEnum CoCreateInstance 2-2. IEnumMoniker ICreateDevEnum::CreateClassEnumerator (,...) 2-3. IMoniker IEnumMoniker::Next 2-4. IBaseFilter IMoniker::BindToObject(..., (void **)psrc) 3.5 1. IEnumFilters IFilterGraph::EnumFilters 2. IBaseFilter IEnumFilters::Next(1, (IBaseFilter **), (ULONG *)) 3. FILTER_INFO IBaseFilter::QueryFilterInfo(FILTER_INFO *) DirectShow SampleGrabber ISampleGrabber ISampleGrabberCB ISampleGrabber::SetCallBack() 3.3 BufferCB BufferCB 14
3. 0. ISampleGrabberCB 1-3 3.3 4-1. CoCreateInstance(CLSID_SampleGrabber,..., IID_IBaseFilter,...) IBaseFilter::QueryInterfase(IID_ISampleGrabber,...) 4-2. ISampleGrabber::SetMediaType(AM_MEDIA_TYPE *) 4-3. IFilterGraph::AddFilter(IBaseFilter *) 4-4. 4-5. SetBufferSample(FALSE), SetOneShot(FALSE) SetCallback() : 1 ISampleGrabberCB 2 0 SampleCB, 1 BufferCB 5. ISampleGrabber::GetCurrentBuffer(...) 3.7 1. IEnumPins IBaseFilter::EnumPins 2. IPin IEnumPins::Next(1, (IPin **), 0) 3. (IN,,OUT) FILTER_INFO IPin::QueryDirection(PIN_DIRECTION *) 3.8 3.8 IPin *GetPin(IBaseFilter *pfilter, PIN_DIRECTION PinDir) { } BOOL bfound = FALSE; IEnumPins *penum; IPin *ppin; pfilter->enumpins(&penum); while(penum->next(1, &ppin, 0) == S_OK) { PIN_DIRECTION PinDirThis; ppin->querydirection(&pindirthis); if (bfound = (PinDir == PinDirThis)) // break break; ppin->release(); } penum->release(); return (bfound? ppin : 0); 15
ISampleGrabberCB COM CUnknown IUnknown AddRef Release QueryInterface NonDelegatingQueryInterface 3.9 16
... 3.1.3 DirectShow CaptureGraphBuilder FilterGraph CaptureGraphBuilder CaptureGraphBuilder FilterGraph DIB [7] 3.5 3.5 3.10 17
3.10 18
. 3.2.. (color specification system)[8] RGB 3 435.8nm (Blue) 546.1nm (Green) 700.0nm (Red) 3 3 RGB RGB 1. RGB R G B 2. RGB HSV HSV (Hue) (Saturation) (Intensity Value) 3.6 RGB HSV 19
RGB HSV 3.7 3.8 3.7 RGB 3.8 HSV ( ) 20
.. 3.9 RGB HSV 1 3.9 RGB 3.10 RGB HSV 3.11 3.11 HSV 21
RGB HSV [8] 3.11 RGB HSV max = max (r, g, b); min = min (r, g, b); if (g == max) { hue= (b - r) / ( max - min ) * 60 + 120; } else if (b == max) { hue= (r - g) / ( max - min ) * 60 + 240; } else if (g < b) { hue= (g - b) / ( max - min ) * 60 + 360; } else { hue= (g - b) / ( max - min ) * 60; } max = max (r, g, b); min = min (r, g, b); Saturation = ( max - min ) / max * 100; Value = max (r, g, b) / 2.55 H = 0 359 S = 0 100 V = 0 100 22
.. (FinePix50i) RGB 3.12 RGB HSV R 180 208 141 173 159 184 136 206 246 105 G 139 145 96 120 101 125 89 171 223 52 B 119 130 77 112 94 121 61 151 217 44 H 19 11 17 8 10 4 22 21 12 8 S 34 38 45 35 40 34 57 26 12 58 V 71 82 58 68 62 72 53 81 97 41 RGB 3.12 RGB HSV HSV H V H 0 359 3.12 H S [9] 23
3.12 H S H[0 359] 3 0 S[0 100] V[0 100] V H 1 8 9 10 [9] H 6 38 H 0 30.. HSV RGB 3.2.1 (#FFCC99) 3.13 RGB 2 (#FFFFFF) 3.13 RGB 2 3.14 24
.. RGB 3.11 H 0 30 (#FFFFFF) (#000000) 3.15-3.17 HSV 3.15 3.16 3.17 RGB 3.16 RGB 25
. 3.18 3.19 HSV.. X 3.18 X 3.18.. 3.4.1 3.19 3.19 26
3.20 No YES YES No No YES 3.20 27
3.21 ➁ ➀ 3.21 HSV 3.21 3.20 64 64 Y X X Y 3.21 2 28
. 2.3.1. K.Ohba and K.Ikeuchi [10] L.Itti [11] 29
. 1.. 1 [8] fx = s(i+1,j) - s(i,j) fy = s(i,j+1) - s(i,j) y(i,j) = fx fx + fy fy y(i,j) = fx + fy θ = tan-1 (fy/fx) 4.1 4.1 30
.. (Laplacian) L(i,j) = x(i,j) 4 - { x(i-1,j)+x(i+1,j)+x(i,j-1)+x(i,j+1) } 4.2 2 4.2 [12]. 4.3 3 3 31
4.3 (i,j) 3 3 4.3 3 3 f(i,j) i j (0,0) (i,j) 3 3 (i,j) g(i,j) 3 3 (i-1,j-1) f(i,j-1) f(i+1,j-1) f(i-1,j) f(i,j) f(i+1,j) f(i-1,j+1) f(i,j+1) f(i+1,j+1).. 2 [8] 32
4 4 3 3 4.4 4.4 4.5 4.5 4.6 4.6 4.4 4.6 33
.. 0 0 0 0-1 -1 0 1 1 0 0 0 0 1-1 0 1-1 f x f 2 y ) f = ( f x + f 4.7 2 y.. -1 0 1-2 0 2-1 0 1-1 -2-1 0 0 0 1 2 1 f x f y 2 y ) f = ( f x + f 2 4.8 34
.. 4.4.3-1 0 1-1 0 1-1 0 1-1 -1-1 0 0 0 1 1 1 f x f y 2 y ) f = ( f x + f 2 4.9.. 0 0 0 0 1 0 0 0-1 0 0 0 0 0 1 0-1 0 f x f y 2 y ) f = ( f x + f 2 4.10 35
.. (1 ) 4.11 X 0-1 0-1 4-1 0-1 0-1 -1-1 -1 8-1 -1-1 -1 1-2 1-2 4-2 1-2 1 1 2 3 4.11 36
... ( 4.12) ( 4.13) 4.12 4.13 3.4.2 ( 4.14) ( 4.15) 4.14 4.15 4.15 37
4.16 0.07 No YES No YES No YES 4.16 X X 7 38
4.17 0.2 No YES No YES YES YES No 4.17 Y 4 X Y 20 39
.. (a) (b) 2 95 (c) (d) (e) 4.18 (4.4.2 ) 2 4.18(a) 95 2 4.18(b) 65 120 95 1 4.18(e) 40
.. (a) (b) 2 150 (c)4 (d) (e) 4.19 (4.4.3 ) 4.19(a) 100 2 4.19(b) 100 200 150 4 1 4 2 2 4.19(e) 41
.. (a) (b) 2 200 (c)4 (d) (e) 4.20 (4.4.4 ) (4.4.3 ) 4.20(a) 165 240 200 2 4.20(b) 4 1 4 2 2 4.20(e) 42
.. (a) (b) 2 160 (c) (d) (e) 4.21 (4.4.5 ) 4.21(a) 110 210 160 160 2 4.21(b) 3 1 3 4.21(e) 43
.. (a) (b) 2 130 (c)2 (d) (e) 4.22 (4.4.6 ) 2 4.22(a) 110 170 140 2 1 2 1 4.22(d) 44
. 4.5.2 4.5.6 3.2.1 3.3.5 3.4.2 4.5.2 4.5.6 4.23 320 240 5fps 320 240 3fps 640 480 1.5fps 320 240 (a) ( (b) ( ) (c) ( ) 4.23 4.23 45
. WDM HSV 3.3.5 3.4.2 2 4.5.1 4.5.2 4.5.6 4.6. WDM 46
47
48
[1], 175, Vol.64, No.3, pp.107-110 1997 [2] Vol.56 No.7 pp.14-17 2001 [3] ChrisCant WDM 2000 [4] Microsoft Corporation, MSDN Library [5] Microsoft Corporation, DirectX 8.1 SDK Document [6] DirectX8 2001 [7] Intel Corporation, Open Source Computer Vision Library Reference Manual [8] CG 1999 [9] Jamie Sherrah and Shaogang Gong, Skin Colour Analysis, University of Edinburgh, May, 2001. [10] K.Ohba and K.Ikeuchi, Detectability, uniqueness and veliability of eigen-windows for stable verification of partially occluded objects, IEEE Trans. Pattern Analysis and Machine Intelligence, Vol.19, No.9, pp. 1043-1047, Sep., 1997. [11] L.Itti, C.Koch, and ENiebur, A Model of saliency-based visual attention for rapid scene analysis, IEEE Trans. Pattern Analysis and Machine Intelligence,Vol.20, No.11, pp. 1254 1259, Nov., 1998. [12] " " A, Vol. J84-A, No. 6, pp. 759-768, Jun., 2001. 49