Paper -- 洪水深度估计 -- 利用图像处理和深度神经网络绘制街道照片中的洪水深度图

基本信息
论文题目:Flood depth mapping in street photos with image processing and deep neural networks
中文题目: 利用图像处理和深度神经网络绘制街道照片中的洪水深度图
作者及单位:
· Bahareh Alizadeh Kharazi,美国得克萨斯州立大学景观建筑与城市规划系
· Amir H. Behzadan,美国得克萨斯州立大学建筑科学系
投稿和接受时间:
· 投稿时间:2020年11月4日
· 修改时间:2021年3月10日
· 接受时间:2021年3月16日
期刊: 《Computers, Environment and Urban Systems》中国科学院SCI分区 1区
摘要
- 本文研究了在城市地区使用传统方法如遥感和数字高程模型(DEMs)进行
洪水深度估计时常出现的大误差问题 - 提出了一种利用 深度神经网络检测被淹没的停车标志 的新方法; 此外,还结合了 Canny边缘检测 和 概率Hough变换 计算杆长并 估计洪水深度
- 研究使用了一个名为 BluPix 2020.1 的数据集,该数据集包含
美国和加拿大10个FEMA地区的网页挖掘照片
背景
- 了解 洪水深度 对于 应对洪水后的响应和恢复操作 的成功至关重要
- 常用的 洪水估计方法 (水深传感器等) 具有较大局限性
方法
- 首先使用修改后的Mask R-CNN 检测街景照片中的停车标志
- 再应用 Canny边缘检测和概率Hough变换 来确定停车标志杆的可见长度
- 通过 洪水前和洪水后的图像对中标志杆的长度差异, 估算洪水深度
- 由于一些图像中标志牌不是正对着的, 使用 倾斜校正方法 校正了的结果所得到的误差更低
大致方法

(a) 图像: 显示了一个洪水情况下的停车标志
(b) 图像: 展示了同一停车标志在没有洪水情况下的正常状态
洪水深度估计:通过比较洪水情况下和无洪水情况下停车标志的可见高度差异,可以计算洪水深度。在这种情况下,通过测量 p 和 p’ 的差值可以估算 d w d_w dw,即洪水深度
- s 和 s’:这两个标记代表停车标志在图像中的总高度。在洪水情况下为 s,无洪水情况下为 s’。
- p 和 p’:这两个标记表示停车标志杆的可见长度。在洪水情况下的可见长度为 p,无洪水情况下的可见长度为 p’。
- d w d_w dw:洪水深度, 即洪水情况下水面到停车标志底部的距离
- 前提: 现实中标志牌的尺寸是类似国标这种,
尺寸是固定已知的 - 利用停车标志八边形的
已知物理高度,计算图像中的每像素实际长度比例 r r r 和 r ′ r' r′ 估算水深
d w = r ′ ⋅ p ′ − r ⋅ p d_w = r' \cdot p' - r \cdot p dw=r′⋅p′−r⋅p
- 前提: 现实中标志牌的尺寸是类似国标这种,
基于Faster R-CNN框架的停车标志牌检测

该图描述了从输入RGB图像 到 输出目标检测框 的完整流程
- 这一过程利用了卷积神经网络(CNN)技术,来实现图像中的对象识别和定位
输入:输入是一个标准的RGB图像,图中展示了一个被洪水淹没的停车标志
CNN:首先,图像通过卷积神经网络(CNN)进行特征提取
RoI Align:利用区域感兴趣对齐(RoI Align)技术从CNN特征图中精确抽取候选区域的特征
卷积层(Conv):接着,这些特征被送入更深的卷积层进行进一步的分析
分类(分类)和边界框回归(定位):在特征经过处理后,用于两个主要任务:一是识别图像中的对象类别(即停车标志),二是确定对象的具体位置(类别框)。
FCN:全卷积网络(FCN)用于从卷积特征图中生成像素级的预测,用于精细化目标检测
输出:最终输出是标记了目标检测边界框的图像,如图中黄色框所示,准确标出了停车标志的详细位置
Canny边缘检测过程

输入图像:最左侧显示的是原始RGB图像,即洪水情况下的停车标志。
灰度图像:原始图像被转换成灰度图像,减少处理数据量同时保留必要信息
高斯模糊:使用高斯核对灰度图像进行模糊处理,以消除图像噪声并平滑图像
边缘检测:
– Sobel算子:利用Sobel算子计算图像的梯度强度和方向,这是检测图像边缘的关键步骤
– 梯度和方向:𝐺 和 𝜃 分别代表每个像素的梯度强度和梯度方向
非最大抑制:这一步骤旨在仅保留梯度最大的边缘,去除非边缘区域的所有梯度响应
滞后阈值:通过设置两个阈值——低阈值和高阈值,进一步细化和确认真实的边缘。
最终生成的边缘图: 显示了图像中检测到的所有边缘,这些边缘以亮线的形式表示,主要集中在停车标志及其杆上
确定洪水中停车标志及其支杆的精确位置

