图像修复_criminis算法及改进算法学习小结

news2024/10/7 20:30:56

摘要

对图像修复专题学习情况的一个总结,学习内容包括:
(1)综述文献的阅读及对图像修复的理解。
(2)criminis算法的仿真情况。
(3)criminis算法的改进算法的仿真

一、 前言

1)什么是图像修复

数字图像修复技术是指针对图像中遗失或者损毁的部分,利用未被损坏的图像信息,按照一定的规则填补,使修复后的图像接近或者达到原图的视觉效果。数字图像修复主要是针对原图中损坏的部分,如划痕、污点等,将其从原图中擦除,并对该区域进行修复,使其具有良好的观赏效果。
图像修复和图像恢复一字之差,但本质上区别巨大。、在图像获取时,由于噪声、抖动、对焦等问题导致图像质量下降,针对这些问题,建立退化模型,通过逆退化来改善图像质量。在退化图像中,多少都包含着关于图像真值的信息,在某些条件下,甚至可能完全恢复图像真值。但在图像修复问题中,待修复区域的信息全部丢失,只能根据邻域信息对这部分进行填充,无法获得一个真值。图像修复没有唯一解的存在,解的合理性取决于视觉系统的接受程度。
从数学的角度看,图像修复没有足够的信息保证被恢复的图像是唯一正确的。因此,图像修复技术的本质是对视觉认知过程的学习、理解、再现,对促进机器视觉的发展有着重要的影响。

2)图像修复方法的分类

(1)PDE模型、变分泛函
这两种方法都是通过变分原理相互推出,统称为PDE/变分泛函图像修复方法,也就是基于方程求解的方法。是模拟手工修复破损图像的过程,根据建立的模型将已知信息逐渐地向破损区域内扩散,直至修复完成。该方法主要是用于小区域破损的修复。该方法具有较好的图像平滑能力,可以使断开的图像连接起来,对于图像拐角问题也可以修复,符合人眼连通原则。
(2)基于样本的图像修复方法
根据每次修复匹配合成像素多少,可以分为基于样本点的修复和基于样本块的修复,基于样本块的修复每次合成都可以修复一块区域,因此效率较高。基于样本的图像修复技术关键包括样本块的采样方式,修复顺序,样本块采样范围和最佳匹配块。
(3)基于邻域模板及插值的图像修复方法
该方法主要基于插值公式或套用模板,通过已知的邻域点带入,计算缺损区域点的像素值,包括优先权选取方法和直接插值方法。
(4)基于纹理合成的修复方法
常用纹理合成方法修复纹理图像,基本思想是从已知的图像中选取合适的块采样,合成或者复制到缺损区域里,要同时保证纹理区域的结构相似性和连续性。

二、criminis算法的仿真及分析

在上一阶段的学习中,我已经了解了图像修复的算法过程,并对程序进行了学习,本次学习中,基于前面的了解,我对criminis算法(文献1)进行了独立的仿真,下面是我在仿真过程中遇到的一些问题以及解决的过程,最终得到了正确的仿真结果。

1)criminis算法的仿真

在这里插入图片描述
图1. 原始图像

在这里插入图片描述
图2. 破损图像 左(a),复现修复结果 中 (b) , 原文结果右(c)

得到结果后,发现与原程序得到的结果图2(c)不同。选择其他的破损区域进行修复,仿真结果如下:
在这里插入图片描述
图3. 破损图像 左(a),复现修复结果 中 (b) , 原文结果右(c)

因此,仿真过程中应该是出现了一些错误,通过设置断点进行检查,发现置信度C的值总是为1,图4为其中两次C的取值。可见置信度的计算出现了错误,检查发现,仿真的程序中,对C的初始化定义为:在这里插入图片描述C为logical型,也就是逻辑矩阵,其中不为0的值全部置为1,导致置信度计算错误,优先权错误,所以结果是错误的。将这一句改为 C为double型,即可得到正确的置信度结果,且得到的修复结果与原程序相同。进行其他破损块的实验发现,在一些情况下,修复效果比较差。如下图:
在这里插入图片描述在这里插入图片描述

在仿真进行到最后一步时,遇到了一些问题,就是将待修复块用最佳匹配块代替时,本来的思路是用最佳匹配块整体将待修复块代替,但是思考后发现这种方法会导致待修复块中的已知区域也被更改,引起错误。因此正确的思路如下图:

在这里插入图片描述
程序如下:
ind(Hp(tofill))=ind(Hq(tofill)); %把一个块中全部待修复点的坐标索引用最佳匹配块的坐标索引代替
damageImage(rows,cols) = damageImage(ind(rows,cols)); %用最佳匹配块填补破损的块,将整个9*9 用 坐标索引修改后的这个块代替

三、改进算法的仿真

