本文主要参考文献如下

[1]王杰英. 侧扫声呐图像的三维重构[D].浙江大学,2018.

\qquad这里先向学长表示感谢!

本文主要讲述了侧扫声呐原始图像需要进行的一些信号处理与图像处理步骤(增益补偿与斜距校正,其他处理步骤会在接下来的章节进行介绍)

\qquad有关侧扫声呐三维重构的全流程可以参考以下文章,它以南海沉船为例,详细地阐述了侧扫声呐SFS三维重构的全过程

[1]刘小菊,施祺,杨红强,周胜男.基于侧扫声呐影像的南海珊瑚礁沉船及周边地形重建[J].热带地理,2020,40(02):278-288.DOI:10.13284/j.cnki.rddl.003221.

\qquad本文是在已经解析出XTF文件的基础之上进行的图像处理,关于XTF文件的解析可以参考文章

https://blog.csdn.net/SuperiorEE/article/details/123012392


一  原理回顾

\qquad首先我们来回顾一下侧扫声呐(SSS)成像原理,由此引出我们的问题:为什么要对侧扫声图进行图像处理?
\qquad侧扫声呐是通过向一个扇区发射声波并在遇到障碍物时发生反射的原理来识别地形。这其实就是一个简单的测距原理。侧扫声呐的接收器根据声波传回的早晚和强度,依次在侧扫声图上留下痕迹,如下图顶部。反射愈早的声波越先被接收到,因此会在靠左(但不是最左的位置),相应地,反射发生愈晚的声波就会在声图右侧留下痕迹。痕迹的强度(即明暗)与声音的回波强度有关,回波强度越强,声图该点就越亮。

\qquad简单介绍之后我们就发现存在着这么几个问题:1.为什么声图的最左侧会一片漆黑(如下图所示)?

\qquad 事实上,我们把这部分区域叫做水柱区。因为侧扫声图上横向表示了声波返回时间的长短,几乎没有声波能在极短的时间内回来(除了微弱的水体反射),因此左侧接近一篇漆黑。而左侧漆黑与右侧有一个交界线,我们称之为海底线,海底线就是最早被接收器接收的强回波,应该是距离侧扫声呐最近的地方——垂直向下的海底(这里假设侧扫角可以覆盖到垂直方向),因此这条线就称为海底线。根据海底线我们就可以算出侧扫声呐距离海底的高度H(声波返回时间*声速),其实这也可以直接在xtf文件中解析出来(一般是联测的单波束声呐测算出来的),相关解析也见本人文章

https://blog.csdn.net/SuperiorEE/article/details/123012392


二 增益补偿

\qquad我们知道,声波在水中会产生较为明显的水体吸收,这种吸收显然和距离有关。声波传输得距离越长,损失的能量就越大。我们通过对声图的分析,明显可以看到声图左侧(平距靠近声呐侧)偏亮,而右侧偏暗。因此为了消除这样的干扰,我们需要进行增益补偿。
\qquad这里采用的是滑窗灰度增益补偿方法。主要内容可以见王杰英论文,核心公式如下,重叠的滑窗按照距离进行加权

\qquad得到结果如下,增益补偿曲线和补偿之后的图片


三  斜距校正

\qquad 除此之外,我们发现,侧扫声图上从左到右是按照声波返回时间长短来计算的,因此侧扫声图横向的指标实际上是和斜距成正比的。这里斜距就定义为从侧扫声呐头到地形某处的直线距离(一般忽略微观地形起伏)。因此我们就会发现,要使横向反映的是横距而非斜距,就要进行斜距校正。一般来说,可以使用以下公式实现X=L2−H2X=\sqrt{L^2-H^2}X=L2−H2​
\qquad其中,L就是斜距,H是侧扫声呐到海底的高度,其获取方法见本章前文。

\qquad我们发现斜距校正后还存在着一些问题,因为像素是离散的整数点,我们如果对其进行根号运算,由于非线性的关系,初步斜距校正后就会出现缝隙。根据王杰英的方法,我们对其进行3*3像素矩阵中周围8个点的均值作为中心黑点的亮度值,对其进行插值,可以得到以下结果。

\qquad得到这样的结果已经可以初步满足我们的处理要求了,可以直接放入我们选择的SFS模型中取,进行高度反演了。


四 核心代码

