2-08 ..
. . , . .
. . , . .
2011
. 5
1 ..6
2 .7
3 .. 11
4 13
4.1 ..13
4.2 ⅅ15
4.3 .24
5 ()..27
6 .31
充.32
ⅅ..34
. , , .
( , ). , , .
.
, , , , , . .
1
. , , , .
, , , , .
, .
, . .
2
, , . n , n+1 , .. - . () ( ). 0/ , 1/ . 1.
|
|
, , n . , . . .. , n .. , .
1. .
:
.
. , . , :
. (2.1)
( B), ( C) :
, (2.2)
w h , (i,j) , .
2 : ( - , ) ( - ). () .. . . , .
2) .
, . ..
(2.3)
n ( ) . . , , , . :
1) n . ..
(2.4)
- n .
2) . (i,j) .
(2.5)
, .
e . . e
|
|
(2.6)
a , e-. e = 3 (.. Mahalanobis distance) . .. , . , , , RGB , . RGB 3 3 . .
3
TBackground TNRBackround. TBackground . . Mask . , :
- AStep, ( 2, );
- delt, , ( 2.2)
- count, .
- Sensetiv, , , .
.
CompImg . , true , Sensetiv , , . TBitmap , , , , .
TNRBackground , , Mask. , Mask , , ( 2.4). delt e ( 2.5). . n , , .
, . TShowAnim TThread.
4
4.1
, 4.1.
4.1
, , TMemo . , .
. , , .
, . .
, .
, , , . . :
- ;
- , .
- , . , , ( ), , : , , .
|
|
- .
- , .
- .
- , .
4.2
:
1. ()
2. ()
3. .
4. .
.
4.2.1 ()
, . . RGB. ( )
4.2.
4.2 ()
4.2.2 () .
, . , .
n .
2.4.
4.3.
4.3 () .
4.3.3 .
. - 2.1.
:
- , . , , , .
4.4.
4.4
.
4.3.3 .
. M D. . 2.5.
4.5.
4.5
4.3 .
. DSPack.
|
|
. 4.6 DSPack
DSPack DirectShow, :
- TFilterGraph. DirectShow. .
- TFilter, , IbaseFilter. . DirectShow.
- TVideoWindow, () .
. SysDevEnum, . , :
SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
, :
if SysDev.CountFilters > 0 then
for i:= 0 to SysDev.CountFilters - 1 do
begin
Device:= TMenuItem.Create(Devices);
Device.Caption:= SysDev.Filters[i].FriendlyName;
Device.Tag:= i;
Device.OnClick:= OnSelectDevice;
Devices.Add(Device);
end;
OnSelectDevice, :
Filter.BaseFilter.Moniker:= SysDev.GetMoniker(TMenuItem(Sender).tag);
FilterGraph.Active:= true;
with FilterGraph as ICaptureGraphBuilder2 do
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, SampleGrabber as IBaseFilter, VideoWindow as IbaseFilter);
FilterGraph.Play;
SampleGrabber. SampleGrabber.GetBitmap(img).
, . SampleGrabber: :
procedure TVideoForm.GetResolution(var VWidth,VHeight:integer);
var
info:_AMMediaType;
begin
SampleGrabber.SampleGrabber.GetConnectedMediaType(info);
VWidth:=VIDEOINFOHEADER(info.pbFormat^).bmiHeader.biWidth;
VHeight:=VIDEOINFOHEADER(info.pbFormat^).bmiHeader.biHeight;
end;
5 ()
. , , ( 3DSMax), , -.
5.1 - .
1)
5.1 .
, , , .
2) .
5.2 .
, . , 0 . 2.5, , . , 0 , , 0. (2.5) .
5.2 - .
1) .
5.4 .
, (40), (10) .
2) .
5.4 .
6
. . , , . .
. . , . , , .
|
|
, .
, . .
, , , .
, .
- , , , , . , "" . , , . , , .
, "" , . , , , . , , . , , , , . , , , , .
, . , . . , , ( ), .
. , .