使用图像处理技术确定洪水中停车标志及其支杆的精确位置
检测到的停车标志:第一个图显示了在洪水背景中的停车标志被自动检测并用绿色边框标出。
边界框:第二个图展示了放大的停车标志,绿色框清晰地标示了停车标志的边界。
边界框坐标:第三个图展示了边界框的具体坐标,这些坐标定义了框的四个角:
– ( x 1 , y 1 ) (x_1, y_1) (x1,y1):边界框左上角的坐标
– ( x 2 , y 2 ) (x_2, y_2) (x2,y2):边界框右上角的坐标
– ( x 3 , y 3 ) (x_3, y_3) (x3,y3):边界框左下角的坐标
– ( x 4 , y 4 ) (x_4, y_4) (x4,y4):边界框右下角的坐标
确定停车标志杆的位置

图中的标志:停车标志被框定,用于分析其几何参数。
S o c t S_{oct} Soct: 标志顶部的宽度
h h h: 从标志底部到所需检测点的高度
2 w 2w 2w: 用红线标记的宽度,表示检测区域的宽度
( x c o o , y c o o ) (x_{coo}, y_{coo}) (xcoo,ycoo): 表示检测区域顶部中心的坐标
( x y m a x , y m a x ) (x_{y_{max}}, y_{max}) (xymax,ymax): 表示检测区域底部中心的坐标
从图像中估算停车标志杆的长度

左图:显示了洪水情况下的停车标志,红色线表示杆的候选线
中图:强调了停车标志杆的估算位置,使用黄色和蓝色标记以示区分。
右图:展示了用于计算杆长的坐标系统,以及如何从这些坐标得出杆的实际长度 p = y m a x − y c o o p=y_{max}-y_{coo} p=ymax−ycoo
通过模板匹配方法估计停车标志的倾斜角度以校正标志牌

输入图像:为洪水中的停车标志图像,标志牌可能存在旋转和倾斜
模板八边形的旋转:模板八边形被依次绕 x , y , z x,y,z x,y,z 三轴旋转,分别生成一系列可能的姿态(如图中展示的不同倾斜角度模板)
匹配重叠:将调整大小后的模板八边形与输入图像重叠,并计算重叠区域的相似度(Overlap)
最大重叠模板:找到重叠区域最大的模板视为最佳匹配,确定停车标志的倾斜角度。
输出:根据对应的俯仰、偏航、滚转角度( P i t c h = − 12 ° , Y a w = − 30 ° , R o l l = 0 ° ) Pitch = -12°,Yaw = -30°,Roll = 0°) Pitch=−12°,Yaw=−30°,Roll=0°) 校正图像
效果

