如何在matlab中使用具有原始图像轮廓的分割图像计算杰卡德指数

how to calculate Jaccard index using segmented image with contour of original iamge in matlab

我分割了图像,并使用此命令 imcontour(original_image,1) 获得了原始图像的轮廓,然后我使用此代码计算 matlab.I 中的 jaccard 索引是新的在matlab中请帮忙me.Here是我用过的代码

 function [jaccardIdx,jaccardDist] = jaccard_coefficient(img_Orig,img_Seg)  
   img_Orig = logical(img_Orig);
   img_Seg = logical(img_Seg);
   if ~islogical(img_Orig)
        error('Image must be in logical format');
   end
   if ~islogical(img_Seg)
        error('Image must be in logical format');
   end
   inter_image = img_Orig & img_Seg;
   union_image = img_Orig | img_Seg;
   jaccardIdx = sum(inter_image(:))/sum(union_image(:));
   jaccardDist = 1 - jaccardIdx;

但是在两张图片相交的时候出现错误,矩阵尺寸必须一致,我无法提前解决it.Thanks请帮助我。

阅读您的评论后,我了解到失败的原因是您使用了不同维度的矩阵:地面实况图像比分割图像大([121 167] vs [120 161]) .

一般来说,这些图像应该具有相同的大小,以便计算 ir jaccard 指数。您首先需要检查为什么会得到不同的尺寸。

如果你100%确定这不是bug,你可以根据ground truth的大小来调整分割图像的大小:

segImage = imresize(segImage,size(origImage));