曾经想要实现过Bertalmio图像修复算法,无奈自身实力不够,耗费两天时间也没能实现。昨天博客上有人问到TV模型,这个模型我过去是没听说过的,于是就找来相关论文研究了一下,发现TV模型也可以用来修复图像,于是就有了想实现的想法。用到的偏微分方程技巧和各项异性扩散很像。

先看看效果吧:

原lena:

对于从来没有接触过图像修复的我来说,效果真是惊艳了。

下面介绍运算步骤:

和各项异性扩散类似,整个算法也是基于迭代的,迭代公式如下:

其中Io代表当前处理的像素,Ip代表邻域像素,p就可以取news四邻域。H定义如下:

这里的lambda为自定义的平滑系数。wp的定义如下:

这里a同样是自定义。

结合上图在看up散度,将p取e来看ue定义如下:

这里的h就是1了。

如此上述所有公式倒着运算不断迭代就可以了,迭代次数可自定义,或是不断迭代直到某条件成立都是可以的。

matlab代码如下,并不长,变量名和公式名是一一对应的:

close all;
clear all;
clc;

img=double(imread('lena.jpg'));
mask=rgb2gray(imread('ma.jpg'))>160;
[m n]=size(img);
for i=1:m
for j=1:n
if mask(i,j)==0
img(i,j)=0;
end
end
end
imshow(img,[]); %合成的需要修复的图像

lambda=0.2;
a=0.5;
imgn=img;
for l=1:300 %迭代次数
for i=2:m-1
for j=2:n-1
if mask(i,j)==0 %如果当前像素是被污染的像素,则进行处理

Un=sqrt((img(i,j)-img(i-1,j))^2+((img(i-1,j-1)-img(i-1,j+1))/2)^2);
Ue=sqrt((img(i,j)-img(i,j+1))^2+((img(i-1,j+1)-img(i+1,j+1))/2)^2);
Uw=sqrt((img(i,j)-img(i,j-1))^2+((img(i-1,j-1)-img(i+1,j-1))/2)^2);
Us=sqrt((img(i,j)-img(i+1,j))^2+((img(i+1,j-1)-img(i+1,j+1))/2)^2);

Wn=1/sqrt(Un^2+a^2);
We=1/sqrt(Ue^2+a^2);
Ww=1/sqrt(Uw^2+a^2);
Ws=1/sqrt(Us^2+a^2);

Hon=Wn/((Wn+We+Ww+Ws)+lambda);
Hoe=We/((Wn+We+Ww+Ws)+lambda);
How=Ww/((Wn+We+Ww+Ws)+lambda);
Hos=Ws/((Wn+We+Ww+Ws)+lambda);

Hoo=lambda/((Wn+We+Ww+Ws)+lambda);

imgn(i,j)=Hon*img(i-1,j)+Hoe*img(i,j+1)+How*img(i,j-1)+Hos*img(i+1,j)+Hoo*img(i,j);

end
end
end
img=imgn;

end

figure;
imshow(img,[])

matlab练习程序(TV模型图像修复)相关推荐

  1. matlab练习程序(简单图像融合)

    通过本篇和上一篇的结合,应该就能做出拉普拉斯图像融合了. 这里用的方法很简单,就是用模板和两个图像相乘,然后对处理后的两个图像再相加就可以了. 拉普拉斯融合就是对金字塔的每一层图像做这样的操作,然后再 ...

  2. matlab对图像聚类,matlab练习程序(meanshift图像聚类)

    关于这个meanshift,一来能够用来做为目标跟踪,二来能够用来进行图像聚类.我这里只实现了图像聚类,固然,是按本身的理解编写的程序.至于目标跟踪未来必定也是要实现的,由于我最初看这个算法的缘由就是 ...

  3. cdd 变分 图像修复 matlab,图像修复中的TV模型

    前言:图像修复是一项非常有意义的研究工作,比如我们生活中的照片被污染,再比如名贵字画.国家文物壁画等珍贵物品被破坏,这些都需要图像修复工作来完成. 简介:整体变分(Total Variation)的方 ...

  4. 图像修复中的TV模型

    转载至http://blog.csdn.net/hujingshuang/article/details/44257179 前言:图像修复是一项非常有意义的研究工作,比如我们生活中的照片被污染,再比如 ...

  5. 【图像修复】浅析:图像修复中的TV模型

    前言:图像修复是一项非常有意义的研究工作,比如我们生活中的照片被污染,再比如名贵字画.国家文物壁画等珍贵物品被破坏,这些都需要图像修复工作来完成. 简介:整体变分(Total Variation)的方 ...

  6. 图像修复模型——TV模型

    1. 参考文献 2. TV图像修复模型 2.1 TV模型 % demo_TV.m % Author: HSW % Date: 2015/3/25 % HARBIN INSTITUTE OF TECHN ...

  7. 图像修复序列——混合稀疏表示(Hybrid Sparse Representations)模型

    1. 参考文献 2. Hybrid Sparse Representations模型 % demo_Hybrid_Sparse_Representation.m % Author: HSW % Dat ...

  8. 图像修复序列——BSCB模型

    1. 参考文献 2. BSCB模型代码 2.1 BSCB模型demo % demo_BSCB.m % Author: HSW % Date: 2015/3/25 % HARBIN INSTITUTE ...

  9. 【图像修复】基于criminis算法实现图像修复附matlab代码

    1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...

最新文章

  1. 基于C++与VS2012的HDF5文件处理(二)
  2. python是不是特别垃圾-震惊!垃圾分类居然能用Python搞定!
  3. tomcat 的 start/stop shell script.
  4. SQL SERVER 2000安装遇到的问题小汇总(转载)
  5. 0308互联网新闻 | 网易云音乐App上线小程序入口;谷歌为机器学习框架TensorFlow发新模块...
  6. Educational Codeforces Round 96 (Rated for Div. 2) C. Numbers on Whiteboard///思维
  7. mysql concat 引号_在MySQL concat里面使用多个单引号,三引号的问题
  8. 平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡
  9. 【明人不说暗话】我就只讲进程与线程
  10. python 预测算法_Python 与金融数据使用机器学习算法预测交易策略
  11. 浏览器对象模型(BOM)
  12. Linux高级管理之ACL(访问控制列表)实战应用
  13. Win10个人使用软件清单
  14. CATIA二次开发—视图及视点
  15. 2017腾讯校招面试回忆 成功拿到offer
  16. 【oracle】函数minus
  17. 结巴分词--关键词抽取
  18. formula one不兼容win10
  19. LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述
  20. 谷歌等提出Soft Diffusion:从通用扩散过程中正确调度、学习和采样

热门文章

  1. tar (child): bzip2: Cannot exec: No such file or directory
  2. cisco 通过tftp备份/恢复配置和3560交换机IOS升级
  3. axios在派遣方法时候的异步
  4. Redis入门(三)Redis的基本数据类型
  5. 【BZOJ2084】【洛谷P3501】[POI2010]ANT-Antisymmetry(Manache算法)
  6. python 工具ScreenShoot
  7. 线性阵列、圆周阵列、曲线阵列
  8. input内强制保留小数点后两位 位数不足时自动补0
  9. Global.asax中的C#服务
  10. [转]Eclipse+pydev 常用快捷键