文献2 提出的改进算法的仿真:

(1)改进优先权
当等照度线方向与单位法向量垂直时,D§=0,此时即使C§较大,生成块包含的信息较多但其优先权为0,不能被及早填补,导致填充顺序错误,导致误差累计。
改进后的算法 : P§=0.4*C§+0.6R§;其中R§=D§+0.1,修复图像的结果如下图:
在这里插入图片描述
在这里插入图片描述
(2)自适应选择样本块模板窗口大小
在纹理丰富区域,如果较大的样本块模板窗口,会使结果产生错误衍生现象,而在平滑区域如果采用比较小的样本块模板窗口,会产生块效应。因此模板窗口应该是变化的。如果只用中心像素点的梯度模值,具有局限性,利用生成块中已知区域的平均梯度模值的变化来决定模板窗口的大小。
在这里插入图片描述
在这里插入图片描述
这是按照取中心像素点的梯度模值得到的运行结果。
在这里插入图片描述
发现中心像素值的大小在大于0.1的区间分布较多,导致修复样本块模板的窗口半径较小,修复次数多,用时长,且效果并不好。
当改为文献[1]中运用生成块中的平均梯度模值时,运行结果如下:
在这里插入图片描述在这里插入图片描述
可以看出,修复结果的PSNR和并没有明显的优化,可能是由于该图像的特殊性导致的。并且由于样本块的半径较小时,填补次数增加,导致用时较长。
(3)自适应选择搜索空间
C§较大时,说明p点周围的已知信息越多,可靠性越高。反之,说明已知信息越少。随着修复的进行,C§在逐渐下降,p点距离最初的破损边界越来远,因此就要在较大的搜索空间内寻找匹配块。
在这里插入图片描述在这里插入图片描述
需要注意的是,此处的R不一定是整数,这就会导致取到的矩形区域坐标不为整数出错误。下图为改进后的效果:

在这里插入图片描述
在这里插入图片描述
可以看出,运用这种方法,由于搜索的区域变小,所用时间大大减少,并且修复结果的PSNR值也大幅增加,随后尝试了令S取其他值,结果与文献中的结果相同,当S=50时,结果是最优的。 与criminis算法比较发现,改进后的算法得到的修复结果的质量(PSNR值)有所提高,而所需的时间大大减少。

参考文献

[1]A. Criminisi, P. Perez, K. Toyama. Object removal by exemplar-based inpainting[C]. In: IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2003, 721-728.
[2]范冠鹏,和红杰,陈帆,翟东海,仁青诺布. 基于局部特性的图像修复算法[J]. 光电子.激光,2012,(12):2410-2417.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【leetcode】138.复制带随机指针的链表

《力扣》138.复制带随机指针的链表 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设…

[羊城杯 2020]a_piece_of_java

