我有分割图像,我使用这个命令imcontour(original_image,1)得到原始图像的轮廓然后我用这个代码来计算matlab中的jaccard索引。我是matlab的新手请帮助我。这是我用过的代码
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;
但是在2张图片相交时,错误就是Matrix尺寸必须达成一致,我无法解决。谢谢提前帮助我。
答案 0 :(得分:0)
阅读完您的评论后,我了解失败的原因是您使用的是不同尺寸的矩阵:地面实况图像大于分割图像([121 167] vs [120 161])。< / p>
通常,这些图像应具有相同的大小,以便计算ir jaccard索引。你需要检查为什么你首先得到不同的尺寸。
如果您100%确定它不是错误,您可以根据基本事实的大小执行分割图像的大小调整:
segImage = imresize(segImage,size(origImage));