0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于VFW软件开发包实现声呐图像压缩存储系统的应用方案

电子设计 来源:电子产品世界 作者:董琎琎;金雪;夏伟 2021-03-19 10:46 次阅读

作者:董琎琎;金雪;夏伟杰;袁春辉

针对声纳系统图像实时存储过程中的大数据量问题,本文提了一种声纳视频压缩存储的工程实现方法。采用MPEG-4视频编码标准[1]及Xvid编码器,基于VFW数字视频软件开发包,在VS2010开发环境下实现了对声呐视频的高压缩率、高压缩质量的实时压缩存储。经过实际测试,本文设计方案能够满足成像声纳系统在100m满量程条件下,最高帧率15Hz的应用需求。

引言

声纳成像在海洋资源开发和海洋防卫等方面有着重要的意义,具有作用距离远、直观显示观测区域状况和识别目标等特点,被广泛地应用于军事、经济领域。在成像声纳系统的设计过程中,为了实现对目标更为细腻的刻画,系统的角度和距离分辨率指标往往都很高。本文设计的成像声纳的相关技术指标为:量程100m,视角90°×20°,波束数538,波束间距0.17°,量程分辨率:2.5cm,最高帧率:15Hz。在工程实践中,我们需要对声纳的实时画面进行存储,以便后期的查阅和分析,在15Hz的帧速率下,每小时产生的图像需要占据的存储空间为3600X[15X(100X40X538)]Byte=116.2085GB,对系统存储能力的要求将会非常苛刻,亟需引入图像压缩技术来解决这一问题。

1 VFW软件开发包

VFW(Video for Windows)是微软推出的关于数字视频的一个软件开发包,它围绕AVI文件标准,推出了一整套完整的视频采集、压缩解压缩、回放和编辑API。它可以实现从传统模拟视频源得到视频剪辑,还可以实现影像压缩和影音播放。由于AVI文件格式在数字视频技术中被广泛使用,因此VFW在将来一段时间内仍会有较高的实用价值。用户不必专门安装VFW,Windows系统本身就包含了VFW技术。安装Windows的时候VFW所需的相关组件就会同时被安装上。VS2010中提供了VFW的头文件Vfw.h和库文件Vfw32.lib。在VS2010开发环境中调用VFW,只需要将Vfw32.lib加入工程,并在主对话框源文件HAICADlg.cpp中包含Vfw.h文件。

2 声呐图像压缩存储的实现

要进行声呐图像压缩存储,在选择了Xvid编码器的基础上,还要进行一系列操作,主要包括:AVI文件的初始化、压缩参数设置、压缩前后位图格式设置、判断压缩支持、图像压缩和存储。软件实现流程如图 1所示。

基于VFW软件开发包实现声呐图像压缩存储系统的应用方案

2.1 压缩前位图格式的设置

本文成像声呐系统无需进行视频采集,而是直接接收前端信号处理FPGA上传的数据。湿端设备上传的数据是波束形成后得到的,每个距离点处有538个波束,距离像上的点数由探测量程决定,距离分辨率为2.5cm。图像数据是一个矩阵。

如果直接显示图像数据,那么在屏幕上为一个矩形,和实际探测区域为90°视角的扇形区域不一致。为了符合人们的观察习惯,需要把图像进行坐标转换,将矩形视图转换成扇形视图,如图 2所示。除此之外,波束形成产生的是灰度图像,每个像素点由一个8bit的像素值表示,即0~255的灰度值。为了提高人眼对图像的分辨能力,在显示的时候需要将灰度图像映射成彩色图像,即每个像素点由三个8bit的值表示,分别为RGB强度值。这种彩色并非真正意义上的彩色图像,故而称之为伪彩色。图 3所示为伪彩色映射的bone、cool、copper、hot、jet五种映射方式。

压缩前位图格式与转换后的扇形图像有关,它保存的是扇形图的位图信息,包括图像的宽度、高度、大小、每个像素点的位数等。最终显示的扇形图的宽和高与图像是否处于缩放状态有关。在MFC工程的头文件中定义了一个40字节的专有结构来保存压缩前的位图格式,根据图像是否处于缩放状态进行赋值。

2.2 压缩参数设置

该部分定义了一个COMPVARS结构的对象保存编码器的压缩参数。开发者可以自己手动设置该结构体中的各个成员变量,前提是你必须了解使用的编码器的参数值;也可以弹出一个对话框让用户选择编码器,如图 4所示,同时初始化COMPVARS结构。