首先jd-gui进行反编译 简单查看发现有用的类就两个一个是 MainContrller.class和InfoInvocationHandler.class public class MainController {GetMapping({"/index"})public String index(CookieValue(value "data", required false) String cookieDa…

【C++】类和对象(初阶认识)#上篇#

目录 对面向过程和面向对象的初步认识 类的引入 封装 和 类的访问限定符 所以祖师爷在类中还引入了访问权限 用类定义变量 类的理解和对象的实例化 sizeof 计算类对象的大小 类对象的成员函数在公共代码区 this 指针 对面向过程和面向对象的初步认识 什么,是…

分片集群-搭建

分片集群 高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上。 为了解决这些问题,有两个基本的方法: 垂直扩展和水平扩展。 垂直扩展:增加更多的…

阿里云服务器地域和可用区怎么选择合适?

阿里云服务器地域和可用区怎么选择?地域是指云服务器所在物理数据中心的位置,地域选择就近选择,访客距离地域所在城市越近网络延迟越低,速度就越快;可用区是指同一个地域下,网络和电力相互独立的区域&#…

ROHM常见的电冰箱控制电路图,轻松了解冰箱工作原理

​冰箱是我们日常生活中使用频率非常高的电器,它可以将食物和饮料保存在低温下,以延长它们的保质期。冰箱的工作原理主要基于制冷循环和温度控制。 先看电路图: 1. 单门直冷式电冰箱重锤式控制电路 电路的基本组成:采用重锤式启…

win10安装pytorch全网最好用的教程[2023.5.7更新]

目录 0.关于pytorch a. 什么是 PyTorch ? b. 为何选择 PyTorch ? 1.安装pytorch 1.1确定关联性 1.2下载最新版本的pytorch 1.3.pytorch历史版本下载 1.4 避坑 1.4.1、猜测 1.4.2、验证 1.4.3、解决方案 1.5、检验 0.关于pytorch a. 什么是…

前端学习----webpack入门学习

webpack是前端项目工程化的具体解决方案 主要功能:它提供了友好的前端模块化开发支持,以及 代码压缩(将空格和注释全部消除,变成一行代码)、 处理浏览器端JavaScript的兼容性(只管写高级语法,自动向下兼容。例如ie8不支持let 语法…

【Shell】一天快速入门

1 Shell解析器 Linux提供的shell解析器有6种: /bin/sh /bin/bash /sbin/nologin /bin/csh /bin/dash /bin/tashsh是bash的软连接。 2 Shell脚本 2.1 hello.sh脚本 #!/bin/bash echo hello world!#! 告诉系统这个脚本需要什么解释器来执行; 脚本以#!…

NCNN----Monodepthv2单目深度估计 小米手机部署

题目要求:学习了解单目深度估计模型MonoDepthv2,基于NCNN推理框架部署到小米手机 MonoDepthv2 论文:Digging Into Self-Supervised Monocular Depth Estimation MonoDepthv2 源码:Monodepth2 GitHub 分析: 1&#xff0…

Illustrator如何进行任务自动化之实例演示?

文章目录 0.引言1.动作的录制2.对文件播放动作3.批处理 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,本文对任务自动化进行…

Cadence技巧总结学习(DRC、Annotate)持续更新~

Cadence技巧总结学习持续更新~ 你还可以再哪里看到这篇文章:知乎 1. 画叉 对于芯片上不用的引脚信号画上号,如下: 按大写X就可以了,或是双脚引脚,在跳出的界面中,Is No Connect上✔。 2. 画线快捷键&#…

【关于C++中----智能指针】

文章目录 一、概念引入二、内存泄漏2.1 内存泄漏概念及其危害2.2 内存泄漏分类2.3 避免内存泄漏 三、智能指针的原理3.1 RAII3.2 像指针一样 四、三类智能指针4.1 auto_ptr4.2 unique_ptr4.3 shared_ptr 五、循环引用和weak_ptr 一、概念引入 在我们日常写代码过程中&#xff…

ARM学习(21)STM32 外设Can的认识与驱动编写

笔者来聊聊can的认识以及can接收数据的驱动编写 1、STM32 Can 外设的认识 Can的特性就不多说了,主要来聊聊can的一些标识符以及收发状态。can有一套收发机制,发送和接收都有硬件缓存,叫邮箱,通过下面的图可以看出,下面…

ESP32学习笔记 -- ESP32-S3 使用外部 PSRAM

ESP32-S3是乐鑫科技推出的一款专为物联网而生的SOC芯片,该芯片同时支持WIFI和BLE蓝牙功能,集成了高性能的Xtensa 32位LX7双核处理器,最高主频可达240MHz。 根据乐鑫官方资料介绍,该芯片内置512KB SRAM片上内存,并且具有45个可编程GPIO管脚和丰富的通信接口。为了更好地扩…

Flask框架之路由与蓝图的使用

路由与蓝图 路由路由概述路由的基本使用查看路由信息url_map对象命令行方式 HTTP请求方法 蓝图概述蓝图的基本使用蓝图的拆分指定蓝图的url前缀蓝图构造URL蓝图静态文件蓝图模板目录 路由 路由概述 在Flask中,路由用于将HTTP请求与特定的Python函数相匹配。通过定义…

K8s-Pod概念、创建及常用命令

文章目录 一、Pod概念1、Pod是什么?2、Pod网络共享实现方式3、Pod存储共享方式4、创建Pod整体流程 二、使用YAML文件定义Pod资源1、Pod资源清单YAML文件书写技巧1. YAML语法格式:2. 配置Linux tab缩进两个空格3. 使用kubectl explain帮助命令 2、创建Pod…

章节2:01-Java序列化和反序列化

章节2:01-Java序列化和反序列化 01-Java序列化和反序列化 基础环境 JDK解压版:包含Java运行时环境 IDEA:开发工具 Maven:jar包依赖管理 Tomcat:HTTP服务器 Burp Suite:发送HTTP请求 Kali&#xff1…

ANSYS APDL谐响应分析——悬臂梁的频响函数计算以及幅值、角度(相位)、分贝计算

问题描述 研究一根悬臂梁,材质为钢材。长度 L 2 L2 L2 米;截面为矩形,矩形的长度为 H 5 c m H 5cm H5cm,宽度为 B 2 c m B 2cm B2cm 。 建模思路: 先建立节点,然后用节点生成单元。使用n命令&…

book-riscv-rev1.pdf 翻译(自用,更新完成)第一章 操作系统接口

Job of operating system: 操作系统使得多个程序分享一台计算机,提供一系列仅靠硬件无法支持的服务。 管理与抽象低级别硬件(如:文件处理程序不需要关注使用哪种硬盘)使得多个程序分享硬件(programs that can run at…