• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: 马尔科夫  

资源简介

马尔科夫随机场应用于图像分割,设计先验概率的简化计算以及高斯分布的矩阵计算

资源截图

代码片段和文件信息

A=imread(‘E:\0图像处理\0试验刀具图片\拍摄图片\2西飞(第2批)\前刀面(西飞整硬刀)\直径20,R10\6.bmp‘);
O=imrotate(A0‘bilinear‘‘crop‘);%旋转图像,线性插值
figureimshow(O);
title(‘旋转图,0‘);
F1=imcrop(O);%非交互式图像裁剪
figureimshow(F1);
title(‘裁剪区域[1440600200200]‘);
img = double(F1);
cluster_num = 3;%设置分类数
maxiter = 60;%最大迭代次数
%-------------随机初始化标签----------------
%label_c=repmat([1 2 3]size(img1)size(img2));
%label=label_c(:1:size(label_c2)/3);
label=randi([1cluster_num]size(img));%随机给出每一个像素点的类别(12...cluster_num类)
%-----------kmeans最为初始化预分割----------
%label=kmeans(img(:)cluster_num);
%label=reshape(labelsize(img));
iter = 0;
while iter < maxiter
    %-------计算先验概率---------------
    %这里我采用的是像素点和3*3领域的标签相同
    %与否来作为计算概率
    %------收集上下左右斜等八个方向的标签--------
    label_u = imfilter(label[010;000;000]‘replicate‘);%复制上边界
    label_d = imfilter(label[000;000;010]‘replicate‘);%复制下边界
    label_l = imfilter(label[000;100;000]‘replicate‘);%复制左边界
    label_r = imfilter(label[000;001;000]‘replicate‘);%复制右边界
    label_ul = imfilter(label[100;000;000]‘replicate‘);%左上角,复制上边界,左边界及左上角元素
    label_ur = imfilter(label[001;000;000]‘replicate‘);%右上角,复制上边界,右边界及右上角元素
    label_dl = imfilter(label[000;000;100]‘replicate‘);%左下角,复制左边界,下边界及左下角元素
    label_dr = imfilter(label[000;000;001]‘replicate‘);%右下角,复制右边界,下边界及右下角元素
    p_c = zeros(3size(label1)*size(label2));%size(label1)为label矩阵的行数,size(label2)为label矩阵的列数
    %计算像素点8领域标签相对于每一类的相同个数
    for i = 1:cluster_num
        label_i = i * ones(size(label));
        %通过相关获得8个相同尺寸的矩阵,然后采用某一类数字表示的矩阵对其做差取非运算,获得图像中每个像素点
        %8个方向上的标签取值(即与某一类是否相同)
        temp = ~(label_i - label_u) + ~(label_i 

评论

共有 条评论