本文中采用第二种方法来设置压缩参数。ICCompressorChoose()函数中的uiFlags参数可供开发人员进行不同应用的开发,可以设置为如表 1所示的五种值。

本文选择MPEG-4 Xvid编码器。如果用户成功选择了一个编码器,该函数返回TRUE,否则返回FALSE。通过一个指向COMPVARS结构的指针返回用户通过对话框选择的编码器的压缩参数信息并使用该压缩参数进行图像压缩。

2.3 压缩后位图格式的设置

在压缩前位图格式和编码器的压缩参数都已知的情况下,可使用ICCompressGetFormat宏来设置压缩器的输出格式,根据输入位图格式和选择的编码器的压缩参数,返回一种编码器支持的输出位图格式。传址调用要先定义一个结构的指针,作为函数的第三个参数。函数返回时,指针指向的结构就包含了编码器的输出位图格式。

在VS2010中调试程序时,通过变量监视查看到输出位图的信息头,如图 5 编码器输出位图格式所示。由此可见Xvid编码器将24位RGB格式仍然压缩成24位RGB格式。

2.4 判断压缩支持

在进行图像压缩之前需要判断是否支持该压缩方式。ICCompressQuery宏用来判断选定的编码器是否支持输入格式或者是否能够将输入格式压缩成输出格式,如果支持则返回ICERR_OK。使用时直接将设置好的压缩器句柄、输入位图格式、输出位图格式当作实参传递给ICCompressQuery宏即可。

这里定义了FrameStart函数来完成帧序列压缩的资源分配,为使用帧图像压缩函数做准备。它有两个参数:一个为编码器的压缩参数,另一个为输入数据的位图格式。初始化成功返回TRUE。具体形式如下所示:

