基于VFW的成像声纳视频压缩存储设计
2.3 压缩后位图格式的设置
本文引用地址:https://www.eepw.com.cn/article/267428.htm在压缩前位图格式和编码器的压缩参数都已知的情况下,可使用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倍以上,满足系统的存储需求。
c++相关文章:c++教程
评论