%功能描述:通过滑窗平均的方法对图像进行均值明度统一,从而抵消水体吸收的干扰。
%输入:E0,XTF原始归一化强度方阵
%输出:滑窗行向量(代表着E0在横坐标上的增益)
%使用示例:
% A=Amplify_get1(E);
% A2=repmat(A,range,1);
% E=E.*A2;
%公式推导:浙江大学王杰英论文
%验证时间:2022年4月2日15:44:56
function Amplify_C=Amplify_get1(E0) %E0 is selected aera with smooth surfacen=3;%滑窗数,不要修改[length,width]=size(E0);%要求E0宽度是4倍数像素window_length=fix(width./(n-1));seperate_length=fix(window_length./2);Amplify_C=0.*ones(1,width);%初始化threshold=0.05; %明度低于此不计入M_acc=[0 0 0 0];M_dark=[0 0 0 0];point_num_origin=window_length*length;%每块窗口点的个数for k=1:4acc_count=0;dark_count=0;%黑色点计数%求M1,M2,M3和Mfor i=(k-1)*seperate_length+1:k*seperate_lengthfor j=1:lengthif(E0(j,i)>threshold)acc_count=acc_count+E0(j,i);else dark_count=dark_count+1;endendendM_acc(k)=acc_count;M_dark(k)=dark_count;endpoint_num_perwindow=[point_num_origin-M_dark(1)-M_dark(2) ...point_num_origin-M_dark(2)-M_dark(3) ...point_num_origin-M_dark(3)-M_dark(4)];%每个窗口可用点的个数acc_count_perwindow=[M_acc(1)+M_acc(2) M_acc(2)+M_acc(3) M_acc(3)+M_acc(4)];M_ave=acc_count_perwindow./point_num_perwindow;M_total=sum(acc_count_perwindow)/sum(point_num_perwindow);%整图求和得到C,公式见论文for i=1:width%求和if(i<=1*seperate_length)Amplify_C(i)=M_total./M_ave(1);elseif(i<=2*seperate_length)Amplify_C(i)=(M_total./M_ave(2))*(i/seperate_length-1)+...(2-i/seperate_length)*(M_total./M_ave(1));elseif(i<=3*seperate_length)Amplify_C(i)=(M_total./M_ave(3))*(i/seperate_length-2)+...(3-i/seperate_length)*(M_total./M_ave(2));elseAmplify_C(i)=M_total./M_ave(3);endend
end
%功能描述:对图像进行斜距校正和插值
%输入:E1,增益补偿后的E,和H,海底线对象的像素数目,也即像素高度
%输出:斜距校正后的E
%使用示例:见test_slant
% H=277-5;防止溢出,需要减去5
% E_slant_correct=Slant_correct(E,H);
% figure('name','斜距校正的图像');
% imshow(E_slant_correct);
%公式推导:浙江大学王杰英论文
%验证时间:2022年4月3日15:36:09
function E_slant_correct=Slant_correct(E1,H)%E1是增益补偿之后的矩阵,H单位是像素,是海底线对应的像素高度[length,width]=size(E1);lst=H:width;%初始化for i=H:widthlst(i-H+1)=sqrt(i.^2-H.^2)+1;enddisp(lst);[p_,lst_len]=size(lst);E2_width=fix(lst(lst_len));E2=0.*ones(length,E2_width);for i=1:lengthfor j=1: lst_lenE2(i,fix(lst(j)))=E1(i,j-1+H);endendfigure('name','初步补偿图像')imshow(E2);%缝隙消除[E2_length,E2_width]=size(E2);for i=2:E2_length-1for j=2:E2_width-1if(E2(i,j)==0)acc=0;count=0;if(E2(i-1,j-1)~=0)acc=acc+E2(i-1,j-1);count=count+1;endif(E2(i-1,j)~=0)acc=acc+E2(i-1,j);count=count+1;endif(E2(i-1,j+1)~=0)acc=acc+E2(i-1,j+1);count=count+1;endif(E2(i,j-1)~=0)acc=acc+E2(i,j-1);count=count+1;endif(E2(i+1,j+1)~=0)acc=acc+E2(i+1,j+1);count=count+1;endif(E2(i,j+1)~=0)acc=acc+E2(i,j+1);count=count+1;endif(E2(i+1,j-1)~=0)acc=acc+E2(i+1,j-1);count=count+1;endif(E2(i+1,j)~=0)acc=acc+E2(i+1,j);count=count+1;end%临近点计算%赋值if(count~=0)E2(i,j)=acc/count;endendendendE_slant_correct=E2;%%figure('name','斜距校正的图像');imshow(E_slant_correct);
end

