Jal*_*alo 5 python image-processing
我正在过滤图像,我想知道SNR.我尝试使用scipy函数scipy.stats.signaltonoise(),但我得到了一组数字,我真的不知道我得到了什么.
有没有其他方法可以获得我的图像的信噪比?
更新:(对于那些没有在评论中阅读链接材料的人)该scipy.stats.signaltonoise功能已被弃用并删除。在链接的github线程中,您可以找到自己实现的原始配方:
def signaltonoise(a, axis=0, ddof=0):
a = np.asanyarray(a)
m = a.mean(axis)
sd = a.std(axis=axis, ddof=ddof)
return np.where(sd == 0, 0, m/sd)
Run Code Online (Sandbox Code Playgroud)
原答案:
您返回数组而不是单个数字的原因是因为您没有axis=None在调用scipy.stats.signaltonoise.
因此,你可能需要这个:
snr = scipy.stats.signaltonoise(img, axis=None)
Run Code Online (Sandbox Code Playgroud)
如果没有该选项,您将获得图像中每一列的 SNR。当数据实际上不是图像,而是例如时间信号序列时,这很有意义。