一种基于SoPC的SAR图像水域检测实现方法转让专利

申请号 : CN201510423012.X

文献号 : CN105069780B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谢宜壮李炳沂刘艳刘小宁龙腾

申请人 : 北京理工大学

摘要 :

本发明提供一种基于SoPC的SAR图像水域检测实现方法,该方法步骤如下:步骤一、原始数据接收与缓存:将原始SAR灰度图像数据抽取后,通过FMC接插件传输给基于FPGA的逻辑处理部分乒乓RAM缓存;数据经过RAM缓存后,传输给基于双核ARM的软件处理部分中DDR3中;步骤二、均值滤波:利用双核ARM分别对DDR3中存储图像数据的上、下部分进行均值滤波处理;均值滤波采用并行处理流程;步骤三、双核ARM实现粗目标提取;步骤四、双核ARM实现虚景剔除:步骤五、双核ARM实现标记目标区域的边缘。本发明采用软硬件协同处理的方式,充分发挥硬件层在基础逻辑,软件层在复杂算法处理上的优势。

权利要求 :

1.一种基于SoPC的SAR图像水域检测实现方法,其特征在于,步骤如下:步骤一、原始数据接收与缓存:

将原始SAR灰度图像数据抽取后,通过FMC接插件传输给基于FPGA的逻辑处理部分乒乓RAM缓存;数据经过RAM缓存后,传输给基于双核ARM的软件处理部分中DDR3中;

步骤二、均值滤波:

利用双核ARM分别对DDR3中存储图像数据的上、下部分进行均值滤波处理;均值滤波采用并行处理流程;

步骤三、双核ARM实现粗目标提取:

用双核ARM中的ARM0实现基于Sobel梯度算子的粗目标的提取和用双核ARM中ARM1实现基于对比度拉伸变换的粗目标的提取,两者并行执行,再将结果合并即为粗目标感兴趣区域(RIO);

步骤四、双核ARM实现虚警剔除:

用ARM0对上、下部分粗目标感兴趣区域进行第一次均值计算和用ARM1对上、下部分粗目标感兴趣区域进行大面积虚警剔除;用ARM0计算第一次均值计算得到上、下两部分均值的平均值a,用ARM1计算虚警剔除后上、下两部分灰度图像均值的平均值b;

对大面积虚警剔除后的图像进行膨胀、腐蚀操作;通过对非零竖线条统计标记连通域;

利用大面积虚警剔除前后的均值a和b对连通域标记后的图像进行剩余虚警剔除;

步骤五、双核ARM实现标记目标区域的边缘:

双核RAM分别对上下部分图像进行第一次膨胀操作和腐蚀操作,然后对腐蚀后的结果进行第二次膨胀操作,将第二次膨胀操作后的结果减去膨胀操作前的值,得到最终水域边缘检测结果。

2.根据权利要求1所述基于SoPC的SAR图像水域检测实现方法,其特征在于,步骤二至步骤五为采用标志位变化来控制整个处理流程。

3.根据权利要求1所述基于SoPC的SAR图像水域检测实现方法,其特征在于,步骤一中抽取的比例为8:1。

4.根据权利要求1所述基于SoPC的SAR图像水域检测实现方法,其特征在于,步骤二中的均值滤波的模板大小为3×3。

5.根据权利要求1所述基于SoPC的SAR图像水域检测实现方法,其特征在于,步骤四中膨胀操作所采用的膨胀滑动块的边长为7。

6.根据权利要求1所述基于SoPC的SAR图像水域检测实现方法,其特征在于,步骤五中第一次膨胀所采用的滑块大小为11×11,所述第二次膨胀所采用的滑块大小为5×5。

说明书 :

一种基于SoPC的SAR图像水域检测实现方法

技术领域

[0001] 本发明属于雷达实时成像处理技术领域,具体涉及一种基于SoPC的SAR图像水域检测实现方法。

背景技术

[0002] 合成孔径雷达(SAR)是成像雷达的一种,具有全天候、全天时、远距离、高分辨率成像等优点,被广泛应用于军事侦察、环境监视等重要领域。随着SAR遥感技术的发展,其在洪水监测方面的优势逐渐凸显出来。由于水灾期间往往阴雨连绵,常规的光学、红外遥感方法已经无法观测,但是SAR作为一种主动微波遥感手段,可以弥补现有光学手段不足,特别是微波能穿透水雾、云雾,可以通过SAR图像算法的设计可以有效提取水域范围。
[0003] 在实时图像处理中,使用Sobel算子对图像进行边缘检测是常用的算法之一,优于要达到实时处理,因此对处理速度要求很高,现阶段纯软件的方法很难达到要求。兰州理工大学电气工程与信息工程学院发表的基于FPGA的Sobel算子图像边缘检测算法(仪表技术与传感器2013.No.1)中提到了在FPGA上实现算法。然而FPGA开发周期较长,且算法映射到硬件难度较大。SoPC系统具有小型化、灵活性、低功耗、开发周期短的优势。设计时基于FPGA的硬件部分完成基本逻辑电路设计,基于ARM或其它中央处理器的软件部分完成数据的存储和处理这种软硬件协同的方式,使得基于SoPC的水域检测系统具备可裁剪、可扩充、可配置、可升级的特点。

