• 谈谈偏微分方程在图像特效中的应用


           在很早之前,iOS上有这样一款软件叫Pimple Eraser,它实现的功能非常简单,就是把人脸中的痘痘给去掉,而且效果很不错。当然你得手动的选择痘痘的位置和大小。不过可惜的是,这款软件的交互做的不是很好。大约一年之后,美图秀秀新的版本也实现了同样的功能,而且它的人机交互功能做得比 Pimple Eraser好的多,由此成为美图秀秀新的亮点。与此类似,百度魔图其实早就有这一功能,不过他们做出来的效果真的是不敢恭维,难道魔图团队就没有一个深入钻研算法的?

          首先要说的是,我不是上述软件开发的作者中的任何一员。但是,我可以猜测的是美图秀秀和Pimple Eraser用的就是偏微分方程修复的算法,而百度魔图用的是加权均值修复,所以后者的效果没法和基于偏微分修复的效果相媲美。其实在大名鼎鼎的PhotoShop图像处理软件中,它的污点修复工具就是用PDE去实现。

          图像修复基本上可以分为两大类。一是对于细小裂缝的修复,这类基本上用PDE的效果比较好。另外一类,就是对大块空洞的修复,这类问题一般用纹理填充的方法。PhotoShop里面,选择【填充】--【纹理识别】菜单实现的就是对大块空洞的纹理填充算法。PS的算法对大块空洞纹理填充的方法在很多时候不尽人意,目前已经有很多更好更快的算法已经被提出。

          由于偏微分方程离散化之后需要求解一个大规模的线性方程组,一般使用高斯赛德尔迭代算法。所以基于偏微分方程的修复的难点在于计算量大,而且很占系统RAM资源。关于这方面的文献可以在网上找到很多,而且有matlab代码可供参考。

          由于人脸的痘痘一般只在人脸部分,所以我根据这一特点,采用局部修复的方法,实现了经典的TV模型数字图像修复算法。能够快速的去除人脸上的痘痘,而且系统占用RAM资源很小。

          下面是测试图片:

     

     

    从修复结果上看,虽然有头发挡住了痣的部位,但是修复的结果还是可以勉强接受的。

  • 相关阅读:
    Spring使用Cache
    Spring AOP之切入点指示符
    centos下 php未安装posix扩展 安装phpsh导致的问题fix
    Linus:利用二级指针删除单向链表
    AngularJS学习之 ui router
    AngularJS学习之 angular-file-upload控件使用方法
    AngularJS学习之 登录表单 清爽验证(边学边更新)
    AngularJS图片上传功能实践
    JavaScript基础知识之 每日一题(网上搜罗来滴)
    AngularJS学习之 ngTable 翻页 功能以及利用angular service准备测试数据
  • 原文地址:https://www.cnblogs.com/celerychen/p/2982418.html
Copyright © 2020-2023  润新知