How do I compare two images?

12 views (last 30 days)
Stelios Fanourakis
Stelios Fanourakis on 18 Mar 2019
Hi
I have two images.
A6(alg).jpg
One was manually segmented and the other used an automated method. Both images segments the same interface, but the automated is cropped for faster computation.
I am looking for a method, to compare the two images, so I can estimate the accuracy of the automated segmentation. How can I compare them? E.g. how can I find whether the red pixels locations at both images are the same. If not, how do I define their differences?
Any ideas?
Thank you

Answers (2)

Walter Roberson
Walter Roberson on 18 Mar 2019
In the case where the two images are to the same scale, then use xcorr2 to find the place where the second image best fits into the first, after which you can do whatever comparisons using indexing.
If the images are not the same scale (e.g., the second one looks like it might be higher resolution) then you would need to do image registration in order to find the best match.
  5 Comments
Stelios Fanourakis
Stelios Fanourakis on 19 Mar 2019
Yes please, send me the demo.
Stelios Fanourakis
Stelios Fanourakis on 19 Mar 2019
@Walter. Since the two images, I need to compare are not of the same dimensions, I used imregister
imshowpair(a,e)
>> [optimizer,metric] = imregconfig('multimodal');
>> movingRegisteredDefault = imregister(a,e,'affine',optimizer,metric);
imshowpair(a,e) works fine but imregister not. I get the error
Error using imregtform>parseInputs (line 268)
The value of 'MovingImage' is invalid. All dimensions of the moving image should be greater than 4.
Error in imregtform (line 124)
parsedInputs = parseInputs(varargin{:});
Error in imregister (line 119)
tform = imregtform(varargin{:});
What does that mean?

Sign in to comment.


Image Analyst
Image Analyst on 18 Mar 2019
You have two ways of computing the segmentation. Which do YOU consider to be more accurate? If you want to compute accuracy, you must have some ground truth - some segmentation that YOU DEFINE to be the absolutely 100% correct answer. I'm assuming you think the manually traced one is the ground truth and want to see how well the automatic algorithm matches the manual one. To do that, you first need to crop out the regions so that both images have the same field of view (all corners point to the same physical points in the subject/sample in both images). Now you can crop the segmented (binary) images the same way and compare them with a similarity index, for example, the Sørensen–Dice coefficient or friends. See this link.
  4 Comments
Stelios Fanourakis
Stelios Fanourakis on 19 Mar 2019
@Image Analyst
I tried your Dice suggestion and after converting the images to double I got those results.
How do I interpret them to similiarity index? Does 0 mean no similarity and anything above it, it has a degree of similarity?? What are those numbers?
Finally, in the overall images, how do I know the similarity index for only the red pixels of the contour?
>> similarity = dice(w,q);
>> disp(similarity)
0
0
0
0
0
0
0
0
0
0.0055
0
0.0050
0
0
0
0
0
0
0
0
0
0
0
0.0023
0
0
0
0.0017
0.0011
0.0020
0.0025
0.0005
0.0013
0.0060
0.0017
0.0043
0.0025
0.0008
0.0012
0.0016
0.0023
0.0088
0.0016
0.0020
0.0032
0.0046
0.0026
0.0015
0.0058
0.0081
0.0041
0.0033
0.0034
0
0.0031
0.0068
0.0010
0.0069
0.0020
0.0021
0.0041
0.0070
0.0017
0.0070
0.0018
0.0015
0.0006
0.0038
0.0012
0.0026
0.0027
0.0041
0.0035
0.0046
0.0008
0
0.0041
0.0033
0.0034
0.0028
0.0064
0.0019
0
0.0010
0.0049
0.0075
0.0050
0.0035
0.0013
0.0032
0.0034
0.0011
0.0026
0.0039
0.0012
0.0012
0.0011
0.0069
0.0011
0
0.0010
0.0032
0.0048
0
0
0.0159
0.0014
0.0013
0.0014
0.0014
0.0076
0.0011
0.0053
0.0026
0.0013
0.0106
0.0013
0.0080
0.0131
0
0
0.0040
0.0051
0
0
0.0012
0.0024
0
0.0051
0.0040
0.0051
0.0025
0.0012
0.0013
0.0024
0.0098
0.0047
0
0
0
0.0039
0
0.0013
0.0013
0.0049
0.0013
0.0012
0.0014
0.0013
0
0
0
0.0042
0.0014
0
0
0.0040
0.0038
0.0065
0
0
0.0043
0.0085
0
0.0013
0.0042
0
0.0016
0.0046
0
0.0045
0
0
0
0
0
0
0.0016
0.0049
0.0050
0.0018
0
0.0019
0
0.0053
0
0
0
0
0
0.0065
0
0
0
0
0
0
0
0
0.0024
0.0075
0
0
0
0
0
0
0.0078
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0.1467
Stelios Fanourakis
Stelios Fanourakis on 19 Mar 2019
@Image Analyst.
As I came to realize, imregister works for grayscale images only and it won't allow me to use the red channel for the contour.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!