Matlab图像分割---使用dice相似系数方法进行图像分割精度验证

本文通过两个实例介绍了如何使用dice相似系数来评估图像分割的效果。实例1展示了在二值图像分割中计算dice系数的过程,通过主动轮廓方法分割图像并与真实分割图像比较。实例2探讨了多区域分割图像的dice相似系数计算,利用测地距离颜色分割方法对多区域图像进行分割,并与真实分割结果对比。dice系数在[0,1]范围内,值越接近1表示分割结果与真实情况越吻合。
摘要由CSDN通过智能技术生成

实例1:计算二值分割图像的dice相似系数

实例2:计算多区域分割图像的dice相似系数

本例程的配套完整源码和图片素材下载

描述:

similarity = dice(BW1,BW2) 计算二进制图像BW1BW2之间的Sørensen-Dice相似系数(BW为二值图像

similarity = dice(L1,L2) 计算标签图像L1L2中的每个标签的Dice索引(L为标签图像

similarity = dice(C1,C2) 计算分类图像C1和 C2中的每个类别的Dice索引(C为分类图像

 

实例1:计算二值分割图像的dice相似系数

close all;clear all;
A = imread('hands1.jpg');%读取一张带有对象的RGB图像以进行分割
I = im2gray(A);%将RGB图像A转换为灰度图像I
figure
imshow(I)%显示灰度图像I
title('Original Image')%添加标签
%使用主动轮廓(snakes)方法去分割这只手
mask = false(size(I));%创建一个与图像I一样尺寸大小的值都为0(纯黑)的图像mask
%调整mask区域值,x轴为(25~X_max_size-25),y轴为(25~Y_max_size-25)的区域赋值为1(纯白)
mask(25:end-25,25:end-25) = true;
BW = activecontour(I, mask, 300);%调用activecontour函数,默认300次迭代进行图像I的分割
figure
imshow(BW)%显示活动轮廓分割后的二值图像BW
title('Activecontour_segmentation Image')%添加标签

BW_groundTruth = imread('hands1-mask.png');%读取一张真实分割了的手的二值图像
%计算活动轮廓分割后的图像BW与真实分割图像BW_groundTruth之间的dice相似系数
similarity = dice(BW, BW_groundTruth);%调用dice函数
figure
imshowpair(BW, BW_groundTruth)%以不同颜色显示图像BW和BW_groundTruth
title(['Dice Index = ' num2str(similarity)])%添加标签,显示dice相似系数

        

                        输入初始图像I                   活动轮廓(300次迭代)分割图像BW         比较两张图像(BW和BW_groundTruth)的相似系数

将活动轮廓方法的迭代次数设定为100、500、3000次时效果分别为:

         

   比较两张图像的相似系数(100次迭代)                 比较两张图像的相似系数(500次迭代)            比较两张图像的相似系数(3000次迭代)

注:BW_groundTruth 为真实分割了的手的二值图像

注:关于基于Matlab的主动轮廓 (snake) 方法进行图像分割介绍及实例效果前点击

实例2:计算多区域分割图像的dice相似系数

%计算多区域分割图像的dice相似系数
%这个例子展示了读取一幅有多个区域要分割的图像,然后将其分割到多个区域
%并计算每个区域的dice相似系数
close all;clear all;
RGB = imread('yellowlily.jpg');%读取一张RGB图像
figure,
imshow(RGB)
title('Original Image')%添加标签
%创建三个区域的涂鸦,以区分他们的典型颜色特征,区域由一个4元素的向量指定
%其元素表示(选取区域ROI左上角的x坐标,选取区域ROI左上角的y坐标,ROI的宽度,ROI的高度)

%创建区域1,将黄花进行分类
region1 = [350 700 425 120]; %区域1 [x y w h] format
BW1 = false(size(RGB,1),size(RGB,2));%创建一个与RGB图像一样尺寸的值都为0(纯黑)的图像BW1
%将BW1图像中region1区域范围值赋值为1(纯白)
BW1(region1(2):region1(2)+region1(4),region1(1):region1(1)+region1(3)) = true;
figure,
imshow(BW1)
title('Seed Regions 1:黄花')%添加标签

%创建区域2,将绿色的茎和叶进行分类
region2 = [800 1124 120 230];%区域2
BW2 = false(size(RGB,1),size(RGB,2));%创建一个与RGB图像一样尺寸的值都为0(纯黑)的图像BW2
%将BW2图像中region2区域范围值赋值为1(纯白)
BW2(region2(2):region2(2)+region2(4),region2(1):region2(1)+region2(3)) = true;
figure,
imshow(BW2)
title('Seed Regions 2:绿色的茎和叶')%添加标签

%创建区域3,对棕色的污物进行分类
region3 = [20 1320 480 200; 1010 290 180 240];%区域3(两个独立小块组成) 
BW3 = false(size(RGB,1),size(RGB,2));%创建一个与RGB图像一样尺寸的值都为0(纯黑)的图像BW3
%将BW3图像中region3区域范围值赋值为1(纯白)
BW3(region3(1,2):region3(1,2)+region3(1,4),region3(1,1):region3(1,1)+region3(1,3)) = true;
BW3(region3(2,2):region3(2,2)+region3(2,4),region3(2,1):region3(2,1)+region3(2,3)) = true;
figure,
imshow(BW3)
title('Seed Regions 3:棕色的污物')%添加标签

figure,
imshow(RGB)%显示图像RGB
hold on
%visboundaries(BW)表示在当前轴上绘制二进制图像BW中前景区域的边界。 
%BW是二维的二进制图像,其中逻辑为真的像素属于前景区域,逻辑为假的像素构成背景
visboundaries(BW1,'Color','r');%在RGB图像上以红色显示种子区域图像BW1的前景区域
visboundaries(BW2,'Color','g');%在RGB图像上以绿色显示种子区域图像BW2的前景区域
visboundaries(BW3,'Color','b');%在RGB图像上以蓝色显示种子区域图像BW3的前景区域
title('Seed Regions')%添加标签

%对选取了三个种子区域的图像RGB使用基于测地距离的颜色分割方法进行分割
L = imseggeodesic(RGB,BW1,BW2,BW3,'AdaptiveChannelWeighting',true);
%读取一张真实分割了的二值图像
L_groundTruth = double(imread('yellowlily-segmented.png'));
%直观比较基于测地距离的颜色分割和真实分割图像结果,label2rgb(L)根据标记矩阵L转换为不同颜色的RGB图像
Z = label2rgb(L);
D = label2rgb(L_groundTruth);
figure,
imshow(Z)
title('基于测地距离的颜色方法分割结果')%添加标签

figure,
imshow(D)
title('真实分割了的分割结果')%添加标签
% montage({label2rgb(L),label2rgb(L_groundTruth)})%将两张标签图像进行单副显示
% title('Comparison of Segmentation Results (Left) and Ground Truth (Right)')

%计算每个分割区域的dice相似系数
similarity = dice(L, L_groundTruth)

         

              区域1(Seed Regions 1)                       区域2(Seed Regions 2)                          区域3(Seed Regions 3) 

  

                     输入初始图像I                      各区域对应输入图像位置图像

           

 基于测地距离的颜色方法分割结果图            真实分割了的分割结果图        各分割区域的dice相似系数(分别对应区域1-3)

结论:可见第二个区域的dice相似系数明显较小。这一结果与分割结果的视觉对比是一致的,分割结果错误地将图像右下角的污垢也分类为绿叶

 

注:

1、dice相似系数,以数值标量数值向量的形式返回,其值在[0,1]范围内。相似系数( similarity )为1所表示的是,在两个图像中的分割是一个完美的匹配。

2、如果输入数组是二进制图像,相似系数( similarity )是一个标量

3、如果输入数组是标签图像,相似系数( similarity )是向量,其中第一个系数是标签1的Dice索引,第二个系数是标签2的Dice索引,依此类推。

4、如果输入数组是分类图像,相似系数( similarity )是向量,其中第一个系数是第一类的Dice索引,第二个系数是第二类的Dice索引,依此类推

参考链接

 

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦我飞也

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值