左侧案例 (a):包括洪水前和洪水后两张配对照片。标注了杆的总长度(洪水前)和露出部分的长度(洪水后)
显示了根据这些数据计算出的洪水深度 和 误差, Δ 表示估算误差,单位为英寸
右侧案例 (b):同上
相关文章:
Paper -- 洪水深度估计 -- 利用图像处理和深度神经网络绘制街道照片中的洪水深度图
基本信息 论文题目:Flood depth mapping in street photos with image processing and deep neural networks 中文题目: 利用图像处理和深度神经网络绘制街道照片中的洪水深度图 作者及单位: Bahareh Alizadeh Kharazi,美国得克萨斯州立大…...
学习C#中的BackgroundWorker 组件
1. BackgroundWorker 组件概述 许多经常执行的操作可能需要很长的执行时间。 例如: 图像下载 Web 服务调用 文件下载和上载(包括点对点应用程序) 复杂的本地计算 数据库事务 本地磁盘访问(相对于内存访问来说其速度很慢&…...
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
大家好,欢迎来到程序视点!我是小二哥! 前言 在VUE项目开发中,一些数据常常被多个组件频繁使用,为了管理和维护这些数据,就出现了状态管理模式。 今天小二哥要给大家推荐的不是VueX,而是称为新…...
PCB 间接雷击模拟
雷击是一种危险的静电放电事件,其中两个带电区域会瞬间释放高达 1 千兆焦耳的能量。雷击就像一个短暂而巨大的电流脉冲,会对建筑物和电子设备造成严重损坏。雷击可分为直接和间接两类,其中间接影响是由于感应能量耦合到靠近雷击位置的物体。间…...
JAVA泛型和顺序表ArrayList
目录 泛型 泛型的定义: 泛型的实例化: 泛型的使用: 顺序表ArrayList 顺序表ArrayList的两种实例化方法: ArrayList常用的方法: 1. add 方法 2. size ( ) 方法 3. get 方法 4. set 方法 5. 顺序表的三种遍历元素的方法…...
Qt桌面应用开发 第六天(鼠标事件 定时器事件 定时器类 事件分发器 事件过滤器)
目录 1.1鼠标进入和离开enterEvent\leaveEvent 1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent 1.3定时器事件timerEvent 1.4定时器类QTimer 1.5事件分发器event 1.6事件过滤器eventFilter 1.1鼠标进入和离开enterEvent\leaveEvent 事件&#x…...
Javascript高级—深入JS模板字符串的高级用法
深入JS模板字符串的高级用法:解锁动态内容生成的无限可能 在JavaScript编程中,模板字符串(Template Literals)自ES6(ECMAScript 2015)引入以来,就以其简洁、直观的特性迅速成为开发者们生成动态…...
14. 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--章节总结
本章重点介绍了如何在一个简单的系统中实现基本的权限管理功能。通过构建一个简单的权限控制模型,章节阐述了如何为用户分配权限,并在应用程序中进行访问控制。 一、关键要点: 1. 用户管理(登录/注册/Token) 本章节聚…...
vulhub之fastjson
fastjson 1.2.24 反序列化 RCE 漏洞(CVE-2017-18349) 漏洞简介 什么是json json全称是JavaScript object notation。即JavaScript对象标记法,使用键值对进行信息的存储。举个简单的例子如下: {"name":"BossFrank", "age":23, "isDevel…...
2024年亚太地区数学建模大赛D题-探索量子加速人工智能的前沿领域
量子计算在解决复杂问题和处理大规模数据集方面具有巨大的潜力,远远超过了经典计算机的能力。当与人工智能(AI)集成时,量子计算可以带来革命性的突破。它的并行处理能力能够在更短的时间内解决更复杂的问题,这对优化和…...
卷积神经网络各层介绍
目录 1 卷积层 2 BN层 3 激活层 3.1 ReLU(Rectified Linear Unit) 3.2 sigmoid 3.3 tanh(双曲正切) 3.4 Softmax 4 池化层 5 全连接层 6 模型例子 1 卷积层 卷积是使用一个卷积核(滤波器)对矩阵进…...
Python应用指南:高德拥堵延时指数
随着城市化进程的加快,交通拥堵问题日益严重,成为影响城市居民生活质量的重要因素之一。为了科学评估和管理交通拥堵,各种交通拥堵指数应运而生。其中,高德地图提供的“拥堵延时指数”因其数据丰富、实时性强和应用广泛而备受关注…...
ISO 21434标准:汽车网络安全管理的利与弊
ISO 21434标准在提升汽车网络安全性方面起到了重要作用,但任何标准都不是完美无缺的,ISO 21434标准也存在一些不足之处。以下是对其不足之处的分析: 一、标准的灵活性与适应性 缺乏具体技术细节:ISO 21434标准更多地提供了网络安…...
无插件H5播放器EasyPlayer.js视频流媒体播放器如何开启electron硬解码Hevc(H265)
在数字化时代,流媒体播放器技术正经历着前所未有的变革。随着人工智能、大数据、云计算等技术的融合,流媒体播放器的核心技术不断演进,为用户提供了更加丰富和个性化的观看体验。 EasyPlayer.js H5播放器,是一款能够同时支持HTTP、…...
excel版数独游戏(已完成)
前段时间一个朋友帮那小孩解数独游戏,让我帮解,我看他用电子表格做,只能显示,不能显示重复,也没有协助解题功能,于是我说帮你做个电子表格版的“解题助手”吧,不能直接解题,但该有的…...
接口上传视频和oss直传视频到阿里云组件
接口视频上传 <template><div class"component-upload-video"><el-uploadclass"avatar-uploader":action"uploadImgUrl":on-progress"uploadVideoProcess":on-success"handleUploadSuccess":limit"lim…...
Arcgis 地图制作
地图如下,不同历史时期:...
【每日一题1121】python校招笔试题、面试题
1、Python字符串不是通过NUL或者’\0’来结束的 C语言中字符串使用’\0’作为结束符,以防止越界。但是在python中,字符串值只包含所定义的东西。 2、执行以下程序,输出结果为() class Base(object):count 0def __in…...
Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现
Spring Boot Vue 基于 RSA 的用户身份认证加密机制实现 什么是RSA?安全需求介绍前后端交互流程前端使用 RSA 加密密码安装 jsencrypt库实现敏感信息加密 服务器端生成RSA的公私钥文件Windows环境 生成rsa的公私钥文件Linux环境 生成rsa的公私钥文件 后端代码实现返…...
Docker搭建有UI的私有镜像仓库
Docker搭建有UI的私有镜像仓库 一、使用这个docker-compose.yml文件: version: 3services:registry-ui:image: joxit/docker-registry-ui:2.5.7-debianrestart: alwaysports:- 81:80environment:- SINGLE_REGISTRYtrue- REGISTRY_TITLEAtt Docker Registry UI- DE…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
