how to compare ground truth image with segmented image?

2 次查看(过去 30 天)
BW2=imread('C2.png'); %segmented image
figure,imshow(BW2)
BW=imread('001_mask.png'); %groundtruth-image
figure,imshow(BW)
% mask = false(size(BW2));
% mask(25:end-25,25:end-25) = true;
% BW = activecontour(BW2, mask, 300);
similarity = jaccard (BW2, BW)
figure
imshowpair(BW2, BW)
title(['Jaccard Index = ' num2str(similarity)])
I am trying to find accuracy but got an error.
Undefined function 'jaccard' for input arguments of type 'uint8'.
Error in Untitled (line 8)
similarity = jaccard (BW2, BW)
what will be changed in this code?
  2 个评论
Adam
Adam 2019-7-29
编辑:Adam 2019-7-29
Do you have the Image Processing Toolbox and are you using R2017b or later (it does help a lot if you fill in the Products and Release section of the question)? What does
which jaccard
show?
Arslan Ahmed Awan
Arslan Ahmed Awan 2019-10-22
You have to Install MATLAB R2017b because jaccard was introduced in Image Processing Toolbox of R2017b.

请先登录,再进行评论。

回答(2 个)

Constantino Carlos Reyes-Aldasoro
Jaccard index is the intersection (BW.*BW2) over the union (BW|BW2) or ((BW+BW2)>0), so you can calculate directly like this
sum(sum( BW.*BW2)) / sum(sum( BW|BW2))
Accuracy is different, that is how many pixels are exactly the same (including background)
sum(sum(BW==BW2)) / prod(size(BW))

Leandro Hidalgo Torres
Hi,
Jaccard needs their arguments to be logical type. Check the data type of BW and BW2, surely they are uint8 type. If it's true, use BW=logical(BW) and the problem will be solved,
Best regards,
LH

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by