首页 理论教育 抠像机控制

抠像机控制

时间:2022-03-03 理论教育 版权反馈
【摘要】:在教育数字媒体内容制作系统中,摄像机输出的现场信号通过抠像机与虚拟背景结合。抠像机控制模块应可对当前抠像机的各项设置进行保存,也可以读入已保存的设置,以便进行教育数字媒体内容的制作。

3.3.3 抠像机控制

在教育数字媒体内容制作系统中,摄像机输出的现场信号通过抠像机与虚拟背景结合。抠像参数的设置对抠像效果的好坏起到重要作用,因此需要开发抠像机控制模块来对抠像机的输入、输出,以及抠像颜色、抠像参数、画质参数、抠像区域位置和大小等进行控制和调整,以达到最好的图像融合效果。抠像机控制模块应可对当前抠像机的各项设置进行保存,也可以读入已保存的设置,以便进行教育数字媒体内容的制作。抠像机控制模块功能结构图如图3-8所示。

1.抠像机控制模块功能分析与设计

抠像机控制模块的主要功能如下。

(1)抠像机切换。在抠像机一、抠像机二与抠像机三中进行自由选择和切换。

img12

图3-8 抠像机控制模块功能结构图

(2)输入设置。对于选定的抠像机,能够指定其前景或背景输入信号源,以及是选择活动影像输入还是选择静止影像输入。

(3)输出设置。对于选定的抠像机,能够选择输出其前景还是背景,或是选择抠像合成输出。

(4)抠像颜色键选择。对于选定的抠像机,能够选择抠掉何种颜色。

(5)抠像设置。可以对抠像效果进行具体的调节,如密度、级别、前景或背景画质、抠像区域等。主要包括如下内容。①键微调设置。能够对选定的键颜色进行密度、级别等微调。②画质调整。能够对选定的抠像机的前景输入和背景输入进行画质调整。③区域调整。能够对抠像区域的上下左右区域进行扩大或者缩小调整。④复位。

(6)参数设置。能够对当前抠像机的各项设置进行保存,也可以读入已保存的设置。

2.抠像机控制模块功能实现

1)抠像机控制通信协议与参数设置

抠像机控制模块采用RS-232串口通信技术来实现抠像机与主控电脑之间的通信数据传输。系统中采用DVK-100抠像机,根据其控制信令手册,其RS-232串口通信参数与摄像机模块的不同之处在于抠像机的通信速度需要设置为38 400bps,其他参数相同。

主控电脑与DVK-100抠像机之间的通信通过共享缓冲区机制实现,主控电脑通过向共享缓冲区发送命令与读取返回信息交换数据。DVK-100抠像机命令包结构如图3-9所示。DVK-100抠像机控制命令头由两个字节组成,并为0X00与0XFE的固定取值,“CH_ID[4X]”表示抠像机地址,“CMD[6X-DF]”表示命令类型代码,“Param0~ParamN[3X]”表示具体命令参数,“CRCH[5X]”与“CRCL[5X]”分别表示循环冗余码的高字节与低字节部分,命令的结束字节固定为“0XFF”。

img13

图3-9 抠像机命令包结构

2)抠像机控制实现代码示例抠像机控制界面如图3-10所示。

img14

图3-10 抠像机控制界面

同样基于CSerial类,可以实现向抠像机发送各种控制命令,基本控制流程的代码实现如下所示。

dcb1.StopBits=ONESTOPBIT; {

Serial2.Open(m_baudrate2,comc1,FALSE,0);//打开端口

Serial2.SendData(send1,4);

Serial2.PortClose();//端口的关闭

dcb2.DCBlength=sizeof(DCB);//抠像机的端口配置,抠像机波特率为36 800 bps,数据位为8,停止位为1,奇偶校验位为0

GetCommState(m_hIDComDev,&dcb2);//获得DCB结构体信息,以获得特定的内存空间

dcb.BaudRate=nBaud;//对相应的端口配置相关信息

dcb1.fParity=fParit;dcb1.ByteSize=8;dcb1.Parity=Parit;

ReadFile(comc1,send,4,0,NULL);//往缓冲区读入数据,完成某项操作

WriteFile(comc,send,4,0,NULL);//向抠像机发送4个字节的命令函数

CloseHandle(comc);//利用串口通信相应的函数实现串口的关闭

3.3.4 切换台控制

1.切换台控制模块功能分析与设计

高质量教育数字媒体内容制作系统支持正机位两层抠像输出、侧机位两层抠像输出、正机位三层抠像输出及侧机位三层抠像输出共四种输出结果。正机位抠像输出与侧机位抠像输出之间的切换必须使用切换台来实现,使用切换台还可以为这两路信号的转换过程增加各种艺术效果。切换台控制模块功能结构图如图3-11所示。

切换台控制模块的主要功能如下。

(1)效果选择可实现主信号与预备信号之间的转场特效设置,当主信号与预备信号不同且单击执行按钮时,该设置起作用,如果在主信号之间直接切换则此设置不起作用。

(2)信号控制中的主信号选择直接决定当前输出哪一路信号,预备信号选择决定即将从当前信号过渡到哪一路信号。

(3)速度选择可设置特效转场的速度。

(4)执行切换最终实现特效转场。

2.切换台控制模块功能实现

1)切换台控制通信协议与参数设置

