本系列博客主要分享Python在机器视觉/计算机视觉下的编程应用
cv2包是著名的视觉库OpenCV的Python实现

图像修复

很多时候遇到受损的图片我们需要利用机器视觉的手段对其进行修复,opencv中提供了inpaint函数实现了这一功能。

1.先来看一个例子

  • 首先读入图片:
import numpy as np
import cv2 as cv
img = cv.imread('src.jpg')
polluted = cv.imread('polluted.png',0)


分别是原图和污损图。

  • 下面我们使用阈值分割来得到污损图的掩膜:
_,mask = cv2.threshold(cv2.cvtColor(pllute,cv2.COLOR_BGR2GRAY),10,255,cv2.THRESH_BINARY_INV)
cv2.imshow('mask',mask);cv2.waitKey(1000);cv2.destroyAllWindows()

得到如下的掩膜图;

  • 最后调用函数对图像进行修复
dst = cv.inpaint(polluted ,mask,3,cv.INPAINT_TELEA)
cv2.imshow('inpainted',dst)
cv2.imshow('src',src)
cv2.waitKey(0)
cv2.destroyAllWindows()


左图是修复图,右图是原图。
img from Animade

2.参数解析

图像修复函数inpaint主要参数如下:

inpaint(src, inpaintMask, inpaintRadius, flags[, dst]) -> dst
.   这是一个利用领域信息恢复图像的函数.
.
.   src 为输入图像
.   inpaintMask 为单通道二值图掩膜,其中非零位置为需要修复的位置
.   dst  为输出图像,与输入大小等同 .
.   inpaintRadius  为领域大小,在修复时考虑周围像素的范围
.   修复方法的flag:
.   -   **INPAINT_NS** [Navier-Stokes based方法](https://ieeexplore.ieee.org/document/990497)
.   -   **INPAINT_TELEA** [Alexandru Telea方法](https://www.tandfonline.com/doi/abs/10.1080/10867651.2004.10487596)
.

3.原理实现

Navier-Stokes based方法
论文摘要:这种方法利用了经典流体动力学中的思想,将等照度线连续的从待修补区域周围传播到修补区域中去。主要的观点在于将图像强度视为了二维不可压缩流的流函数(stream function),其中图像强度的拉普拉斯量为流体的旋量、并将它通过矢量场定义的流函数输运到待修补区域。最终得到的算法会通过连续照度来匹配受损区域的梯度矢量。它直接依赖于流体力学中的纳维叶斯托克斯方程,具有较强的理论和数值优势。

Fast Marching Method
这篇文章提出的是基于快速行进算法的图像修复,其主要思想则是基于沿图像梯度传播平滑估计器。图像的平滑主要来自于受损图像领域的加权平均。同时将缺失的区域视为水平集,并用FMM(Fast Marching Method)来描述为图像信息的传播。

Image Prior
目前深度学习方法对于图像修复也有了很大的进展


ref:
1.OpencvDoc:https://docs.opencv.org/3.4/df/d3d/tutorial_py_inpainting.html
2.Deeplearning:https://arxiv.org/pdf/1711.10925.pdf
3.Code:https://github.com/atiyo/deep_image_prior
4.Fast Marching:https://blog.csdn.net/seamanj/article/details/51991067

Python与机器视觉(x)图像修复相关推荐

  1. python修片_python 用opencv实现图像修复和图像金字塔

    我们将学习如何通过一种称为修复的方法去除旧照片中的小噪音,笔画等.基本思路很简单:用相邻像素替换那些坏标记,使其看起来像邻域. cv2.inpaint() cv2.INPAINT_TELEA cv2. ...

  2. Python,OpenCV中的图像修复——cv2.inpaint()

    Python,OpenCV中的图像修复--cv2.inpaint 1. 效果图 2. 原理 3. 源码 参考 image inpainting 图像修改 这篇博客将介绍如何通过OpenCV中图像修复的 ...

  3. 使用Python,OpenCV进行去水印,图像修复

    图像修复是图像保存和图像恢复的一种形式,其历史可以追溯到1700年代,当时意大利威尼斯的公共图片修复总监彼得·爱德华兹(Pietro Edwards)应用这种科学方法来修复和保存著名作品(资料来源). ...

  4. Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示

    Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示 第一章:霍夫变换检测圆 ① 实例演示1 ② 实例演示2 ③ 霍夫变换函数解析 第二章:Python + openc ...

  5. Python与机器视觉(x)图像差分-图像相减

    本系列博客主要分享Python在机器视觉/计算机视觉下的编程应用 cv2包是著名的视觉库OpenCV的Python实现 在求峰值信噪比PSNR时,我们需要求取目标图像和实际图像之间的误差. err = ...

  6. Python与机器视觉(三)图像保存

    本系列博客主要分享Python在机器视觉/计算机视觉下的编程应用 cv2包是著名的视觉库OpenCV的Python实现 在对图片进行一定的操作后,我们需要将图像保存在对应的位置,cv2提供了imwri ...

  7. Python+OpenCV:图像修复(Image Inpainting)

    Python+OpenCV:图像修复(Image Inpainting) 理论 Most of you will have some old degraded photos at your home ...

  8. python修复老照片_10篇必读深度图像修复文章,珍贵老照片有救了!

    专注Python.AI.大数据,请关注公众号七步编程! 照片,在大家生活中扮演者非常重要的角色. 难忘的瞬间.美好的风景.珍贵的回忆,我们总喜欢用照片把它保留下来. 但是,瑕疵.水印.遮挡.涂鸦这些让 ...

  9. python——图像处理3(均值偏移、改变亮度、图像修复、图像融合)

    https://blog.csdn.net/gm_ergou/article/details/92846396 1.均值偏移(磨皮效果) import cv2 as cv import numpy a ...

最新文章

  1. 在JBuilder8在使用ANT
  2. 暴雪停止与Kespa合作 星际联赛或被迫停赛
  3. 第十五届全国大学生智能车竞赛百度深度学习车模
  4. 安卓高手之路之 应用篇
  5. php简单异常,PHP实现的简单异常处理类示例
  6. lwip协议栈优化_干货分享 | KNI性能优化实践
  7. Vue---mock.js 使用
  8. maven 部署nexus_Maven部署到Nexus
  9. 电脑硬盘数据线_这40种电脑故障的排除技巧你都掌握了吗?
  10. PHP特级课视频教程_第三十四集 Mongodb性能优化_李强强
  11. 阿里 AI「一对多」挑战人类律师;谷歌或将推出自研手机和电脑芯片;JavaScript诞生25周年|极客头条...
  12. CSS三角强化的巧妙运用(HTML、CSS)
  13. 将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程
  14. Burpsuit结合SQLMapAPI产生的批量注入插件
  15. matlab 按文件名排序,文件名排序Matlab程序
  16. 集群资源调度系统设计架构总结
  17. C++最简单的日期计算
  18. 博士伦-SCI论文撰写培训
  19. linux 网络速度非常慢,Linux认证:解决ubuntu8.10上网速度慢的问题
  20. Word查找红色文字 Word查找颜色字体 Word查找突出格式文本

热门文章

  1. C++:遍历指定路径下的文件/图片
  2. C++:map和pair
  3. linux 修I改资源限制1024,Re:如何解决1024的限制???
  4. Mybatis(5)自定义Mybatis分析以及自定义实现
  5. 关于'$ router' 的 undefined问题 ,是不是很痛点?!
  6. 新骗子举报收录系统源码
  7. 红色Bootstrap自适应帝国cms7.5会员中心模板
  8. 多功能拼团商城源码-带优惠券功能+自适应移动端+对接免签约支付
  9. 爱链工具 v1.11.24.0
  10. linux如何更改ssh配置文件,Linux系统下ssh的相关配置详细解析