errors In scikit-image metrics on 1D array

46 Views Asked by At

I am trying to explore different skimage metrics on 1D array . I have two array noisy signal and clean signal. Code snippet is given below .

import numpy as np 
import skimage.metrics as M
clean_signal = np.arange(1,10, .1)
noisy_signal = clean_signal+np.random.normal(0,1,90)
M.mean_squared_error(noisy_signal, clean_signal)
M.peak_signal_noise_ratio(noisy_signal, clean_signal)
M.variation_of_information(noisy_signal, clean_signal)

Metrics which are given in code snippet are giving following errors . For adapted_rand_error and variation_of_information I get Error

TypeError: 'numpy.float64' object cannot be interpreted as an integer 

and for peak_signal_noise_ratio I get error

ValueError: image_true has intensity values outside the range expected for its data type. Please manually specify the data_range.

I would like to know how to fix these errors.

Thanks in advance

1

There are 1 best solutions below

3
FlyingTeller On BEST ANSWER

From the documentation, the function skimage.metrics.variation_of_information only accepts integer images:

skimage.metrics.variation_of_information(image0=None, image1=None, *, table=None, ignore_labels=())
(...)
Parameters:
image0, image1
ndarray of int Label images / segmentations, must have same shape.

The same is true for adapted_rand_error

For your other function, the error message is already telling you much. If we check the documentation again, you can see that the call signature is

skimage.metrics.peak_signal_noise_ratio(image_true, image_test, *, data_range=None)

You are supposed to specify the data_range parameter, in your case (min(noisy_signal ),max(noisy_signal )) should do