BOOL ICSeqCompressFrameStart(

PCOMPVARS pc, //压缩参数

LPBITMAPINFO lpbiIn //输入位图格式 );

2.5 图像压缩与存储

这里定义了ICCompress函数来完成单帧图像的压缩,并定义了一系列辅助函数来完成资源分配、资源释放和压缩后数据的存储地址返回。每压缩完一帧数据,要先设置流的格式信息,然后就可以将压缩后的视频数据写入AVI数据流。压缩后的AVI文件通过普通的视频播放器解压播放,显示画面如图 6(b)所示,与干端显控软件实时显示的压缩前的声呐图像基本一致,如图 6(a)所示,人眼几乎看不出差别,压缩率达到10倍以上。由此可见,MPEG-4编码标准图像压缩质量高,同时压缩率也高。

3 声呐图像压缩效果评价

3.1 压缩率

设计了两种方法比较不同图像数据的压缩率,一种将标准正弦信号直接作为声呐接收的回波信号,进行信号处理以及波束形成后,干端实时接收显示的图像作为压缩源,另一种将真实水域中声呐接收到的回波信号,进行信号处理以及波束形成后,干端实时接收显示的图像作为压缩源。为了提高结果的可信度,在不同水域情况下压缩比较,得到的声呐图像的压缩率如表 2 所示。

从表中可以看出,图像数据帧与帧之间、像素点与像素点之间冗余度越大,图像的可压缩程度越大,压缩率越高。总体来说,本文设计的成像声纳视频压缩存储方法的标准压缩率达到10倍以上,满足系统的存储需求。

3.2 压缩质量

目前视频图像压缩质量的检测方法一般采用峰值信噪比(PSNR)作为图像质量客观评价的指标。图像质量评价标准是针对单帧图像而言的,因此可以将视频图像分解为多个静止图像,通过计算单帧图像的峰值信噪比来得到视频图像的峰值信噪比。给定一幅大小为M×N的数字化图像

Matlab中根据公式(1)和(2)计算单帧图像的峰值信噪比,得到结果PSNR=37.1646 。通常情况下,PSNR值高于28,则待测图像和参考图像差异不明显,当高于35时,则人眼很难看出两幅图像的差异。由此可见,本文设计的成像声纳视频压缩存储方法在保证一定的压缩比例的同时,得到的图像压缩质量较高,可以基本无失真重现测试场景,以保证后期对数据的复查和分析。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3359

    浏览量

    131470
  • 分辨率
    +关注

    关注

    2

    文章

    989

    浏览量

    41555
  • 存储系统
    +关注

    关注

    2

    文章

    381

    浏览量

    40702
收藏 人收藏

    评论

    相关推荐

    NUC505软件开发包为什么不能下载?

    NUC505 软件开发包不能下载
    发表于 01-17 06:35

    请问哪位大神有code warrior对应的SDK软件开发包

    我使用的DSP是freescale的56F800,我看很多教程里面都提到了嵌入式软件开发包SDK,但是我百度了一下,却没有找到相应的下载链接。请问论坛里有谁是用这款芯片的吗?我才接触freescale的芯片,现在学得一头雾水的,能帮忙指导一下吗?万分感谢。
    发表于 02-23 19:21

    STM32F0x_F100xx_F103xx_F2xx_F30x_F4xx PMSM 单电机_双电机 FOC 软件开发包 V3.4

    STM32F0x_F100xx_F103xx_F2xx_F30x_F4xx PMSM 单电机_双电机 FOC 软件开发包 V3.4
    发表于 08-12 14:27

    如何去实现一种声呐图像压缩存储

    如何去实现一种声呐图像压缩存储声呐图像
    发表于 06-01 07:03

    Qualcomm发布骁龙虚拟现实软件开发包

    2016年3月14日,旧金山 — Qualcomm Incorporated(NASDAQ: QCOM)今日宣布,其子公司Qualcomm Technologies, Inc.发布全新虚拟现实(VR)软件开发包(SDK)。下一代移动虚拟现实应用十分复杂,具有极端的功耗约束和极具挑战的性能要求。
    发表于 03-16 09:47 568次阅读

    高速图像存储系统中SDRAM控制器的实现

    高速图像存储系统中SDRAM控制器的实现
    发表于 08-29 15:02 10次下载

    基于FPGA的多通道图像采集存储系统设计

    基于FPGA的多通道图像采集存储系统设计
    发表于 08-30 15:10 11次下载

    基于闪存的图像存储系统设计

    基于闪存的图像存储系统设计,又需要的下来看看
    发表于 09-22 14:08 13次下载

    CC1310如何选择合适的软件开发包和协议栈

    CC1310软件速成之二 CC1310软件开发包和协议栈
    的头像 发表于 04-23 06:23 4120次阅读
    CC1310如何选择合适的<b class='flag-5'>软件开发包</b>和协议栈

    ESP8266 RTOS SDK软件开发包API参考资料免费下载

    本文档的主要内容详细介绍的是ESP8266 RTOS SDK软件开发包API参考资料免费下载。
    发表于 03-19 08:00 21次下载
    ESP8266 RTOS SDK<b class='flag-5'>软件开发包</b>API参考资料免费下载

    新能源汽车电驱系统MCU软件开发工具包-DriveSoft

    to Production ). 电机控制D2P 一体化解决方案的核心是基于模型的电机算法控制技术- MMC ( Model-based Motor Control )。 MMC产品主要由电机控制器硬件及软件开发包
    发表于 05-02 11:52 1790次阅读

    如何使用FPGA实现多通道图像采集存储系统的设计

    针对图像信号的基本特征设计了对于四路间歇性数据并行存储方案,整个图像采集存储系统分为控制模块和存储
    发表于 01-29 15:27 6次下载
    如何使用FPGA<b class='flag-5'>实现</b>多通道<b class='flag-5'>图像</b>采集<b class='flag-5'>存储系统</b>的设计

    如何使用闪存实现图像存储系统的设计

    针对硬盘存储图像速度慢、可靠性差的弊端,分析了以Flash作为存储介质的可行性,提出了一种基于闪存Flash的存储系统设计方案。利用并行与流
    发表于 03-23 15:44 10次下载
    如何使用闪存<b class='flag-5'>实现</b><b class='flag-5'>图像</b><b class='flag-5'>存储系统</b>的设计

    软件开发的流程和方法有哪些?

    软件开发是根据客户要求构建出软件系统或者系统中的软件部分,一般是通过程序设计语言实现的,比如C/
    的头像 发表于 12-27 10:56 1097次阅读
    <b class='flag-5'>软件开发</b>的流程和方法有哪些?

    嘉楠科技开源K230软硬件开发包 轻松实现从底层硬件到应用软件开发

    日前,嘉楠科技宣布开源最新一代K230芯片软硬件开发包软件开发包不仅涵盖K230开源代码、软件API库、使用说明文档、相关调试及下载工具,还提供多个SDK用例和AI Demo示例,帮助开发
    的头像 发表于 07-07 18:36 673次阅读
    嘉楠科技开源K230软硬件<b class='flag-5'>开发包</b> 轻松<b class='flag-5'>实现</b>从底层硬件到应用<b class='flag-5'>软件开发</b>