当前位置:   article > 正文

【图像分割】基于马尔可夫随机场实现图像分割附matlab代码_马尔可夫图像分割

马尔可夫图像分割

1 简介

日常生活中,人们用图像进行信息的获取和交换,因此,图像处理的应用范

围一定涉及到人们的生活、工作和学习的各个方面。而随着社会的发展,人类活

动范围也随之扩大,随之变化的还有图像处理的应用范围。确切的说图像处理是

关于图像的获取、传输、存储、变换、显示、理解与综合利用的一门学科。图像

处理原来出现主要原因是用于提高图像的质量,它将人作为标准,通过改变图像

的视觉效果来达到改善的目的。在图像处理的过程中,运行程序输入的是劣质的

图像,最后输出的是经过处理后的质量得到完善的图像,目前常用的图像处理方

法有图像增强、复原、编码、压缩等。自 1975 年以后,图像处理技术得到深入发

展,而数字图像处理则向着更高、更深层次发展。人们已开始研究如何用计算机

系统诠释图像,实现类似人类视觉系统理解外部的目的,这被称为图像理解或计

算机视觉。

数字图像在采集和传输处理的过程中经常受到各种如设备环境等因素的影响。

例如设备中原件的灵敏性不均匀,雨天与晴天所得的图像不一,图像传输过程的

误差及人为原因等,都会对图像采集及传输造成影响。特别是存在于图像中的噪

声的影响,会使原本优化的图像质量发生改变。因此在对图像做进一步的操作之

前,我们通常先去除图像中的噪声。否则很可能使得我们对图像处理的时候所得

结果与实际需求发生较大偏差或误差。为了保留图像中的有用信息,而图像去噪

就成为图像处理中的一个重要环节,来减少或消除图像中的噪声和干扰。在实际

应用中,为了更好地完成图像后续处理(如图像分割,图像识别等),我们将图像去

噪作为图像处理与识别的预处理。因此如何能够在快速传递、储存和处理信息的

同时不改变信息的质量成了亟待解决的问题。

马尔科夫随机场(Markov Random Field)它包含两层意思:一是什么是马尔

科夫,二是什么是随机场。所谓的马尔科夫指的是马尔科夫的性质。当一个随机

过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖

于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路

径)是条件独立的,那么此随机过程即具有马尔科夫性。具有马尔可夫性质的过

程通常称之为马尔科夫过程。第一层理论已经被人们所熟悉,下面重点介绍马尔

科夫随机场的相关理论。

2 部分代码

%对图像进行分割clcclearclose allimg = double(imread('rice.png'));%读取RGB彩色图像% img=double(rgb2gray(I));%将彩色图像变成灰度图像,并将像素值变成double类型class_number = 6;%设置分类数目max_iter = 40;%最大迭代次数%-------------随机初始化标签----------------label = randi([1,class_number],size(img));iter = 0;while iter < max_iter    %-------计算先验概率---------------    %采用像素点和二维领域的标签相同与否来作为先验概率    %------收集二维邻域内各点的标签--------    label_u = imfilter(label,[0,1,0;0,0,0;0,0,0],'replicate');%上    label_d = imfilter(label,[0,0,0;0,0,0;0,1,0],'replicate');%下    label_l = imfilter(label,[0,0,0;1,0,0;0,0,0],'replicate');%左    label_r = imfilter(label,[0,0,0;0,0,1;0,0,0],'replicate');%右    label_ul = imfilter(label,[1,0,0;0,0,0;0,0,0],'replicate');%左上    label_ur = imfilter(label,[0,0,1;0,0,0;0,0,0],'replicate');%右上    label_dl = imfilter(label,[0,0,0;0,0,0;1,0,0],'replicate');%左下    label_dr = imfilter(label,[0,0,0;0,0,0;0,0,1],'replicate');%右下    pro_c = zeros(class_number,size(label,1)*size(label,2));    %计算像素点8领域标签相对于每一类的相同个数    for i = 1:class_number        label_i = i * ones(size(label));        temp = ~(label_i - label_u) + ~(label_i - label_d) + ...            ~(label_i - label_l) + ~(label_i - label_r) + ...            ~(label_i - label_ul) + ~(label_i - label_ur) + ...            ~(label_i - label_dl) +~(label_i - label_dr);%出现的频数        pro_c(i,:) = temp(:)/8;%用频数除以总数来计算概率    end    pro_c(pro_c == 0) = 0.00001;%防止出现0    %---------------计算条件概率----------------      iter = iter + 1;    %----画出原图作比较---    if iter==max_iter        subplot(3,3,n);        imshow(img)        title('原图');    endend

3 仿真结果

4 参考文献

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/1019989
推荐阅读
相关标签
  

闽ICP备14008679号