新闻中心

EEPW首页>手机与无线通信>设计应用> 浅析监控图像处理系统的软件结构

浅析监控图像处理系统的软件结构

作者: 时间:2011-01-20 来源:网络 收藏
视频图像数据的显示问题,目前都是利用Windows API函数SetDIBitsToDevice实现图像数据从缓冲区到显示设备之间的传送。绝大多数显卡的硬件功能支持SetDIBitsToDevice,当硬件不支持时,Windows将提供经软件模拟的SetDIBitsToDevice函数。由于有统一的规范,不需要关心所选用的显卡的具体细节,同是显示模式的问题也迎刃而解了。由于图像数据的传输由显卡的硬件完成,所以能达到很好的效果。

本文引用地址://m.amcfsurvey.com/article/156761.htm

Windows图像软件系统的基础结构

  在Windows操作系统且采用单屏方式的条件下,要对图像进行处理,就必须将图像装入内存。当物理内存不足时,系统通过内存分页交换,利用硬盘空间模拟内存。应用程序使用统一的系统内存管理,代码简单,维护方便,还具有自动伸缩性。

  图像作为一个处理对象放到内存中,必须使用数据结构来描述它,这就是图像数据结构。对于任何一个图像应用程序来说,图像数据总是应用程序数据的核心部分。

  应用程序的所有功能几乎都是围绕它进行的。如文件读写、扫描、拍摄、处理、显示、打印等,都需要建立、访问图像数据,实际上都是以图像数据结构核心为中心的。即使是最简单的图像显示软件,也需要图像文件读取和图像显示两大部分。

  一个图像软件系统,包括不同的图像处理算法、图像显示、扫描仪或摄像机支持、图像采集卡支持、图像文件格式转换等,都涉及到图像数据结构。如果我们建立了一个以图像数据结构为核心的Windows图像软件系统的基础结构,就建立了一个完整的软件图像环境。

  图像基础结构包括图像数据结构核心和围绕此核心构造的周边模块。图像数据结构核心是居于中心位置的。周边模块包括图像文件格式支持、图像显示、图像处理等。

  在设计过程中,要注意以下几个问题:

图像基础结构的核心部分以C/C++语言完成。因为C/C++语言编译效率高,执行速度快,这对于要处理大量数据的图像应用来说是非常关键的;且C/C++ 语言非常灵活,使得图像基础结构可以高效的实现,而用其他的语言实现某些相同的功能可能要花很大的精力;C/C++语言移植性强,几乎可以移植到任何硬件和操作系统中。

  图像基础结构的内部实现可以使用C++,但是对外接口一律使用C界面。因为C++的名字解析方法没有统一的标准,不同公司的C++编译器对相同的C++符号解析得到的名字可能完全不同,因此不同C++编译器生成的目标文件不能正确连接。这使得像Windows系统下具有C++接口的动态连接库(DLL)的应用不太可行,所以对外接口使用C语言则没有这个问题。

  避免使用依赖于平台的声明、函数等,保持核心的可移植性。图像核心定义和代码只使用标准C数据类型和标准C库(ANSI)调用。当需要高端应用时,图像核心可以迅速移植到UNIX及其他平台,使整个应用具备较强的移植能力和伸缩性。

  目前,图像基础结构包含如下模块:

  ·StdImage:图像数据结构核心以及对此核心进行操作的基本函数;

  ·ProgressStub:进度处理机制的定义和接口;

  ·VirtualFile:虚拟文件I/O界面;

  ·Vf_file:虚拟文件I/O的实际文件实现;

  ·Vf_memory:虚拟文件I/O的内存文件实现;

  ·ImageFile:虚拟图像文件读写界面;

  ·Jfit_file:虚拟图像文件读写界面的JPEG格式实现;

  ·Bmp-file:虚拟图像文件读写界面的BMP格式实现;

  ·Fgi_file:虚拟图像文件读写界面的自由灰度图像格式实现;

  ·DibStdImage:DIB(设备无关位图)与StdImage之间的转换;

  ·mess_util:难以归类的杂项辅助功能;

  ·ProgressWinHint:Windows下的一个进度处理机制实现;

  ·WinMessUtilities:Windows下的难以归类的杂项辅助功能。

  由于面向帧存的图像硬件系统的结构,以图像帧存为核心,还包括图像的输入输出和处理等模块;而面向计算机内存的图像系统里,是以计算机内存为核心,同样包括有图像的输入输出和处理等模块。前者以整体硬件结构为主体,软件似乎只是图像处理和数据存储,后者以整体软件结构为主体,硬件则纳入软件的管理之下。这两种系统结构的差别很大,但从功能来讲,有其相似之处。

  面向计算机内存的图像软件系统结构,称之为Windows图像基础结构,这种Windows图像基础结构的总体结构框图如图2所示。在图2中,StdImage结构代表了一个图像或图像序列,所有的功能几乎都围绕它进行。它可以利用ImageFile模块从图像文件装入图像,或者将图像写入文件中。在Windows环境下,为了显示或打印图像,通常会使用DIB,此外,像扫描仪、摄像机等还会以DIB的形式向计算机输入图像,因此图像基础结构设有DibStdImage模块,以便在DIB和StdImage之间进行快速转换。图像通信插入在网络和StdImage之间,由此可以实现图像的传输,而这种传输,是以内存为媒介,它具有速度快的优点。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