马尔科夫随机场(MRF)及其在图像降噪中的matlab实现
(Markov Random Field)马尔科夫随机场,本质上是一种概率无向图模型
下面从概率图模型说起,主要参考PR&ML 第八章 Graphical Model (图模型)
定义:A graph comprises nodes (also called vertices) connected by links (also known as edges or arcs ).
In a probilistic graphical model each node represents a random variable or group of random variables ,and th links express probabilistic relationships between these variables.
分类:概率图模型大体分为两种,第一种是有向图,又叫贝叶斯网络,链接节点之间的边是有方向的,用来描述变量之间的因果关系(左侧);另一种是无向图,又叫马尔科夫随机场,边是没有方向的,用来描述变量之间的软约束(右侧)。
1.Bayesian network
用概率图表示联合概率分布密度
起点对应条件变量,如p(c|a,b)就会有两个起点一个终点。略微复杂一点如下图:
由于变量之间如果采用全连接会使得参数个数随着变量个数成幂次增加。所以书中讨论了几种在设计贝叶斯网络时减少模型参数的方法,第一种是独立性假设,即根据实际问题对某些变量提出独立性假设以减少链接边数;第二种是采用链式连接,即每个节点只有一个子节点一个父节点;第三种是权值共享,类似于cnn中底层的做法。
2 condition independence条件独立
定义式:
下面来讨论如何通过图结构直接判断变量之间的条件独立性
三个例子,一段总结
例一:结点c被称为关于(从a经过c到达b)这个路径的"尾到尾"(tail-to-tail)连接,因为结点与两个箭头的尾部相连
注意图中c是可观测变量
记作
例二:结点c被称为关于从结点a到结点b的路径"头到尾"(head-to-tail)。
例三:结点c关于从a到b的路径是"头到头"(head-to-head),因为它连接了两个箭头的头。
注意这里当c为观测条件时不能得到的形式,所以
一个总结:In summary ,a tail-to-tail node or a head-to-tail node leaves a path unblocked unless it is observed in which case it blocks the path .By contrast, a head-to-head node blocks a path if it is unobserved ,but once the node ,and /or at least one of its descendants ,is observed the path becomes unblocked .参考译文(总而言之,TT结点或者HT结点形成的路径无堵,除非该结点被观察到(这会堵住路径)。相反,HH结点在没被观察到时会堵住路径,不过一旦该结点或其至少一个子结点被观察到的话,路径又变成无堵的了~)
一个小概念 D-separation:这个D-separaton的目的是通过有向无环图寻找一个特定的条件依赖表述 。针对节点(变量)集合,如果所有从A经过C到达B的路径都被阻隔,那么我们说C把A从B中d-separation.即
3.Markov Random Fields
一个马尔科夫随机场(Markov random field),也被称为马尔科夫网络(Markov network)或者无向图模型(undirected graphical model)(Kindermann and Snell, 1980),包含一组结点,每个结点都对应着一个变量或一组变量。链接是无向的,即不含有箭头。
这里同样来讨论他的独立性,集合A到集合B的所有路径都通过集合C中的一个或多个节点,那么所有这样的路径都被阻隔,因此或者说,除掉集合C之后A,B就没有连接路径了。
注意,只要有一条路径没有通过C,那么这种性质就不存在。
定义团块(clique):对这个团块的所有子集的节点都是全连接的。
那么整个图的联合分布由各个团块组成,
这里为每一个团块定义了一个势函数,注意如果这个无向图不是由有向图转化而来,那么这里的势函数可以不满足概率性质。但是,由于p(x)要满足概率性质,所以势函数还是要大于零的。Z是归一化因子。通常取这个分布叫做Boltzmann distribution(有时间要查查他的性质)。而这里最大的优势就是势函数可以通过选取而具有一定的实际意义,相当于一种相似度的度量,所以为算法的设计增加了灵活性。
例子:图像去噪
这个例子可以有很多更好的方法实现,这里只是为了说明势函数的用法而已。
给一幅二值图像加入噪声,加入噪声之后的图像是我们的观测值Y,而实际图像是隐变量X,现在我们就要通过Y推断X,
由于噪声等级比较小,因此我们知道xi和yi之间有着强烈的相关性。我们还知道图像中相邻像素xi和xj的相关性很强。这种先验知识可以使用马尔科夫随机场模型进行描述,它的无向图如下:
势函数定义为:
这里只有两种团块,第一种是xi和yi,第二种是xi和相邻的xj。我们分别给以不同系数用来调节其在势函数中的权重,由于最后的概率计算要取最大,所以这里等价于取
最小。
具体代码如下:
%实现PRML P387 例子:使用mrf降噪
%输入一个二值图像并加入噪声
close all;
clear all;
I=imread('Penguins.jpg');
I1=im2bw(I);
subplot(2,2,1)
imshow(I1);
title('原图像');
J = imnoise(I,'salt & pepper', 0.2);
J1=im2bw(J);
subplot(2,2,2)
imshow(J1);
title('噪声图') Y=ones(size(J1));
Y(J1==0)=-1;
[m,n]=size(Y);
X=Y;h=0;beta=3.5;eta=.1;
while 1
tot=0
for i=2:1:m-1
for j=2:1:n-1
temp=X(i,j);
X(i,j)=-1;%根据定义计算势函数
E1=h*X(i,j)-beta*X(i,j)*(X(i-1,j)+X(i+1,j)+X(i,j-1)+X(i,j+1))-eta*X(i,j)*Y(i,j);
X(i,j)=1;
E2=h*X(i,j)-beta*X(i,j)*(X(i-1,j)+X(i+1,j)+X(i,j-1)+X(i,j+1))-eta*X(i,j)*Y(i,j);
if E1<E2
X(i,j)=-1;
else
X(i,j)=1;
end
if temp~=X(i,j)
tot=tot+1;
end
end
end
if tot<1
break;
end
end J2=X;
J2(X==-1)=0;
subplot(2,2,3)
imshow(J2);
title('mrf降噪结果')
结果如下:
马尔科夫随机场(MRF)及其在图像降噪中的matlab实现的更多相关文章
- PGM学习之七 MRF,马尔科夫随机场
之前自己做实验也用过MRF(Markov Random Filed,马尔科夫随机场),基本原理理解,但是很多细节的地方都不求甚解.恰好趁学习PGM的时间,整理一下在机器视觉与图像分析领域的MRF的相关 ...
- PRML读书会第八章 Graphical Models(贝叶斯网络,马尔科夫随机场)
主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:52:10 今天的内容主要是: 1.贝叶斯网络和马尔科夫随机场的概念,联合概率分解,条件独立表示:2.图的概率推断in ...
- 马尔科夫随机场模型(MRF-Markov Random Field)
原文: http://blog.sina.com.cn/s/blog_92c398b00102vs3q.html 马尔科夫过程 隐马尔科夫过程 与马尔科夫相比,隐马尔可夫模型则是双重随机过程,不 ...
- 马尔科夫随机场(Markov Random Field)
马尔可夫随机场(Markov Random Field),它包含两层意思:一是什么是马尔可夫,二是什么是随机场. 马尔可夫过程可以理解为其当前的状态只与上一刻有关而与以前的是没有关系的.X(t+1)= ...
- 隐马尔科夫模型 HMM(Hidden Markov Model)
本科阶段学了三四遍的HMM,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定 ...
- 马尔可夫随机场(Markov random fields) 概率无向图模型 马尔科夫网(Markov network)
上面两篇博客,解释了概率有向图(贝叶斯网),和用其解释条件独立.本篇将研究马尔可夫随机场(Markov random fields),也叫无向图模型,或称为马尔科夫网(Markov network) ...
- 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪
前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...
- 强化学习(二)马尔科夫决策过程(MDP)
在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...
- 隐藏马尔科夫模型HMM
概率图模型 HMM 先从一个具体的例子入手,看看我们要解决的实际问题.例子引自wiki.https://en.wikipedia.org/wiki/Hidden_Markov_model Consid ...
随机推荐
- saltstack的配置使用
介绍 认证管理,使其可以用于编配, 远程执行, 配置管理等等.部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. 号称世界上最快的消息队列ZeroMQ使得 ...
- CPP 设计模式学习
源地址 https://www.ev0l.art/index.php/archives/20/ 备忘录模式 在一个类内部记录另一个类的快照状态的模式.可以再合适的时候跳回复用 设计备忘录的三大步骤: ...
- 20191121-3 Final阶段贡献分配规则
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10063 ”组长”组final阶段贡献分分配规则 组里五位成员分别有入团队 ...
- 嗨,让我带你逐行剖析Vue.js源码
本项目受到了阮一峰老师的肯定,已刊登在阮一峰老师微信公众号的科技爱好者周刊第87期,同时也被多个微博大V转发,短短一个月时间内在github上star数量就已经突破2k! Hello,大家好,我最近在 ...
- react项目使用antd
在开始实践之前要确保搭建React单页面开发环境,如果还没有搭建好开发环境的朋友请移步到如何搭建React单页面开发环境. 首先在命令行模式下创建一个React项目(项目名使用小写字母命名):(win ...
- owa部署
新建一台win server 2012(注意如果是2008要补丁) 配置静态ip DNS指向ad域的ip 测试: ping 下ad域的域名,是通的继续 把本机加入到ad域 重启下 用admin登陆: ...
- 傅立叶变换—DFT
背景:最近看到实验室其他同学在用傅立叶变换解决问题,我也想通过并行来解决这个问题,所以看了一下傅立叶变换的东西,感觉涵盖的东西还能多,我只是初步做了一下了解(一定很片面,但是我主要是为了应用它,主要了 ...
- 10.Python中print函数中中逗号和加号的区别
先看看print中逗号和加号分别打印出来的效果.. 这里以Python3为例 1 print("hello" + "world") helloworld 1 p ...
- Linux 踩坑记
# Linux docker内部执行apt-get install 报错 在某个项目中使用docker构建mysql容器后想要在容器中修改mysql的配置文件,使用vim后提示 bash: vim: ...
- 讲真,这两个IDE插件,可以让你写出质量杠杠的代码
昨晚躺在床上看<拯救大兵瑞恩>的时候,不由得感叹道:"斯皮尔伯格的电影质量真高,片头真实地还原了二战的残酷性."看完后,我的精神异常的亢奋,就想写篇文章来帮助大家提高一 ...