声呐图文件格式说明及实现转换bmp的方式

一. 概述
Sdf文件包括两部分:文件头header和文件数据data,其中此版本定义Towfish Type为5000,Header version为4,pageVersion value为5001
二. 详细文件格式定义
1. Header
typedef struct
{
    //U32 VerifyCode;    //每个page开头的校验码,值为FFFF FFFF H
    U32 numberBytes; 教师教育研究50572  //该所包含的字节数(不包括八个F校验码)
    U32 pageVersion;  英菲尼迪万人盛典5001  //所用的版本号
    //U32 configuration;
    U32 pingNumber;  12126  //在整个航行中页的序号
    U32 numSamples;     2276    //每个通道的数据个数
    //U32 beamsToDisplay;  //未用8byte
    //U32 errorFlags;
   
    U32 range;    75  //扫描宽度
    U32 speedFish;  165 //拖鱼速度
    //U32 speedSound;              /////////////////////////
    //U32 resMode;                //
    //U32 txWaveform;                //
    //U32 respDiv;                //
    //U32 respFreq;                //未使用为32byte
    //U32 manualSpeedSwitch;      //
    //U32 despeckleSwitch;        //
    //U32 speedFilterSwitch;      ///////////////////////////
    U32 year; 2009
    U32 month; 2
    U32 day; 24
    U32 hour; 1
    U32 minute; 27
    U32 second; 48
    U32 hSecond; 93          //单位为0.01s
    //U32 fixTimeHour;    //未使用为12byte
    //U32 fixTimeMinute;
    //float fixTimeSecond;
    float heading; 66.7  //航向
    //float pitch;    //未使用为4byte
    float roll;  -0.1    //横滚 roll from compass
    float depth;  0.612  //深度
    float altitude;  8.0072  //高度
    float temperature; 0//温度
    float speed;  1.65246  //速度
    //float shipHeading;         
    //float magneticVariation;  //地磁变化 
    double shipLat;  0.540461        //船维度
    double shipLon;  1.95593        //船经度 
    double fishLat;  0        //声纳维度 
    double fishLon;    0      //声纳经度
  /* Added at version 3 */
原教旨主义
    //U32 tvgPage;            //未用信息
    U32 headerSize;  512        //文件头包含字节数
    //U32 fixTimeYear;              ////未用信息328byte
    //U32 fixTimeMonth
    //U32 fixTimeDay;             
    // float auxPitch;             
    //float auxRoll;               
    //float auxDepth;             
    //float auxAlt;               
    // float cableOut;                 
    //float fseconds;             
    //U32 altimeter;               
    //U32 sampleFreq;             
    //U32 depressorType;           
    //U32 cableType;               
    // F32 shieveXoff;             
    //F32 shieveYoff;             
    //F32 shieveZoff;              中国地下音乐
    //F32 GPSheight;                   
    //U32 rawDataConfig;         
    /* Added at version 4*/
    //U32 header3ExtensionSize;
    //U32 sbpTxWaveform; 
    //U32 sbpPreAmpGain;
    //U32 sbpDataRaw;
    //U32 sbpNumSamples;   
    //U32 sbpSampleFreq;   
    //U32 sbpTxWaveformVersion; 
    //float wingAngle;
    //U32  emergencySwitchState; 
    //U32 laybackMethod; 
    //double laybackFishLat; 
    //double laybackFishLon; 
    //float fishHeadingOffset;
    //float pressureSensorOffset;
//U32 reserved3[48];
}SYS5000HEADER ;
其中typedef unsigned long U32;
typedef unsigned short U16;
2. Data Format
数据段的完整定义可以参考SDF Data Page Definitions Specification  中的定义,本文是从实现有用数据的读取介绍的,只做出如下定义
2011山西中考英语U16 *chan1Data;
    U16 *chan2Data;
    U16 *chan3Data;
    U16 *chan4Data;
    U16 *chan5Data;
    U16 *chan6Data;
    U16 *chan7Data;
    U16 *chan8Data;
    U16 *chan9Data;
U16 *chan10Data;
文献中定义如下
unsigned short chan1Data[];
  unsigned short chan2Data[];
  unsigned short chan3Data[];
  unsigned short chan4Data[];
  unsigned short chan5Data[];
  unsigned short chan6Data[];
  unsigned short chan7Data[];
  unsigned short chan8Data[];
  unsigned short chan9Data[];
unsigned short chan10Data[];
…. ….
每一通道数据定义为前2byte为该通道数据的个数,紧接着的为数据,其中每2byte代表一个数据
三. 转换Bmp图片实现
1.基本思路
从sdf文件中读取数据填充到bmp文件中,即可实现图片转换
2.详细说明
(1)利用检验码信息来确定每个page的开始位置,即用fopen打开sdf文件后,每次用fread读取4byte判断其值是否为ffff ffffh,若是则到一个page的开头,文件指针指向当前page,否则继续读取
(2)到每个page开头后,按照文件头的定义,用fread读取每个参量的值,未用部分读取相应的byte,使文件指针向文件尾移动
(3)读取完每个page的文件头之后,再来读取每个通道的数据,总共有10通道
   
1.通道数据填充到bmp的排列方式如下表:
chan1Data[n-1]…chan1Data[0]
chan6Data[0]…chan6Data[n-1]
chan2Data[n-1]…chan2Data[0]
chan7Data[0]…chan7Data[n-1]
chan3Data[n-1]…chan3Data[0]
chan8Data[0]…chan8Data[n-1]
声呐
chan4Data[n-1]…chan4Data[0]
chan9Data[0]…chan9Data[n-1]
chan5Data[n-1]…chan5Data[0]
chan10Data[0]…chan10Data[n-1]
2.page重叠部分的处理:
每个天线的间距为0.2m,重叠部分处理要利用的数据有当前page的速度speed1,时间t1和上一个page的速度speed2,时间t2,则重叠的行数为
            N=5-{(t1-t2)*(speed1+speed2)/2}/0.2
将当前的page中重叠部分与上一个page重叠部分取平均值作为新的数据填充到bmp数据中(取sdf数据低8位作为bmp的数据)

本文发布于:2024-09-21 04:19:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/687577.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   文件   读取   部分   定义   重叠
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议