【基于侧扫声呐和SFS方法的地形三维重构】(一)增益补偿和斜距校正相关推荐

  1. 【基于侧扫声呐和SFS方法的地形三维重构】(二)侧扫声呐SFS数学模型建立

    本文主要参考文献如下 [1] 赵建虎,尚晓东,张红梅. 侧扫声呐图像反演海底地形的一种线性算法[J]. 哈尔滨工业大学学报,2017,49(5):80-86. DOI:10.11918/j.issn. ...

  2. 包裹点云位姿估计_基于点云位姿平均的非合作目标三维重构

    基于点云位姿平均的非合作目标三维重构 李宜鹏 ; 解永春 [期刊名称] <空间控制技术与应用> [年 ( 卷 ), 期] 2020(046)001 [摘要] 针对在轨非合作目标 , 提出一 ...

  3. stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程

    本发明属于数字信号处理技术领域,特别涉及一种运动目标雷达三维成像方方法,可 用于对运动目标识别时,雷达ISAR对其三维成像. 背景技术: 逆合成孔径雷达ISAR是一种全天候.全天时的远程探测手段,具有 ...

  4. 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  5. 有源淹没分析arcgis_基于ArcGIS的洪水淹没分析与三维模拟

    基于 ArcGIS 的洪水淹没分析与三维模拟 孙 君 , 奚赛英 , 尤 迪 , 郑付涛 [摘 要] 摘 要 : 洪水淹没范围的确定是洪灾损失评估和防洪决策的核心环节 . 基 于 TIN 数据 , 运 ...

  6. 基于Android的红外测温设计,基于Android的红外三维重构移动APP设计与实现

    摘要: 物体的冷热程度主要依据温度来衡量,在科学进步的过程中也研制出很多测量物体温度的设备,非制冷型红外热成像仪就是应用最为广泛的一种.非制冷型红外热像仪是一种快速测量,非接触式的测温方法,而且成本非 ...

  7. 极线几何关系、极点、极线,三维重构,k-d树的特征匹配方法

    1. 试画图说明极线几何关系,并指出极点.极线所在,解释极线约束. 基线:左右像机光心连线: 极平面:空间点,两像机光心决定的平面: 极点:基线与两摄像机图像平面的交点: 极线:极平面与图像平面交线 ...

  8. 电镜三维重构中多构象的辨别方法

    多构象问题是冷冻电镜三维重构的难题之一.同种颗粒可能会有多种不同的形态,有些形态甚至是连续变化的,因此利用中央截面定理从多种构象混合的二维单颗粒中重构多种构象是很困难的. 想要区分不同构象,最简单的思 ...

  9. 【APF三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab人工势场算法无人机三维 ...

最新文章

  1. python与excel互通_【好消息】Python和Excel终于可以互通了!!
  2. 容量是GPT-2的1.7倍!谷歌打造神经对话模型Meena
  3. 写一个函数days,实现计算本年第几天
  4. 按覆盖地理范围的不同计算机网络可分为,按网络覆盖的地理范围进行分类,计算机网络可以分为:...
  5. Android清除缓存功能来实现
  6. 解惑解释性语言与编译性语言
  7. Hbuilder----安装less插件(详细)
  8. AOP(基于注解对AspectJ操作)
  9. php软件开发--mysql数据库进阶
  10. Spring-core-AnnotationMetadata接口
  11. OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu
  12. 度分秒换算题及答案C语言,度分秒的换算题(度分秒计算100题及答案)
  13. 【项目源码】个人博客源码推荐
  14. 【Android 常见控件使用】TextView(文本框)
  15. python一维数组定义,python如何定义数组
  16. 基于SSM+Vue+OSS的“依伴汉服”商城设计与开发(含源码+论文+ppt+数据库)
  17. 怎樣制作线段动画_线条动画 怎么制作随意运动的线条动画?线条动态视频如何制作?线条动画制作教程...
  18. 走进CIM,开启智慧城市的全生命周期管理
  19. 如果你在用vivo手机拍照的话,这个功能要打开,不然白浪费了这么好的手机
  20. 售前工程师的成长---一个老员工的经验之谈(二)(转载)

热门文章

  1. css实现文字超出不换行,超出部分显示省略号
  2. 如何设计单点登录代理SSOP?
  3. 各行业的联络中心解决方案
  4. 西北工业大学计算机考研真题百度云,2021西北工业大学各专业课考研历年真题资料汇总...
  5. Volley 图片加载相关源码解析
  6. OSPF协议的基础配置和应用
  7. Linux花式关机玩法
  8. Beaglebone Black LED驱动
  9. python:Fastapi - 请求表单与文件
  10. PHP面试大全 基础篇100道问题