基于改进Criminisi算法的自动驾驶仿真道路场景图像修复
moboyou 2025-05-22 12:21 23 浏览
利用真实图像生成虚拟驾驶场景视图时,首先要从图像中移除车辆、行人等前景目标,以便获得不包含移动目标的背景图像。针对原始Criminisi算法存在的图像破损区域在修复后会出现模糊效应、边界不够平滑的弊端, 提出了一种在处理掩膜图像环节使用开运算,并优化原始优先权函数的改进算法。运用MATLAB仿真平台进行实验分析,结果表明改进后算法修复时间平均缩短了16.5 s,峰值信噪比平均高出原算法1.65 dB。该算法还原了图像中更多的道路信息,弥补了Criminisi算法的不足。
1
引言
在自动驾驶领域,基于场景的仿真测试在算法研发、系统测试和安全验证等环节中必不可少。道路场景是自动驾驶仿真系统中驾驶场景的核心要素,传统的道路场景使用游戏引擎或计算机图形学模型来创建,不仅成本高、耗时多,而且所得场景图像缺乏真实世界图像的丰富性和真实性,不能满足自动驾驶测试的需要。数据驱动自动驾驶仿真道路场 景以移除了行人、车辆等前景目标的真实图像为基础,通过图像修复复原完整的背景图像,创建类似真实世界的模拟场景,可避免传统方法的不足,成为道路场景构建技术的发展方向。
目前,图像复原修复技术主要分为两种,分别是基于结构的修复和基于纹理的修复。基于结构的修复方法是由BERTALMIO等人提出的,利用图像分解模型将图像分解为 结构部分和纹理部分,先用偏微分方程(Partial Differenitial Equation, PDE)方法修复结构部分,再用纹理合成技术对纹理部分进行填充。基于此方法的还有CHAN等人提出的整体 变分(TV)模型和曲率扩散(CDD)模型。基于纹理的修复技术是以图像块为单位,用已知的图像信息合成图像缺损部分的信息,进而达到修复的目的,
它与第一种方法最明显的区别在于它修复大面积缺损的图像时效果更好。这类方法的代表是CRIMINISI等人在2004 年提出的新的修复算法。该算法首次引入了优先权的概念,利用数据项与置信项的乘积来决定处理的先后次序,而后利用最佳匹配搜索来填补空白区域,考虑了目标对象的结构与纹理。应用于自动驾驶仿真的背景图像通常需要移除行人、车辆等大面积复杂图像区域, 使用基于结构的算法修复时模糊效应严重,而使用Criminisi 算法修复相较前者效果有所改观,但图像缺损部分的边界修复后不够平滑。
本文根据自动驾驶仿真系统道路场景构建需要,提出一种改进的Criminisi算法移除并修复真实背景图像中的行人、车辆等目标,取得了较好的效果,为自动驾驶仿真中的静态场景构建提供了良好的基础。
2
Criminisi算法
2.1 Criminisi算法原理
其主要思想分为三步:在图像的已知区域中计算最大优先级目标快;在样本块中搜寻与待修复区域具有最佳匹配度的匹配块;将匹配块的信息复制到待修复区域中。
2.1.1 计算最大优先级目标块
若图像中含有具有较强的边缘性特征且已知信息的部分, 则这些部分(样本块)会被优先修复。p 点的优先权定义为:
如上所述,C(p) 能够使含有较多已知信息的目标块得到优先的修复,而 D(p) 能够使含有较多结构信息的目标块优先被修复。C(p) 和 D(p) 两项的结合,才能使图像的纹理与结构修复达到平衡,取得理想的效果。
2.1.2 搜寻最佳匹配样本块
由第一步计算出了具有最大优先权的目标块,接下来搜索与此目标块最佳的匹配块。匹配块与目标块之间的匹配准则是匹配块中的纹理信息要尽量与目标块中的纹理信息相一致,匹配公式如下(例如图1中为最佳匹配块):
2.1.3 复制信息和更新置信项
重复上述修复步骤,直至将所有待修复区域修复完。修复流程如图2所示。
2.2 算法存在的问题
在修复大区域破损图像时,Criminisi算法应用广泛。但CHENG等人指出,随着填充迭代过程的进行,置信值C(p)会迅速下降到零,这就使得计算出的优先值并不可靠,从而影响了修复顺序,进而影响最终修复的效果。此外,在修复图像时,Criminisi算法需要对图像中的待处理部分进行掩膜操作,可是人为创建的掩膜图像边界不够平滑,目标物间粘连严重,导致待修复区域边缘在修复后会出现模糊效应。数据驱动自动驾驶仿真道路场景以真实图像为基础,边界的模糊会使得仿真系统采集的道路场景数据不够真实,进而影响系统对真实道路的自动化还原。
3
改进的Criminisi算法
3.1 开运算处理
针对前述Criminisi算法的不足,在处理掩膜图像环节使用开运算,对Criminisi算法进行改进,提高待修复区域边界的清晰性和边界像素点优先权计算的精度。在数学形态学中,开运算被定义为先腐蚀后膨胀。
(1)腐蚀
(2)膨胀
开运算是先腐蚀再膨胀的运算,其算法仿真如图3所示,其中图3(a)是原始掩膜图像,图3(b)是开运算处理后得到的效果图。
经过对比可以看出,零碎的小白点物体被消除了,较大物体的边界变得平滑,同时物体面积没有明显改变。在原Criminisi算法处理掩膜图像的基础上加入开运算,能去除小 颗粒噪声以及断开目标物之间粘连,使得待修复的空白部分在修复后边缘平滑,模糊效应减轻。
3.2 优先权函数的改进
由公式(2)可知,当C(p)为0时,即使数据项D(p)的值很高,优先权P(p)的值也必然等于零,从而该目标块得不到优先修复。针对这一问题,对优先权P(p)的计算公式提出如下修改:
式中,α和β都为常数。由式(8)可以看出,即使置信项为0,只要数据项足够大,优先值的计算结果依然会比较高,那么目标区域就能被优先修复,这在一定程度上改善了原算法修复顺序混乱的问题。
本实验在AMD(R) Ryzen7-5800H CPU @2.30 GHz、16.0 GB内存,安装64 位Windows 10设备的笔记本电脑环境下实现,使用的算法平台为MATLAB 2017b。本次算法所使用的图像为实拍的真实世界道路图像。实验内容为运用改进的Criminisi算法来修复图像,与原算法修复的图像进行对比,并运用峰值信噪比(PSNR)体现出改进前后的修复效果差别。以下为两组移除图像中行人、车辆目标的修复效果对比图,如图4和图5所示。
由图4对比来看,掩膜图像经过开运算的处理,去噪效果明显且边缘更加平滑。此图片运用原Criminisi算法修复效果已经很好,与改进后的算法修复效果对比来看差别并不明显,引入PSNR来评价,如表1所示。
由表1评价结果来看,改进后的算法修复图片失真更小,效果更好,并且由于修复顺序混乱问题的改进,图像修复的时间减少了,提高了修复效率。
从图5车辆区域的填充不难看出,Criminisi算法在修复位于图像边缘的大尺度缺损的图像时,并不能轻易寻找到最佳匹配样本块,修复难度大,效果并不理想。原算法在修复车辆部分的缺损时,运用树木、路面及斑马线的颜色进行填充,有明显的修复痕迹,模糊效应严重,树和斑马线甚至出现了重影。在运用改进的算法修复原图片时,修复效果有明显改善,斑马线重影消失了,树木部分虽然仍然存在模糊效应,但比改进前的效果已有大幅提升。同样引入PSNR进行评价,如表2所示。
这组实验的修复效果差别明显,由表2客观评价结果可得出结论,改进后算法修复的图片失真更小,修复速度更快,使得道路图像更加真实,还原了更多的道路信息。仿真系统用它作为背景参考图像将更有利于实现对真实道路的自动化还原。
5
结论
仿真系统是自动驾驶技术开发和验证的基础,本文以真实图像为基础,研究移除前景目标后的背景图像修复方法,为仿真系统提供背景参考图像。Criminisi算法因其在修复大尺度破损图像时的优越性而适用于仿真系统的静态场景构建。本文针对它现存的缺陷进行改进,提出在处理掩膜图像的环节使用开运算,优化了待修复区域被人为扩大及边缘粗糙的问题;然后通过对优先权函数P(p)的修改,改善了修复顺序错乱的问题。实验证明,改进的算法不仅修复效率有所提高,同时去噪效果明显且使得破损区域的边界在修复后更加平滑,这将有利于仿真系统从图像中提取更为真实的道路场景信息。
相关推荐
- Node.js 获取文件信息及路径(node.js怎么获取当前文件路径)
-
获取文件信息每个文件都有一组细节,我们可以使用Node.js进行检查。特别是使用fs模块提供的stat()方法。constfs=require('fs');fs.stat(...
- 深入剖析JavaScript中深浅拷贝(js实现深浅拷贝)
-
大家好,我是Echa。最近有一位00后的小妹妹粉丝私信小编说自己很喜欢编程,目前在某公司实习前端开发工作,说到现在为止还没有搞懂JavaScript中深拷贝和浅拷贝这个问题,同时也在网上看了很多关于深...
- 为什么高手写 JS 总是又快又好?这10个技巧你要知道
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!JavaScript是前端开发的重要语言...
- IT技术栈:Javascript神器,URL.createObjectURL()
-
URL.createObjectURL()是JavaScript中的一个方法,用于创建一个特殊的URL,该URL可以用于将不支持直接加载的数据(如二进制数据或Blob对象)嵌入到we...
- 如何在 Linux 中创建和管理组?(linux如何建立组)
-
在Linux中,组是用户账户的集合,用于统一管理权限。每个用户至少属于一个主组(PrimaryGroup),还可以加入多个附加组(SupplementaryGroup)。组的权限设置决定了用户对文...
- 付费文库内容无法复制,不用任何工具,学会这4种方法轻松复制
-
关注职场办公,分享实用干货,洞察科技资讯,这里是「职场科技范」。我们在搜索资料的时候,看到非常有用的文库,但往往都是付费的,只能看不能复制。今天就来教大家,学会下面这4种方法,轻松复制文库内容。一、内...
- node.js v24.0.0 正式发布!10大重磅更新助力开发者,性能大幅提升
-
近日,Node.js官方团队正式发布了Node.jsv24.0.0版本,这是一个具有里程碑意义的重大更新。作为"Current"版本,它将在未来六个月内引领Node.js...
- 我理解的网站产品经理之四:网站产品前端姿势
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。2016年了,嗨,大家新年好。作为一个网页的产品经理,网页的前端知识可谓是不能不知,本文主讲网站产品的前端姿势。通常,...
- 五一我要看七天小说!免费开源的轻量化书库talebook搭建流程。
-
这次来分享一个简单阅读项目:TaleBook,项目曾用名calibre-webserver。TaleBook是一个基于Calibre的简单的个人图书管理系统,支持在线阅读。不过鉴于各种规章制度,仅...
- “5 分钟 CMake 使用指南,解决我的 C++ 打包问题!”
-
在软件开发的世界里,构建系统扮演着至关重要的角色,它不仅决定了项目的构建效率,还直接影响到团队协作的流畅度。对于许多C++开发者而言,CMake因其强大的功能和广泛的兼容性成为了构建自动化流程的...
- 大佬级鬼才终于把JavaScript整理成了修仙小说,让学习变简单
-
这是一本讲解JavaScript编程语言的技术书籍,只不过,本书采用了一种全新的写作手法。如果你厌倦了厚厚的、如同字典般的编程书籍,不妨尝试一下新的口味,话不多说,直接上干货!目录截图:内容展示:以上...
- JavaScript基础知识点总结(javascript基础入门教程)
-
//逗比小憨憨/*第一章*HTML引用js方法:*1,外部引用:HTML外部引用js:<scriptsrc="js/day1.js"></script>*2,...
- 在Node.js中处理Zip文件(node运行js文件)
-
作者:疯狂的技术宅转发链接:https://mp.weixin.qq.com/s/edJd9-t1AyTGRcha_1k6RA前言Zip文件是常用的压缩文件格式。在本文中,我将演示如何用adm-...
- Python 标准库中鲜为人知的宝藏 | Node.js 22.8.0 发布
-
Python标准库中鲜为人知的宝藏Python标准库功能强大,但有些模块却鲜为人知。本文将介绍一些有趣且实用的模块,助你提升代码效率和功能。数据结构:超越列表和字典除了常用的列表和字典,coll...
- 小程序,wxml页面里如何写JS代码?WXS如何模块化?
-
这篇接着上篇小程序,跳转页面的两种方式及其页面传参数继续讲,小程序wxml页面里如何写JS代码?wxs如何模块化?第一个问题:wxml页面要想类似HTML页面中写js代码,必须在页面中使用wxs标...
- 一周热门
- 最近发表
-
- Node.js 获取文件信息及路径(node.js怎么获取当前文件路径)
- 深入剖析JavaScript中深浅拷贝(js实现深浅拷贝)
- 为什么高手写 JS 总是又快又好?这10个技巧你要知道
- IT技术栈:Javascript神器,URL.createObjectURL()
- 如何在 Linux 中创建和管理组?(linux如何建立组)
- 付费文库内容无法复制,不用任何工具,学会这4种方法轻松复制
- node.js v24.0.0 正式发布!10大重磅更新助力开发者,性能大幅提升
- 我理解的网站产品经理之四:网站产品前端姿势
- 五一我要看七天小说!免费开源的轻量化书库talebook搭建流程。
- “5 分钟 CMake 使用指南,解决我的 C++ 打包问题!”
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)
- php小说爬取源码 (23)
- github好玩的php项目 (18)
- 云电脑app源码 (22)
- js创建txt文件 (18)