切换台控制模块采用RS-232串口通信技术来实现抠像机与主控电脑之间的通信数据传输。系统中采用Se-500切换台,根据其控制信令手册,其RS-232串口通信

img15

图3-11 切换台控制模块功能结构图

参数中的通信速度设置为57 600bps,奇偶校验位设置为奇校验,其他参数与摄像机控制模块相同。

切换台控制命令包结构如图3-12所示。切换台控制命令包的第一个字节为信息头,若是向切换台发送命令,则为0XF0,如果是切换台返回的信息,则为0XFC;第二个字节为切换台ID号,固定为0X32;第三个字节为命令长度字段,接下来部分为具体命令数据。“Chksum_L”与“Chksum_H”分别为循环冗余码的低字节与高字节,命令的结束字节为固定值0XFF。

img16

图3-12 切换台控制命令包结构

2)切换台控制实现代码示例

与抠像机控制模块类似,可以通过实例化CSerial类来向切换台发送各种控制命令,基本控制流程的代码实现如下所示。

Serial3.Open(m_baudrate2,comc2,FALSE,0);//打开端口

Serial3.SendData(send1,4);

Serial3.PortClose();//端口的关闭

dcb3.DCBlength=sizeof(DCB);//切换台的端口配置,切换台波特率为36 800 bps,数据位为8,停止位为1,奇偶校验位为1

GetCommState(m_hIDComDev,&dcb3);//获得DCB结构体信息,以获得特定的内存空间

Dcb3.BaudRate=nBaud;//对相应的端口配置相关信息

dcb1.fParity=fParit;

dcb1.ByteSize=8;dcb1.Parity=Parit;

dcb1.StopBits=ONESTOPBIT;

ReadFile(comc2,send,4,0,NULL);//往缓冲区读入数据,完成某项操作WriteFile

(comc2,send,4,0,NULL);//向切换台发送4个字节的命令函数

CloseHandle(comc2);//利用串口通信相应的函数实现串口的关闭

切换台控制界面如图3-13所示。

img17

图3-13 切换台控制界面

3.4 虚拟教学场景显示与管理技术

3.4.1 DirectShow技术

DirectShow是微软提供的一套建立于DirectX(包括Direct Draw,DirectSound,Di-rect3D等)基础之上的开发包,是一种基于COM技术的多媒体编程接口。它主要是在Windows平台上通过应用DirectShow最重要的核心部件过滤器(filter)来处理不同的数据源、数据格式以及硬件设备等问题。下面通过DirectShow的整个结构框架图(见图3-14)来理解应用程序与DirectShow组件以及DirectShow所支持的软硬件之间的关系。

img18

图3-14 DirectShow系统框架图

