matlab练习程序(TV模型图像修复)

2023-05-16

曾经想要实现过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,[])  

 

转载于:https://www.cnblogs.com/tiandsp/archive/2013/05/31/3110350.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab练习程序(TV模型图像修复) 的相关文章

随机推荐

  • DLL编辑和源码管理的一些疑问和见解

    xff08 本来不想放在首页的 xff0c 但是因为的确需要帮助 xff0c 姑且放在首页希望对本文描述到的问题有见解告诉小弟一声 xff09 今天因为类库里面有一个地方写错了 xff0c 所以找经理要了类库的源码 xff0c 经理说我用的
  • Unity3D--学习太空射击游戏制作(四)

    步骤七 xff1a 添加声音和特效 射击声音和爆炸效果 01 xff1a 在Project窗口单机右键 xff0c 选择Import Package gt Custome Package 然后到资源文件目录packages浏览unity包文
  • pnfs加密aes部分。

    首先需要找到加密的地方 实际上 xff0c 文件系统的读写 xff0c 可以首先查看vfs write amp vfs read 然后根据具体定义的 file operations 查找 xff0c 对应的文件系统的read和write函数
  • Ubuntu使任何用户都有设置图形网络权限的方法

    sudo vi usr share polkit 1 actions org freedesktop NetworkManager policy 695行 lt lt allow active gt auth admin keep lt a
  • Ajax 跨域请求 Access-Control-Allow-Origin 问题

    这转移一台GMtool的服务器 xff0c 结果转移过去后 xff0c 去登陆账号密码卡在登陆界面上 xff0c 用google开发者工作查看network时 xff0c 是卡在一个验证的服务器上 xff0c 然而可悲的是那台验证上的服务也
  • 国家气象局免费天气预报接口,城市代码(JSON格式)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 原文链接 xff1a blog csdn net zgyulongfei 国家气象局提供免费的天气预报接口 xff0c 但是访问时候需要指定城市代码 update 2015
  • AutoCAD2016简体中文破解版32位64位下载

    AutoCAD2016序列号 xff1a 666 69696969 667 98989898 400 45454545 066 66666666 任意一个 AutoCAD2016产品密钥 xff1a 001H1 AutoCAD2016软件3
  • 树莓派进阶之路 (031) -字符问题(1) - GBK汉字编码表(转)

    转载 xff1a http blog sina com cn s blog 8184e033010109ug html 基本简介 GB码 xff0c 全称是GB2312 80 信息交换用汉字编码字符集基本集 xff0c 1980年发布 xf
  • 外贸盒子x96max+ 搭建Armbian系统 (附国内可用的img镜像下载地址)

    记录一下在x96max 43 外贸盒子上面搭建Armbian的历程 Armbian是什么操作过程 救砖历程 xff1a 国内外相关电视盒子论坛 Armbian是什么 Armbian是轻量级的Debian系统 xff0c 为ARM开发板专门发
  • 手机上输入http://192.168.1.102:8888/FiddlerRoot.cer为什么下载不了证书

    因为之前你的手机可能已经安装了该证书 xff0c 所以再次下载会说找不到证书 解决办法 如果你遇到上面的问题 就可能是证书的问题 我的本地证书是用系统生成证书的一个软件生成的个人证书 所以出现了问题 操作步骤如下 1 将之前的证书删除打开系
  • 区块链上编程:DApp 开发实战——来写个竞猜游戏吧!

    本文旨在引导对 DApp 开发感兴趣的开发者 xff0c 构建一个基于以太坊去中心化应用 xff0c 通过开发一款功能完备的竞猜游戏 xff0c 迈出 DApp 开发的第一步 xff0c 通过实例讲解 Solidity 语言的常用语法 xf
  • pip更改下载源设置

    任何一个信息都可以把人分为两类 xff0c 知道的和不知道的 有些我们已知的信息 xff0c 自己觉得很平常 xff0c 却可能对另一些不知道的人来说很有用处 比如今天要说的这个小技巧 xff0c 我自己原以为不值一提 xff0c 网上也很
  • 让div在屏幕中居中(水平居中+垂直居中)的几种方法

    水平居中方法 1 inline xff0c inline block元素的水平居中 xff0c 在父级块级元素中设置text align center 2 确定宽度的块级元素水平居中方法 margin xff1a 0 auto xff1b
  • 从ELK到EFK

    背景 作为中国最大的在线教育站点 xff0c 目前沪江日志服务的用户包含沪江网校 xff0c 交易 xff0c 金融 xff0c CCtalk xff08 直播平台 xff09 等多个部门的多个产品的日志搜索分析业务 xff0c 每日产生的
  • 证明:实对称矩阵中,属于不同特征值的特征向量相互正交

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 证明 xff1a 实对称矩阵中 xff0c 属于不同特征值的特征向量相互正交 设AP 61 1P xff0c AP 61 2P xff0c 其中A为实对称矩阵 xff0c
  • 宝塔面板一键docker部署

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 推荐 xff1a 宝塔面板一键docker部署 0 购买服务器 1 安装docker root 64 VM 0 2 centos curl fsSL https get d
  • 异步I/O Asynchronous I/O

    原帖地址 xff1a http www ibm com developerworks cn linux l async AIO 简介 Linux 异步 I O 是 Linux 内核中提供的一个相当新的增强 它是 2 6 版本内核的一个标准特
  • Trapping Rain Water II

    Given n x m non negative integers representing an elevation map 2d where the area of each cell is 1 x 1 compute how much
  • QT- label实现滚动字幕 (跑马灯)效果 -像素级

    QT label滚动字幕 原理代码完整源码 43 部件提升 想通过QSS实现更多效果的请搜索QT自带帮助文档 Qt Style Sheets Examples xff0c 使用样式表来定制程序界面 原理 让label字母滚动起来的原理很简单
  • matlab练习程序(TV模型图像修复)

    曾经想要实现过Bertalmio图像修复算法 xff0c 无奈自身实力不够 xff0c 耗费两天时间也没能实现 昨天博客上有人问到TV模型 xff0c 这个模型我过去是没听说过的 xff0c 于是就找来相关论文研究了一下 xff0c 发现T