发明内容

[0004] 本发明为了实现星载SAR高分辨图像实时水域检测,提出了一种基于SoPC的SAR图像水域检测实现方法,该方法能够在FPGA+双核ARM上实现SAR图像水域检测,具有很好实时性和稳定性。
[0005] 实现本发明的技术方案如下:
[0006] 一种基于SoPC的SAR图像水域检测实现方法,该方法步骤如下:
[0007] 步骤一、原始数据接收与缓存:
[0008] 将原始SAR灰度图像数据抽取后,通过FMC接插件(FMC LVDS)传输给基于FPGA的逻辑处理部分乒乓RAM缓存;数据经过RAM缓存后,传输给基于双核ARM的软件处理部分中DDR3中;
[0009] 步骤二、均值滤波:
[0010] 利用双核ARM分别对DDR3中存储图像数据的上、下部分进行均值滤波处理;均值滤波采用并行处理流程;
[0011] 步骤三、双核ARM实现粗目标提取:
[0012] 用双核ARM中的ARM0实现基于Sobel梯度算子的粗目标的提取和用双核ARM中ARM1实现基于对比度拉伸变换的粗目标的提取,两者并行执行,再将结果合并即为粗目标感兴趣区域(RIO);
[0013] 步骤四、双核ARM实现虚景剔除:
[0014] 用ARM0对上、下部分粗目标感兴趣区域进行第一次均值计算和用ARM1对上、下部分粗目标感兴趣区域进行大面积虚警剔除;用ARM0计算第一次均值计算得到上、下两部分均值的平均值a,用ARM1计算虚警剔除后上、下两部分灰度图像均值的平均值b;
[0015] 对大面积虚警剔除后的图像进行膨胀、腐蚀操作;通过对非零竖线条统计标记连通域;利用大面积虚警剔除前后的均值a和b对连通域标记后的图像进行剩余虚警剔除;
[0016] 步骤五、双核ARM实现标记目标区域的边缘:
[0017] 双核RAM分别对上下部分图像进行第一次膨胀操作和腐蚀操作,然后对腐蚀后的结果进行第二次膨胀操作,将第二次膨胀操作后的结果减去膨胀操作前的值,得到最终水域边缘检测结果;通过串口输出目标边缘区域坐标,完成整个流程。
[0018] 进一步地,本发明步骤二至步骤五为采用标志位变化来控制整个处理流程。
[0019] 进一步地,本发明步骤一中抽取的比例为8:1。
[0020] 进一步地,本发明步骤二中的均值滤波的模板大小为3×3。
[0021] 进一步地,本发明步骤四中膨胀操作的所采用的膨胀滑动块的边长为7。
[0022] 进一步地,本发明步骤五中第一次膨胀所采用的膨胀滑动块的大小为11×11,所述第二次膨胀所采用的膨胀滑动块的大小为5×5。
[0023] 有益效果
[0024] 第一,相较于传统纯硬件或纯软件实现方法,本发明采用软硬件协同处理的方式,充分发挥硬件层在基础逻辑,软件层在复杂算法处理上的优势。
[0025] 第二,本发明采用双核处理器设计,通过合理分配不同处理任务,使得两个ARM并行运算,相较于传统单核处理实现方法实时性有大幅提高。

附图说明

[0026] 图1为整个SoPC水域检测系统架构。
[0027] 图2为双核实现粗目标区域提取的流程图。
[0028] 图3为双核ARM实现虚警剔除流程图。
[0029] 图4为双核ARM实现原图边缘检测标记流程图。

具体实施方式