DirectShow定义了如何利用标准组件来处理流媒体数据,这些组件称为过滤器,所有的过滤器聚合起来构成过滤器图表(Filter Graph),通过一个被称为过滤器图表管理器(Filter Graph Manager)的部件来监视过滤器的连接和控制多媒体流在过滤器图表中的流动。在DirectShow技术中处于最核心位置的就是作为“过滤器”的可插入标准组件,它是执行特定任务的COM对象。过滤器按照基本功能大致可分为三类:源滤器,变换过滤器,表现过滤器。过滤器传输数据的端口叫做针(Pin)。过滤器通过向文件读写、修改数据和显示数据到输出设备上来操作流媒体。为了完成整个任务,必须将所有的过滤器连接起来,因此一个过滤器输出成为另外一个过滤器的输入。这些所有经过针连接起来的过滤器就构成过滤器图表,如图3-14所示。应用程序无须对过滤器图表中的每一个过滤器进行单独处理,因为DirectShow提供了更高层次的部件,称为过滤器图表管理器,由它来控制各种过滤器的连接和多媒体流在过滤器图表中的流向。应用层只需调用高层次的API,如run方法(启动媒体数据在过滤器图表中的流动)、stop方法(停止播放多媒体流)等,来实现对多媒体流的控制。另外,过滤器图表管理器能够将事件信息传送到应用层,因此应用程序能响应事件信息。如果需要,它可以自动插入一个合适的解码器,并将转换过滤器的输出针脚连接到表现过滤器。应用程序可以通过与过滤器图表管理器的通信来控制过滤器图表的活动。程序开发人员只需调用API函数即可实现对多媒体流的控制。

3.4.2 虚拟教学场景显示

1.虚拟教学场景显示模块功能分析与设计

虚拟教学场景显示技术需要将计算机存储的各种格式(图片、视频、三维模型、Flash、PPT等)的虚拟教学场景输出给抠像设备进行场景融合。虚拟教学场景显示模块功能结构图如图3-15所示。虚拟教学场景显示模块根据教育数字媒体内容资源制作的需求,实现以下两个方面的功能。

img19

图3-15 虚拟教学场景显示模块功能结构图

(1)虚拟背景显示功能。提供两路虚拟教学背景分别作为正面和侧面摄像机的背景信号;提供一路虚拟教学前景信号,作为图像融合设备3的前景信号;支持图片、视频、三维模型、Flash、PPT等多种格式背景的显示和输出。

(2)虚拟背景播放与控制。提供虚拟背景的播放、暂停、停止等播放控制功能。

2.虚拟教学场景显示模块功能实现

1)视频背景的显示功能与播放控制实现

虚拟教学场景视频场景的播放和控制,可以通过视频解压卡硬解压或主控电脑软解压来实现。但主控电脑的显卡只有一路输出,因此,在实际系统实现过程中,通常采用多块视频解压卡来输出多路视频背景。系统实现时采用MPEG-4解码过滤器XVID MPEG-4Video Decoder和DirectShow提供相关的媒体接口来实现。其核心代码和流程如下。

CoInitialize(NULL);//初始化COM库

//建立过滤器图像管理器FilterGraphManager

hr 1=CoCreateInstance(CLSID_FilterGraph,NULL,

    CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&pigb);

hr2=FindFilterByName(CLSID_LegacyAmFilterCategory,L"Sigma Designs

MPEG-2hardware decoder",&pDecoderFilter);//查找硬件解压卡解码过滤器if(SUCCEEDED(hr)&&pDecoderFilter)

//导入硬件解压卡信息

if(!pHardware)

      continue;

pigb->QueryInterface(IID_IMediaControl,(void**)&pimc);//查找IMediaControl接口,实现媒体数据控制与定位

pigb->QueryInterface(IID_IMediaEventEx,(void**)&pimex);//查找IMediaEventEx接口,处理相关媒体数据信息

pigb->QueryInterface(IID_IVideoWindow,(void**)&pivw);//查找IVideoWindow接口,设置播放器窗口的属性

pigb->AddFilter(pDecoderFilter,L"MPEG4Source");

//渲染视频数据

hr=pigb->RenderFile(wFiles,NULL);

……

对于视频背景播放和控制功能的实现,可以通过调用DirectShow中的媒体控制接口(ImediaControl)的“Run()”函数播放视频流;调用控制接口的“Stop()”函数停止视频流的播放;调用控制接口的“Pause()”函数实现视频流播放的暂停。

2)三维背景显示实现

三维背景显示通过调用Multigen Vega三维模型导入程序,导入相应的三维背景模型进行渲染,并通过主控电脑的显卡输出到图像融合设备。Multigen Vega是一款功能强大的视景仿真软件,利用该软件能有效实现三维场景显示与视点变换、模型驱动与实时控制等。Vega三维模型导入程序的实现代码如下。

main()

vgInitSys();//初始化系统并创建共享的内存区和信号区

vgDefineSys(“myapp.adf”);//使用已存在的myapp.ADF三维模型文件

vgConfigSys();//配置vega

while(bContinuing)//绘制和渲染三维模型

vgSyncFrame();

vgFrame();

……

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