使用像素统计信息进行伪装

问题描述 投票:0回答:1

我正在尝试掩盖从检测器获取的数据集中的不良像素。为了尝试一种通用的方法来做到这一点,以便可以在不同的图像上运行相同的代码,我尝试了几种不同的方法,但是没有一个最终成功。我对使用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)


[如果有人拥有更好的技术来从统计学上去除图像中的不良像素,我将全神贯注。感谢您的帮助!

python numpy image-processing data-analysis masking
1个回答
0
投票

您的A是三维的,因此您需要使用以下三个变量来解压缩。

A = np.array([[3,5,50],[30,2,6],[25,1,1]])
for i,j,k in A:
    # your code
© www.soinside.com 2019 - 2024. All rights reserved.