[0030] 下面结合附图对本发明方法的实施方式做详细说明。
[0031] 本发明一种基于SoPC的SAR图像水域检测实现方法,其具体实施过程如下:
[0032] 步骤一、原始数据接收与缓存:将原始SAR灰度图像数据抽取后,通过FMC接插件传输给基于FPGA的逻辑处理部分乒乓RAM缓存;数据经过RAM缓存后,传输给基于双核ARM的软件处理部分中DDR3中。
[0033] 如图1所示,该步骤实施过程如下:
[0034] 101,原始数据为采用Chirp Scailing(CS)算法进行SAR成像处理后的8bit灰度图像数据。为保证实时性,数据源需要对图像进8:1抽样操作,然后通过FMC接插件后将数据传输给基于FPGA的逻辑部分(PL)乒乓RAM缓存。数据源连续发送数据,当一幅图像数据发送完毕后,停止发送数据。
[0035] 102,每当乒乓RAM其中之一存满,即通过DMA通道将数据搬移至软件部分(PS)的DDR3中。将图像分为上下两个部分,对应DDR3不同地址,双核ARM分别处理各部分的数据。当整幅图像数据都转移至DDR3后,完成原始数据接收与缓存步骤。
[0036] 103,双核ARM操作需要频繁的从DDR3中读写数据,因此需要同时存在多个数据缓存地址空间。针对ARM0后续处理任务,划分DDR3地址空间数组名为:Orgimg1、g_AveOrg、L1、SobelM;针对ARM1后续处理任务,划分DDR3地址空间数组名为:Orgimg1_1、Orgimg1_2、g_AveOrg_1、L1_1、L1_2、SobleM_1。为了最大限度利用DDR3存储能力,各个地址空间在不同步骤间复用。
[0037] 步骤二、均值滤波:利用双核ARM分别对DDR3中存储图像数据的上、下部分进行均值滤波处理;均值滤波采用并行处理流程。
[0038] 201,均值滤波使用的是3×3的模板,故从DDR3读取数据进行处理时,存储于Orgimg1_1中的下半部分图像需要与存储于Orgimg1中的上半部分图像重叠一行,即下半部分图像的第一行数据是上半部分图像的最后一行数据。
[0039] 202,ARM0首先设置标志位COMM_VAL为1,然后ARM0对上半部分图像执行均值滤波操作,结果存至g_AveOrg;同时ARM1对下半部分图像执行均值滤波操作,结果存至g_AveOrg_1。当ARM1对下半部分图像处理完毕后,将标志信号清0。ARM0对上半部分图像处理完毕后,查询标志信号的值,如果标志信号的值为1,则处于等待状态;如果为0,则均值滤波处理结束,ARM0继续下面的操作。
[0040] 203,均值滤波结束后,为方便下一步的双核处理,将存储于g_AveOrg和g_AveOrg_1中的均值滤波后的结果分别复制到L1、L1_1地址空间。
[0041] 步骤三、双核ARM实现粗目标的提取:对粗目标的提取包括基于Sobel梯度算子的粗目标的提取和基于对比度拉伸变换的粗目标的提取。由于用这两种方法处理数据期间没有数据之间的交互,故可用ARM0实现基于Sobel梯度算子的粗目标的提取和用ARM1实现基于对比度拉伸变换的粗目标的提取,两者并行执行,再将结果合并即为粗目标候选区。
[0042] 如图2所示,该步骤实施过程如下:
[0043] 301,首先ARM0设置标志信号COMM_VAL的值为1,从DDR3g_AveOrg空间中读取上半部分图像的均值结果,进行基于Sobel梯度算子的粗目标的提取操作,结果存放回Orgimg1。同时ARM1对从DDR3g_AveOrg空间中读取均值结果进行基于对比度拉伸变换的粗目标提取操作,结果存放至L1中。当ARM1完成基于对比度拉伸变换的粗目标的提取之后,将标志信号清0;当ARM0完成基于Sobel梯度算子的粗目标的提取之后,检查标志信号的值,如果标志信号的值为1,则处于等待状态;如果为0,继续下面步骤。
[0044] 302,按照301步骤,对下半部分图像进行粗目标提取,结果分别存至Orgimg1_2与L1_1。
[0045] 303,ARM0设置标志信号COMM_VAL的值为1,ARM0对Orgimg1和L1中存储的上半部分图像处理的结果进行合并,获得结果(RIO)分别在Orgimg1与L1中备份。同理,ARM1对Orgimg1_2与L1_1中存储的下半部分图像处理的结果进行合并,获得结果(RIO)分别在Orgimg1_2与L1_1进行备份。ARM1操作结束后,ARM1操作完成后,将标志信号置0,当ARM0完成合并操作之后,检查标志信号的值,如果为1,则处于等待状态,如果为0,则继续执行下面的操作。
[0046] 步骤四、双核ARM实现虚景剔除:用ARM0对上、下部分粗目标感兴趣区域进行第一次均值计算和用ARM1对上、下部分粗目标感兴趣区域进行大面积虚警剔除;用ARM0计算第一次均值计算得到上、下两部分均值的平均值a,用ARM1计算虚警剔除后上、下两部分灰度图像均值的平均值b;对大面积虚警剔除后的图像进行膨胀、腐蚀操作;通过对非零竖线条统计标记连通域;利用大面积虚警剔除前后的均值a和b对连通域标记后的图像进行剩余虚警剔除;
[0047] 如图3所示,该步骤实施过程如下:
[0048] 401,ARM0设置标志信号COMM_VAL的值为1,ARM0从Orgimg1中提取上半部RIO,计算均值;ARM1从L1取出上半部RIO,进行大面积虚警剔除。ARM1操作结束后,ARM1将标志信号置0,当ARM0完成计算后,检查标志信号的值,如果为1,则处于等待状态,如果为0,则继续执行下面的操作。
[0049] 依照此方法,对下半部分RIO进行处理。上、下部分大面积虚警剔除后得到的灰度图像分别存至DDR3的Orgimg1与Orgimg1_2中。
[0050] 402,ARM0设置标志信号COMM_VAL的值为1,ARM0计算步骤401得到的上下部分两个均值的均值,作为大面积剔除前的灰度图像均值a,存至寄存器;ARM1提取Orgimg1和Orgimg1_2中存储的结果计算大面积剔除后上、下半部分对应的灰度图像均值。计算两个均值的平均值,即为对提取的ROI大面积剔除后对应灰度图像的均值b,存至寄存器。
[0051] 403,ARM0设置标志信号COMM_VAL的值为1,双核并行执行膨胀、腐蚀操作。选择膨胀滑动块边长为7,ARM0处理Orgimg1中上半部分灰度图像,ARM1处理Orgimg1_2中下半部分灰度图像。ARM1操作完成后,将标志信号置0,当ARM0完成操作之后,检查标志信号的值,如果为1,则处于等待状态,如果为0,则继续执行下面的操作。
[0052] 404,ARM0设置标志信号COMM_VAL的值为1,双核并行执行统计非零竖直线段的条数,对膨胀、腐蚀操作后的灰度图像进行连通域标记。由于此处是统计非零竖直线段的条数,故双核处理时是把图像分为左右两部分。ARM0统计存储于Orgimg1中上半部分图像左半部分非零竖直线段的条数,ARM1统计存储于Orgimg1中右半部分非零竖直线段的条数,再对上半部分灰度图像进行连通域标记。ARM1操作完成后,将标志信号置0,当ARM0完成操作之后,检查标志信号的值,如果为1,则处于等待状态,如果为0,则继续执行下面的操作。
[0053] 405,ARM0利用均值a,b的关系对标记完成后的上半部分图像结果做剩余虚警剔除操作(若a=b,则认为虚警较多,根据先验知识选择大门限进行虚警剔除;若a≠b,则认为虚警较少,选择小门限进行虚警剔除),虚警剔除完成后的图像结果存至L1中。依此类推,ARM1下半部分图像后,结果存至L1_2。
[0054] 步骤五、双核ARM实现标记目标区域的边缘:双核RAM分别对上下部分图像进行第一次膨胀操作和腐蚀操作,然后对腐蚀后的结果进行第二次膨胀操作,将第二次膨胀操作后的结果减去膨胀操作前的值,得到最终水域边缘检测结果;通过串口输出目标边缘区域坐标,完成整个流程。
[0055] 如图4所示,该步骤实施过程如下:
[0056] 501,第一次对L1、L1_2中存储的结果进行11×11膨胀操作。首先ARM0设置标志信号为1,然后ARM0对上半部分图像进行膨胀操作,ARM1对下半部分图像进行膨胀操作。ARM1完成之后,将标志信号清零;ARM0完成之后,检查标志信号,如果为1,则处于等待状态,如果为0,则继续下面的操作。上下部分膨胀后的结果分别存放在SobelM、SobleM_1中。
[0057] 502,第一次对SobelM、SobleM_1中存储的结果进行11×11腐蚀操作。首先ARM0设置标志信号为1,然后ARM0对上半部分图像进行腐蚀操作,ARM1对下半部分图像进行腐蚀操作。上下部分腐蚀后的结果存放在L1、L1_2中。ARM1操作完成后,将标志信号置0,当ARM0完成操作之后,检查标志信号的值,如果为1,则处于等待状态,如果为0,则继续执行下面的操作。
[0058] 503,依照,501步骤,对L1、L1_2存储的数据分别进行第二次5×5膨胀操作。膨胀处理完成后,减去膨胀前的值,即为得到的边缘检测最终结果。ARM0将检测结果合并,通过串口(UART)将边缘区域的坐标输出给上位机,完成全部操作。
[0059] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。