Image Acquisition ToolboxWord文件下载.docx
《Image Acquisition ToolboxWord文件下载.docx》由会员分享,可在线阅读,更多相关《Image Acquisition ToolboxWord文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
Toolboxes>
ImageAcquisition>
ImageAcquisitionTool。
这个工具在桌面有丰富的Help信息。
当你在不同的用户界面窗口点击,相关的Help将出现在图像采集工具Help窗口中。
大多数的用户指南描述了使用工具箱通过MATLAB命令行执行任务。
学习如何使用桌面工具,请参阅使用图像采集工具的GUI。
1.3基本的图像采集步骤
1.3.1概述
本章节通过一个简单的运动检测的应用程序举例说明创建一个图像采集应用程序所需的基本步骤。
此应该程序通过对两个输入图像帧的逐个像素比较实现检测一个场景中运动物体。
如果在此场景中没有运动的物体,每一帧像素值将保持不变。
当有物体在图像中移动时,该应该程序显示已经改变的像素值。
这个例子表明如何使用图像采集工具箱软件仅几行代码来创建一个图像采集工作应用程序。
注意:
为了运行此例用的样本代码,你必须有一个图像采集设备连接到你的系统。
这个设备可以试专业级的图像采集设备,例如视频采集系统,或者一个一般的MicrosoftWindows图像采集设备,例如网络摄像头。
此代码只需要修改小部分便可以用于多种类型的设备。
使用图像采集工具箱软件采集图像数据,你必须执行如下几步:
Step1:
安装、配置你的图像采集设备
Step2:
检索信息,惟一地标识你的图像采集设备的图像采集工具箱的软件
Step3:
创建视频输入目标
Step4:
预览视频输出(可选)
Step5:
配置图像采集对象属性(可选)
Step6:
采集图像数据
Step7:
清除
1.3.2Step1:
根据你的图像采集设备的安装说明,设置通常包括:
●在你的电脑上安装图像采集板卡
●安装该设备所需的驱动软件。
驱动软件通常用销售商提供。
●连接摄像机到图像采集卡的连接器
●通过运行应用程序来预览视频输出检查摄像机是否正常工作
一般的windows图像采集设备,例如网络摄像机和数字便携式摄像机,通常不需要安装视频采集卡。
你可以通过USB或者FireWire端口直接连接这些设备到你的电脑。
安装和配置完成你的图像采集硬件之后,在你的电脑桌面双击MATLAB图标启动MATLAB。
你不需要执行任何特殊的MATLAB配置去执行图像采集。
1.3.3Step2:
检索硬件信息
在这一步,你将得到几条你想访问的工具箱唯一识别的图像采集设备信息。
当你创建一个图像采集对象的时候你将使用这些信息,具体描述见step3:
创建视频输入对象。
下表列出了这些信息,你可以使用imaqhwinfo函数查看每一条信息。
设备信息
描述
适配器名称
适配器是图像采集工具箱和设备驱动通信的软件。
工具箱包括有某些厂商的图像采集设备和特定类型的图像采集设备适配器。
查看DeterminingtheAdaptorName获取更多信息。
设备ID
设备ID是适配器分配的唯一的识别每个图像采集设备的数字,它可以用于通讯。
查看DeterminingtheDeviceID获取更多信息
视频格式
视频格式指定视频输出的图像分辨率(长和高)和其他特征。
图像采集设备通常提供多种视频格式。
查看DeterminingtheSupportedVideoFormats获得更多信息。
指定视频格式是可选的;
工具箱使用一个支持的格式作为默认的格式。
DeterminingtheAdaptorName
在MATLAB命令行输入imaqhwinfo函数确定适配器名称,不用带任何参数。
imaqhwinfo
ans=
InstalledAdaptors:
{'
dcam'
'
winvideo'
}
MATLABVersion:
7.4(R2007a)'
ToolboxName:
ImageAcquisitionToolbox'
ToolboxVersion:
2.1(R2007a)'
在imaqhwinfo所返回数据中,InstalledAdaptors成员列出了在你的电脑上所有可用的适配器。
在此例中,imaqhwinfo在电脑上发现两个可用的适配器:
'
and'
。
你的电脑上的清单可以能只包含一个设备名称。
选择准备访问你的图像采集设备的适配器名称。
查看DeterminingtheDeviceAdaptorName获得更多信息。
DeterminingtheDeviceID
使用具体的适配器名称作为唯一参数,在MATLAB命令行输入imaqhwinfo,查看一个指定的图像采集设备的设备ID号。
在返回数据中,DeviceIDs成员是一个单元阵列,其包含了所有可以通过具体适配器访问的所有设备ID。
在这个例子中使用DCAM适配器。
你应该替代为你想使用的适配器的名称。
info=imaqhwinfo('
)
info=
AdaptorDllName:
[1x77char]
AdaptorDllVersion:
AdaptorName:
DeviceIDs:
{[1]}
DeviceInfo:
[1x1struct]
DeterminingtheSupportedVideoFormats
确定视频采集设备支持那些视频格式,查看imaqhwinfo所返回的数据DeviceInfo成员。
DeviceInfo成员是一个结构体数组,每一个结构体提供了一个指定设备的信息。
你可以使用设备ID作为参考结构输入,或者你可以通过调用函数imaqhwinfo函数查看指定的设备信息,使用具体的适配器名称和设备ID作为函数参数。
查看SupportedFormats字段设备信息结构,获得设备支持的视频格式列表。
SupportedFormats字段是一个单位阵列的字符串数组,其中每个字符串的名称是设备的支持一种视频格式。
有关更多信息,请参见确定支持的视频格式。
dev_info=imaqhwinfo('
1)
dev_info=
DefaultFormat:
F7_Y8_1024x768'
DeviceFileSupported:
0
DeviceName:
XCD-X7001.05'
DeviceID:
1
ObjectConstructor:
videoinput('
1)'
SupportedFormats:
Y8_1024x768'
1.3.4Step3:
CreateaVideoInputObject
在这一步中你可以创建一个视频输入对象,工具箱使用的该对象代表在MATLAB和图像采集设备之间的一个连接。
使用视频输入对象的属性,你可以控制视频采集过程的许多属性。
查看硬件连接获取更多图像采集对象属性。
在MATLAB命令窗口输入vidoinput函数可创建视频输入对象。
由imaqhwinfo函数返回的DeviceInfo结构体包含了默认的videoinput函数语法,在设备的ObjectConstructor字段。
查看DeterminingtheSupportedVideoFormats获得更多设备结构体信息。
下面的例子为DCAM适配器创建一个视频输入对象。
替换为你的系统中可以使用的图像采集设备适配器名称。
vid=videoinput('
1,'
videoinput函数有三个参数:
适配器名称,设备ID,视频格式。
你可以在第二步中获得这些信息。
适配器名称是唯一必须的参数,videoinput函数可以使用默认的设备ID和视频格式。
查看在设备结构信息中的DefaultFormat字段确定默认的视频格式。
你可以选择指定的设备配置文件名称代替具体的视频格式,也称为摄像机文件。
设备配置文件通常用视频采集系统销售商提供。
这些文件包括所有的所需的配置设置使用一个特定的摄像机与设备。
请参阅使用设备配置文件(相机文件的更多信息。
ViewingtheVideoInputObjectSummary
在MATLAB命令提示符输入变量的名字(vid),查看您刚刚创建的视频输入对象扼要。
摘要信息显示对象的许多特征,如将每次触发被捕获的帧数,触发类型,和当前对象的状态。
您可以使用视频输入对象属性来控制许多这样的特点。
参见步骤5:
配置对象的属性(可选)获得更多信息。
vid
SummaryofVideoInputObjectUsing'
.
AcquisitionSource(s):
input1isavailable.
AcquisitionParameters:
input1'
isthecurrentselectedsource.
10framespertriggerusingtheselectedsource.
videodatatobeloggeduponSTART.
Grabbingfirstofevery1frame(s).
Logdatato'
memory'
ontrigger.
TriggerParameters:
1'
immediate'
trigger(s)onSTART.
Status:
WaitingforSTART.
0framesacquiredsincestarting.
0framesavailableforGETDATA.
1.3.5Step4:
PreviewtheVideoStream(Optional)
在你创建视频输入对象之后,MATLAB可以访问视频采集设备并且准备好采集数据。
但是,在这之前,你可能希望查看视频预览,以确保图像是否令你满意。
例如,你可能想要改变摄像机的位置,改变亮度,调节焦距或者进行一些图像采集的设置。
这一步在步骤的这一点上是可以选的,因为你可以在创建一个视频输入对象之后的任何时间预览输入的视频。
preview(vid)
preview函数在你的显示屏上打开一个视频预览图形窗口包含直播视频。
调用stoppreview函数你可以停止视频直播。
再次对相同的视频输入对象调用preview函数可以重新启动视频输入预览。
当打开一个预览窗口,视频输入对象设置Previewing属性值为’on’。
如果你通过设置图像采集对象属性改变图像的特征,,图像显示在预览窗口中反映这一变化。
下图是显示视频预览窗口的例子。
VideoPreviewWindow
点击在标题栏的Close按钮或者使用closepreview函数关闭视频预览窗口,以指定的视频输入对象作为参数。
closepreview(vid)
调用closepreview函数不带任何参数可关闭所有打开的视频预览窗口。
1.3.6Step5:
ConfigureObjectProperties(Optional)
在你创建视频输入对象和预览视频输入之后,你可能想修改图像的属性或者采集程序的其他方面。
你可以通过设置图像采集对象属性完成这些操作。
本节包括:
●用工具箱描述图像采集对象的类型
●描述怎样查看这些对象所支持的所有属性,用他们的当前值
●描述怎样设置对象的属性值
TypesofImageAcquisitionObjects
工具箱使用两种类型的对象表示与图像采集设备的连接:
●视频输入对象
●视频源对象
视频输入对象表示MATLAB与视频采集设备之间顶层连接。
这些属性在所支持每种设备的视频输入对象是相同的。
你使用step3的videoinput函数创建一个视频输入对象。
当你创建一个视频输入对象,工具箱将自动创建一个或多个与视频输入对象相关的视频源对象。
每个视频源对象表示一个或多个物理数据源,这些数据源被当做一个整体。
视频源对象的数量工具箱创建取决于指定设备和视频格式。
在任何时间,只有其中一个视频源对象,称为选择的源,可以是活动的。
这是源用于采集。
更多的信息图像采集对象,请参阅创建图像采集对象。
ViewingObjectProperties
使用get函数查看支持的视频输入和视频源的所有属性的列表。
在MATLAB命令行输入下列代码可以列出在step3中创建的视频输入对象的属性。
get(vid)
get函数列出了该对象的所有属性的当前值。
GeneralSettings:
DeviceID=1
DiskLogger=[]
DiskLoggerFrameCount=0
EventLog=[1x0struct]
FrameGrabInterval=1
FramesAcquired=0
FramesAvailable=0
FramesPerTrigger=10
Logging=off
LoggingMode=memory
Name=Y8_1024x768-dcam-1
NumberOfBands=1
Previewing=on
ReturnedColorSpace=grayscale
ROIPosition=[001024768]
Running=off
Tag=
Timeout=10
Type=videoinput
UserData=[]
VideoFormat=Y8_1024x768
VideoResolution=[1024768]
.
使用getselectedsource函数结合get函数,查看当前被选中的视频源对象与这个视频输入对象相关的属性。
Getselectedsource函数返回当前活动的视频源。
在MATLAB命令窗口输入下面代码,列出在step3中创建的相关的视频输入对象的当前选中的视频源的属性。
get(getselectedsource(vid))
get函数列出对象的所有属性的当前值。
Parent=[1x1videoinput]
Selected=on
SourceName=input1
Type=videosource
DeviceSpecificProperties:
FrameRate=15
Gain=2048
Shutter=2715
SettingObjectProperties
你可以使用set函数或者你可以用一个点引用对象属性作为结构体的一个成员,设置视频输入对象的属性或者视频源对象属性的值。
有些属性是只读的;
你不能设置这些值。
这些属性通常提供对象的状态信息。
其他变成只读属性是因为该对象正在运行。
指定对象的唯一参数,使用set函数可以查看一系列你可以设置的所有属性。
为了实现图像的连续采集,本例设置TriggerRepeat属性为Inf。
在MATLAB命令窗口输入下列代码,使用set函数设置此属性。
set(vid,'
TriggerRepeat'
Inf);
为了有助于应用程序处理数据能跟上输入的视频,本例设置FrameGrabInterval属性值为5.这个设置指定对象获得每5帧的视频数据流。
vid.FrameGrabInterval=5;
为了设置视频源对象的属性,你必须首先使用getselectedsource函数搜索对象。
为了说明,该示例为Tag属性设置一个值。
vid_src=getselectedsource(vid);
set(vid_src,'
Tag'
'
motiondetectionsetup'
);
1.3.7Step6:
AcquireImageData
在你创建视频输入对象并且配置好属性之后,你可以获取数据。
这是图像采集应用程序的核心,通常包含如下步骤:
启动视频输入对象-----调用start函数启动对象。
启动一个对象准备数据采集对象。
例如,启动一个对象锁定某些对象属性值(他们变成只读)。
然后,启动一个对象不开始采集图像帧。
数据的初始化记录取决于触发器的执行。
下例中调用start函数启动视频输入对象。
当采集所需数量的图像帧之后对象停止。
因为示例指定了连续采集,所以你必须调用stop函数停止对象。
触发采集------视频输入必须执行一个触发才能采集数据。
触发器可以以几种方式产生,取决于TriggerType属性如何配置。
例如,假如你指定为立即触发,对象在启动后立即的自动执行触发器。
如果你指定为手动触发,对象在开始采集数据之前一直等待调用trigger函数
在本例中,由于TriggerType属性设置为'
(默认),TriggerRepeat属性设置为Inf,对象自动执行触发器,连续的采集数据帧。
数据输入到MATLAB工作空间-----工具箱储存数据在内存缓冲区,磁盘文件或者两者中,取决于视频输入对象的LoggingMode属性。
你可以把数据输入到MATLAB工作空间使用这些数据。
可以用getdata函数讲多帧数据输入到工作空间。
数据一旦输入到工作空间,你可以像其他数据一样处理它。
运行示例
在MATLAB命令窗口输入如下代码运行示例。
示例将一直循环到指定的帧数量获取够之后。
在每个循环中,调用getdata函数输入两个最新的帧数据到MATLAB工作空间。
本例用一个帧减去另一个帧,创建一个差分图像检测运动目标,并且显示差分图像。
在采集到的帧的变化的像素值将在差分图像中为非0值。
Getdeta函数将从内存缓冲区中删除帧数据并将其输入到MATLAB工作空间。
实时的将帧数据从内存缓冲区移动到MATLAB工作空间是非常重要的。
如果你不从内存中移动采集到的帧,你讲很快耗尽你系统的内存。
%Createvideoinputobject.
%Setvideoinputobjectpropertiesforthisapplication.
%NotethatexampleusesbothSETmethodanddotnotationmethod.
%Setvalueofavideosourceobjectproperty.
%Createafigurewindow.
figure;
%Startacquiringframes.
start(vid)
%Calculatedifferenceimageanddisplayit.
while(vid.FramesAcquired<
=100)%Stopafter100frames
data=getdata(vid,2);
diff_im=imabsdiff(data(:
:
1),data(:
2));
imshow(diff_im);
end
stop(vid)
下图显示本例如何显示运动检测。
图中,那些区域显示代表着在移动的物体。
ImageDataintheMATLABWorkspace
本例中,getdata函数返回图像帧,变量data是一个480x640x1x10的数据,数据类型为8位。
whos
NameSizeBytesClass
data4-D3072000uint8array
dev_info1x11601structarray
info1x12467structarray
vid1x11138videoinputobject
vid_src1x1726videosourceobject
1.3.8Step7:
CleanUp
当你用完你的图像采集对象,你要从内存和MATLAB工作空间中清除这些对象有关的变量值。
delete(vid)
cl