图像修补

目标
  本节我们将要学习:
  • 使用修补技术去除老照片中小的噪音和划痕
  • 使用 OpenCV 中与修补技术相关的函数

基础
  在我们每个人的家中可能都会几张退化的老照片,有时候上面不小心在上面弄上了点污渍或者是画了几笔。你有没有想过要修复这些照片呢?我们可以使用笔刷工具轻易在上面涂抹两下,但这没用,你只是用白色笔画取代了黑色笔画。此时我们就要求助于图像修补技术了。这种技术的基本想法很简单:使用坏点周围的像素取代坏点,这样它看起来和周围像素就比较像了。如下图所示
  
  为了实现这个目的,科学家们已经提出了好几种算法,OpenCV 提供了其中的两种。这两种算法都可以通过使用函数 cv2.inpaint() 来实施。
  第一个算法是根据 Alexandru_Telea 在 2004 发表的文章实现的。它是基于快速行进算法的。以图像中一个要修补的区域为例。算法从这个区域的边界开始向区域内部慢慢前进,首先填充区域边界像素。它要选取待修补像素周围的一个小的邻域,使用这个邻域内的归一化加权和更新待修复的像素值。权重的选择是非常重要的。对于靠近带修复点的像素点,靠近正常边界像素点和在轮廓上的像素点给予更高的权重。当一个像素被修复之后,使用快速行进算法(FMM)移动到下一个最近的像素。FMM 保证了靠近已知(没有退化的)像素点的坏点先被修复,这与手工启发式操作比较类似。可以通过设置标签参在这里插入图片描述数为 cv2.INPAINT_TELEA 来使用此算法。
  第二个算法是根据 Bertalmio,Marcelo,Andrea_L.Bertozzi, 和 Guillermo_Sapiro在 2001 年发表的文章实现的。这个算法是基于流体动力学并使用了偏微分方程。基本原理是启发式的。它首先沿着正常区域的边界向退化区域的前进(因为边界是连续的,所以退化区域非边界与正常区域的边界应该也是连续的)。它通过匹配待修复区域中的梯度向量来延伸等光强线(isophotes,由灰度值相等的点练成的线)。为了实现这个目的,作者是用来流体动力学中的一些方法。完成这一步之后,通过填充颜色来使这个区域内的灰度值变化最小。可以通过设置标签参数为cv2.INPAINT_NS 来使用此算法。
  
代码
  我们要创建一个与输入图像大小相等的掩模图像,将待修复区域的像素设置为 255(其他地方为 0)。所有的操作都很简单。我要修复的图像中有几个黑色笔画。我是使用画笔工具添加的。

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 30 09:25:35 2014
@author: duan
"""
import numpy as np
import cv2
img = cv2.imread('messi_2.jpg')
mask = cv2.imread('mask2.png',0)
dst = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下。第一幅图是退化的输入图像,第二幅是掩模图像。第三幅是使用第一个算法的结果,最后一副是使用第二个算法的结果。
 

使用修补技术去除老照片中小的噪音和划痕相关推荐

  1. 学习使用非局部平均值去噪算法去除图像中的噪音-图像去噪

    图像去噪 目标 • 学习使用非局部平均值去噪算法去除图像中的噪音 • 学习函数 cv2.fastNlMeansDenoising(),cv2.fastNlMeansDenoisingColored() ...

  2. On the Effectiveness of Visible Watermarks 利用AI技术去除图像水印

    我的个人微信公众号: Microstrong 微信公众号ID: MicrostrongAI 微信公众号介绍: Microstrong(小强)同学主要研究机器学习.深度学习.计算机视觉.智能对话系统相关 ...

  3. 骨传导技术:帮你摆脱噪音的困扰

    用耳朵听,这是个人的常识.通常情况下,声波通过空气传导传入内耳,然后由内耳的内.外淋巴液产生振动,螺旋器完成感音过程,随后听神经产生神经冲动,呈递给听觉中枢,大脑皮层综合分析后,最终"听到& ...

  4. 02)java web项目 使用spi技术 去除web.xml

    上一篇提到原理是使用了java的SPI技术 java web项目是在容器运行,如tomcat,weblogic等 了解Tomcat的SPI机制 Tomcat容器在启动时会扫描项目中META-INF/s ...

  5. 使用图像处理技术去除图片水印

    电子科技大学 格拉斯哥学院 2017级吴子健2017200604029 前言 在各类信息爆炸式增长的今天,大量图片形式的信息被上传到因特网上.为了防止图片版权被窃取,大量图片制造者使用水印来确保图片版 ...

  6. 图像修复 python_50.图像修复

    目标 本节主要学习内容: • 使用图像修复技术去除照片中的噪声和划痕 • 掌握 OpenCV 中与图像修复技术相关的函数 基础说明 想一想,你在生活中有没有遇到过这样的问题?一张自己很喜欢的具有怀念意 ...

  7. CVPR 2020丨图像超清化+老照片修复技术,拯救你所有的模糊、破损照片

    编者按:也许你曾从橱柜里翻出家人们压箱底的老照片,而它们已经泛黄发脆,甚至有些褪色:也许你在拍照时不慎手抖,只好把糊成一片的照片都丢进"最近删除".而微软亚洲研究院在计算机视觉顶会 ...

  8. 图像超清化+老照片修复技术,拯救所有模糊和黑白的照片

    也许你曾从柜子里翻出家人们压箱底的老照片,它们已经变黄.变脆,甚至褪色:科技的进步AI智能图像修复技术--基于领先的深度学习技术,将使这些照片奇迹般地回归. 从古老的胶片相机到今天的数字时代,人类捕捉 ...

  9. inpaint-图像修补算法

    图像的修补技术由inpaint函数实现,它可以用来从扫描的照片中清除灰尘和划痕,或者从静态图像或视屏中去除不需要的物体. 函数原型C++: void inpaint( InputArray src, ...

最新文章

  1. Java和OC的区别
  2. altium pcb 信号高亮_在PCB设计中高效的放置元件技巧
  3. Java当中用 javabean和其他容器存入表格数据 或 利用 容器进行存储表格
  4. leetocde 225. 用队列实现栈
  5. 一篇文章搞定java序列化机制
  6. php tp5.3,[李景山php]每天TP5-20161226|thinkphp5-Console.php-3
  7. unity3d 挂载脚本_Unity3D加载资源的四种方式
  8. 电脑打开热点后无法连接到网络
  9. java programer认证_关于考SUNJAVAPROGRAMMER的几点建议
  10. ROS-3DSLAM(4):lidar_odometry包浅析
  11. 蚂蚁小程序--自学笔记
  12. 一个未完成创业项目的思考——创业杂记
  13. 任务栏优化工具TrueLaunchBar
  14. 2014年市场需求排名前10的编程语言 - 生命的延续是 BI
  15. Ol3中Map事件全解析
  16. TP、TN、FP、FN 含义
  17. 利用R语言画简单时间序列图
  18. java通过qq邮箱发送_java实现发送QQ邮箱
  19. Linux之curl 风骚用法
  20. 将直播链接放入微信公众号

热门文章

  1. 今天终于知道了,阿里巴巴 P8、P9 及以上到底是什么水平?
  2. Citus 分布式 PostgreSQL 集群 - SQL Reference(查询处理)
  3. 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛...
  4. 性能优化实践:快速开启 Gzip 压缩
  5. Java|学习打卡-6
  6. win7计算机加载项,详细教您win7禁用ie加载项
  7. 小程序--设置字体大中小功能
  8. INF421 - Amphi 2 Divide and Conquer
  9. 一杯饮品挤爆小程序,喜茶到底有哪些独到之处??
  10. Mrt render