I want to calculate the similarity between these two images:
and
These are brain topography maps and colors inside the circle represent the area being activated while watching TV. Thus I am looking for a metric which computes the similarity between original and reconstructed image taking into account how much they are similar with respect the "activated" areas. As you can see the two images are not very similar since, in the original image, the activated area is left-side while in the reconstructed one the activated area is right-side.
For doing that, I am combining both SSIM (scaled between 0 and 1) and MSE using this formula:
ssim = scaled_ssim(original_image, reconstructed_image) # between 0 and 1
mse = mean_squared_error(original_image, reconstructed_image)
score = ssim / (mse + 1)
where scaled_ssim
is defined as follows:
def scaled_ssim(original, reconstructed):
original = normalize(original)
reconstructed = normalize(reconstructed)
score = ssim(original, reconstructed, data_range=1, channel_axis=-1)
return (score + 1) / 2
And I am getting:
ssim on random test sample: 0.5712
mse on random test sample: 0.0004
score on random test sample: 0.5710
As you can notice, the score
is 0.5710
. Can you suggest me a metric which performs better, that is takes into account the activation areas of the "brain"?