我正在尝试掩盖从检测器获取的数据集中的不良像素。为了尝试一种通用的方法来做到这一点,以便可以在不同的图像上运行相同的代码,我尝试了几种不同的方法,但是没有一个最终成功。我对使用Python进行编码和数据分析还很陌生,因此我可以用手把东西理解为计算机可以理解的术语。
作为示例,考虑矩阵
A = np.array([[3,5,50],[30,2,6],[25,1,1]])
我想做的是将A中与均值相差两个标准差的任何元素都设置为零。这样做的原因是,在代码的后面,我定义了一个仅使用非零值进行计算的函数,因为零是掩码的一部分。
我知道这种掩蔽技术有效,但是我尝试扩展以下代码以使用标准偏差:
mask = np.ones(np.shape(A))
mask.flat[A.flat > 20] = 0
我尝试过的是:
mask = np.ones(np.shape(A))
for i,j in A:
mask.flat[A[i,j] - 2*np.std(A) < np.mean(A) < A[i,j] + 2*np.std(A)]
哪个抛出错误:
[ValueError:太多值无法解包(预期2)
[如果有人拥有更好的技术来从统计学上去除图像中的不良像素,我将全神贯注。感谢您的帮助!
您的A是三维的,因此您需要使用以下三个变量来解压缩。
A = np.array([[3,5,50],[30,2,6],[25,1,1]])
for i,j,k in A:
# your code