matlab练习程序(TV模型图像修复)
曾经想要实现过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模型图像修复)相关推荐
- matlab练习程序(简单图像融合)
通过本篇和上一篇的结合,应该就能做出拉普拉斯图像融合了. 这里用的方法很简单,就是用模板和两个图像相乘,然后对处理后的两个图像再相加就可以了. 拉普拉斯融合就是对金字塔的每一层图像做这样的操作,然后再 ...
- matlab对图像聚类,matlab练习程序(meanshift图像聚类)
关于这个meanshift,一来能够用来做为目标跟踪,二来能够用来进行图像聚类.我这里只实现了图像聚类,固然,是按本身的理解编写的程序.至于目标跟踪未来必定也是要实现的,由于我最初看这个算法的缘由就是 ...
- cdd 变分 图像修复 matlab,图像修复中的TV模型
前言:图像修复是一项非常有意义的研究工作,比如我们生活中的照片被污染,再比如名贵字画.国家文物壁画等珍贵物品被破坏,这些都需要图像修复工作来完成. 简介:整体变分(Total Variation)的方 ...
- 图像修复中的TV模型
转载至http://blog.csdn.net/hujingshuang/article/details/44257179 前言:图像修复是一项非常有意义的研究工作,比如我们生活中的照片被污染,再比如 ...
- 【图像修复】浅析:图像修复中的TV模型
前言:图像修复是一项非常有意义的研究工作,比如我们生活中的照片被污染,再比如名贵字画.国家文物壁画等珍贵物品被破坏,这些都需要图像修复工作来完成. 简介:整体变分(Total Variation)的方 ...
- 图像修复模型——TV模型
1. 参考文献 2. TV图像修复模型 2.1 TV模型 % demo_TV.m % Author: HSW % Date: 2015/3/25 % HARBIN INSTITUTE OF TECHN ...
- 图像修复序列——混合稀疏表示(Hybrid Sparse Representations)模型
1. 参考文献 2. Hybrid Sparse Representations模型 % demo_Hybrid_Sparse_Representation.m % Author: HSW % Dat ...
- 图像修复序列——BSCB模型
1. 参考文献 2. BSCB模型代码 2.1 BSCB模型demo % demo_BSCB.m % Author: HSW % Date: 2015/3/25 % HARBIN INSTITUTE ...
- 【图像修复】基于criminis算法实现图像修复附matlab代码
1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...
最新文章
- 基于C++与VS2012的HDF5文件处理(二)
- python是不是特别垃圾-震惊!垃圾分类居然能用Python搞定!
- tomcat 的 start/stop shell script.
- SQL SERVER 2000安装遇到的问题小汇总(转载)
- 0308互联网新闻 | 网易云音乐App上线小程序入口;谷歌为机器学习框架TensorFlow发新模块...
- Educational Codeforces Round 96 (Rated for Div. 2) C. Numbers on Whiteboard///思维
- mysql concat 引号_在MySQL concat里面使用多个单引号,三引号的问题
- 平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡
- 【明人不说暗话】我就只讲进程与线程
- python 预测算法_Python 与金融数据使用机器学习算法预测交易策略
- 浏览器对象模型(BOM)
- Linux高级管理之ACL(访问控制列表)实战应用
- Win10个人使用软件清单
- CATIA二次开发—视图及视点
- 2017腾讯校招面试回忆 成功拿到offer
- 【oracle】函数minus
- 结巴分词--关键词抽取
- formula one不兼容win10
- LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述
- 谷歌等提出Soft Diffusion:从通用扩散过程中正确调度、学习和采样
热门文章
- tar (child): bzip2: Cannot exec: No such file or directory
- cisco 通过tftp备份/恢复配置和3560交换机IOS升级
- axios在派遣方法时候的异步
- Redis入门(三)Redis的基本数据类型
- 【BZOJ2084】【洛谷P3501】[POI2010]ANT-Antisymmetry(Manache算法)
- python 工具ScreenShoot
- 线性阵列、圆周阵列、曲线阵列
- input内强制保留小数点后两位 位数不足时自动补0
- Global.asax中的C#服务
- [转]Eclipse+pydev 常用快捷键