首页 > 编程语言 >Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting

Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting

时间:2023-08-25 15:03:36浏览次数:364  
标签:Python mask Image Inpainting cv2 像素 INPAINT 算法 图像

OpenCV Python 图像修复

【理论】

大多数人家里都会有一些旧照片,上面有一些黑点,一些笔画等。你想过把它修复回来吗?我们不能简单地在油漆工具中删除它们,因为它只会用白色结构取代黑色结构,这是没有用的。在这些情况下,使用一种称为图像修补的技术。基本的想法很简单:用邻近的像素替换那些不好的标记,这样它看起来就像邻近的像素。看看下面这张图片(来自维基百科):

Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting_opencv

为此设计了几种算法,OpenCV提供了其中两种。两者都可以通过同一个函数访问;cv.inpaint()

第一种算法是基于Alexandru Telea在2004年发表的论文**“一种基于快速行进方法的图像修补技术”**。它是基于快速行进法的。考虑图像中要补绘的区域。算法从该区域的边界开始,在区域内部逐步填充边界内的所有东西。它需要一个小的邻域,围绕邻域上的像素进行内绘。该像素被附近所有已知像素的归一化加权和所取代。权重的选择是一件重要的事情。对靠近点的像素、靠近边界法线的像素和位于边界轮廓上的像素给予更多的权重。一旦一个像素被嵌入,它移动到下一个最近的像素使用快速行进方法。FMM确保已知像素附近的像素首先被补绘,因此它就像手动启发式操作一样工作。该算法通过使用标志来启用,cv.INPAINT_TELEA.

第二种算法基于Bertalmio, Marcelo, Andrea L. Bertozzi和Guillermo Sapiro在2001年发表的论文**“Navier-Stokes,流体动力学,and Image and Video Inpainting”**。该算法以流体动力学为基础,利用偏微分方程。基本原理是启发式的。它首先沿着边缘从已知区域移动到未知区域(因为边缘意味着连续的)。它在修补区域边界处匹配梯度向量的同时,继续等距(相同强度的线连接点,就像等高线连接点一样)。为此,使用了流体动力学中的一些方法。一旦它们被获得,就填充颜色以减少该区域的最小方差。该算法通过使用标志来启用,cv.INPAINT_NS.

【代码】

import numpy as np 
import cv2 

img = cv2.imread("assets/messi2.jpg")
mask = cv2.imread("assets/messi2_mask.jpg", 0)

dst1 = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA)
dst2 = cv2.inpaint(img, mask, 3, cv2.INPAINT_NS)

cv2.imshow("src", img)
cv2.imshow("mask", mask)
cv2.imshow("dst_TELEA", dst1)
cv2.imshow("dst_NS", dst2)

cv2.waitKey(0)
cv2.destroyAllWindows()

Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting_邻域_02

【接口】

  • inpaint
cv2.inpaint(	src, inpaintMask, inpaintRadius, flags[, dst]	) ->	dst

Restores the selected region in an image using the region neighborhood.

src: 输入图像,8位,16位,32位单通道或者8位3通道图像

inpaintMask: 修复掩码,8位单通道,非0表示需要修复;

inpaintRadius: 修复半径

dst: 输出的图像

flags: cv2.INPAINT_NS 或 cv2.INPAINT_TELEA

Lnton 羚通是专注于音视频算法、算力、云平台的高科技人工智能企业。 公司基于视频分析技术、视频智能传输技术、远程监测技术以及智能语音融合技术等, 拥有多款可支持 ONVIF、RTSP、GB/T28181 等多协议、多路数的音视频智能分析服务器 / 云平台。

Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting_opencv_03

标签:Python,mask,Image,Inpainting,cv2,像素,INPAINT,算法,图像
From: https://blog.51cto.com/LNTON/7231061

相关文章

  • 无涯教程-Python - 循环语句
    通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。在某些情况下,您需要多次执行一个代码块。循环语句使无涯教程可以多次执行一个语句或一组语句。下图说明了循环语句-Python编程语言提供了以下类型的循环来处理循环需求。Sr.No.LoopType&描述1......
  • 用python写了个简单ADB调试小工具
    整体框架基于python3.10编写,使用tkinter库作为程序主窗口GUI;用pyinstaller库打包.exe包,方便Windows系统直接双击使用;对安卓设备进行调试,管理应用,查看adblog,对设备root,remount,截屏,录屏,发送adb命令等。。。。。。。。PS:由于安卓系统安全限制原因,对于安卓10+设备存在不能录屏问题,暂......
  • Lnton羚通算法算力云平台在OpenCV-Python中如何进行图像去噪
    图像去噪(ImageDenoising)是图像处理中的一个重要任务,旨在从带有噪声的图像中恢复出清晰的图像。噪声通常是由于图像采集、传输或存储过程中引入的不良影响而产生的。以下是一些常见的图像去噪方法:1.均值滤波器:基于邻域像素的平均值来平滑图像,可以有效减少高斯噪声等。2.中值滤波器:......
  • 编程真好玩Python_2.1你的第一个程序HelloWorld
    一、作业效果。(1)程序首先显示信息:“你好,世界!”(2)询问你的名字(3)输入后,屏幕显示“你好,×××!”二、完成(1)新建文件夹,保存-命名(2)运行代码print("Hello,World!")person=input("Whatisyourname?\n")print("Hello,",person)(3)在编辑窗口中,选择Run-RunModule,运行程序......
  • 【疑难杂症】升级Mac系统后python遇到[SSL: CERTIFICATE_VERIFY_FAILED]
    [本文出自天外归云的博客园]同事升级Mac电脑版本后,遇到了[SSL:CERTIFICATE_VERIFY_FAILED]报错:<urlopenerror[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfailed:unabletogetlocalissuercertificate(_ssl.c:1131)>error:<urlopenerror[SSL:CERTIFICATE_......
  • Immortal Objects将被添加进Python,提高CPU效率
         据了解,日前Meta宣布将在Python中加入ImmortalObjects,使得对象可以绕过参照计数检查,成为在执行时持续存活的“不朽对象”,以便提高内存的使用效率,帮助解除Python语言本身在平行运算上的局限。有开发人员发现,Meta使用Python网页框架Django开发Instagram前端,并且使......
  • python3的文件操作
    python的文件操作和php的文件很类似file对象使用open函数来创建,open的参数:r表示读,w写数据,在写之前先清空文件内容,a打开并附加内容,打开文件之后记得关闭下表列出了file对象常用的函数:序号方法及描述file.close()关闭文件。关闭后文件不能再进行读写操作。file.flush()......
  • python的变量
    变量第一个字符必须是字母表中字母或下划线'_'变量的其他的部分有字母、数字和下划线组成变量对大小写敏感 python保留字即不能当作变量>>>importkeyword>>>keyword.kwlist['False','None','True','and','as','assert','b......
  • 微调llama2模型教程:创建自己的Python代码生成器
    本文将演示如何使用PEFT、QLoRa和Huggingface对新的lama-2进行微调,生成自己的代码生成器。所以本文将重点展示如何定制自己的llama2,进行快速训练,以完成特定任务。 https://avoid.overfit.cn/post/9794c9eef1df4e55adf514b3d727ee3b......
  • 编程真好玩Python_1、认识Python
    一、什么是编程1、Scratch与Python区别Scratch是一种可视化的编程语言,适合于创作游戏、动画或者互动故事。Python使用文字来编程。二、IDLE结构1、壳窗口。壳窗口无法保存代码,但是Python打印的任何东西都会出现在壳窗口中。        2、编辑窗......