image-similarity-measures icon indicating copy to clipboard operation
image-similarity-measures copied to clipboard

Multi-band image calculation FSIM is Nan value

Open MC1016 opened this issue 11 months ago • 4 comments

When the code calculates FSIM for multi-band data, the actual single-band results are averaged, and the calculations are all Nan-valued, even with my randomly generated matrices

MC1016 avatar Feb 26 '24 18:02 MC1016

The problem may be in the PC component; the 4th element of the PC is all zero, but I don't know why.

MC1016 avatar Feb 26 '24 19:02 MC1016

@MC1016 thanks for reporting. Can you share minimalist code to reproduce the issue?

seedlit avatar Feb 27 '24 11:02 seedlit

@MC1016 thanks for reporting. Can you share minimalist code to reproduce the issue? Yes can u try this thanks from image_similarity_measures.quality_metrics import fsim def mfsim(y, out): gts = y imgs = out big_res = []

for gt, img in zip(gts, imgs):
    assert gt.shape == img.shape
    res = []
    for ii in range(gt.shape[0]):
        gt_band = gt[ii, :, :][np.newaxis, :, :] * 255
        img_band = img[ii, :, :][np.newaxis, :, :] * 255
        gt_band = np.transpose(gt_band, (1,2,0))
        img_band = np.transpose(img_band, (1,2,0))
        # NOTE: FSIM expects dynamic range [0, 255]
        res.append(fsim(gt_band, img_band))
    big_res.append(np.mean(res))
return np.mean(big_res)

if name == 'main': ref = np.random.rand(1,1, 3, 3) tar = np.random.rand(1,1, 3, 3)

print(mfsim1(ref,tar))

MC1016 avatar Feb 27 '24 12:02 MC1016

data structure [batch,channel,x,y]

MC1016 avatar Feb 27 '24 12:02 MC1016