首页 > 行业资讯 > 【图像分割】基于马尔可夫随机场实现图像分割附matlab代码

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

时间:2022-06-13 来源: 浏览:

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

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #图像处理matlab源码 659个

1 简介

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

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

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

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

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

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

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

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

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

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

算机视觉。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

科夫随机场的相关理论。

2 部分代码

%对图像进行分割 clc clear close all img = 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 (’原图’); end end

3 仿真结果

4 参考文献

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

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