使用像素统计信息进行遮罩

NoVa

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

引发错误:

ValueError:太多值无法解包(预期2)


如果有人能更好地从统计学上消除图像中的不良像素,我将不胜枚举。谢谢您的帮助!

==========

编辑

经过一番尝试和错误,我到达了一个可以帮助澄清我的问题的地方。新的代码是:

for i in A:
    for j in i:
        mask.flat[ j - 2*np.std(A) < np.mean(A) < j + 2*np.std(A)] = 0

这将引发错误,提示“不支持的迭代器索引”。我想要发生的是,for循环遍历数组中的每个元素,检查它是否小于/大于均值的2个标准差,并且将其设置为零。

翘曲

这是一种在较大图像上更快的方法:

import numpy as np
import matplotlib.pyplot as plt

# generate dummy image
a = np.random.randint(1,5, (5,5))
# generate dummy outliers
a[4,4] = 20
a[2,3] = -6

# initialise mask
mask = np.ones_like(a)

# subtract mean and normalise to standard deviation.
# then any pixel in the resulting array that has an absolute value > 2 
# is more than two standard deviations away from the mean
cond = (a-np.mean(a))/np.std(a)

# find those pixels and set them to zero.
mask[abs(cond) > 2] = 0

检查:

a
array([[ 1,  1,  3,  4,  2],
       [ 1,  2,  4,  1,  2],
       [ 1,  4,  3, -6,  1],
       [ 2,  2,  1,  3,  2],
       [ 4,  1,  3,  2, 20]])

np.round(cond, 2)
array([[-0.39, -0.39,  0.11,  0.36, -0.14],
       [-0.39, -0.14,  0.36, -0.39, -0.14],
       [-0.39,  0.36,  0.11, -2.12, -0.39],
       [-0.14, -0.14, -0.39,  0.11, -0.14],
       [ 0.36, -0.39,  0.11, -0.14,  4.32]])

mask 
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 0, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 0]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用BaasBox进行NoSQL统计信息类型查询-OrientDB 1.7.10

来自分类Dev

使用CSS进行图像遮罩

来自分类Dev

熊猫groupby对摘要统计信息进行排序

来自分类Dev

使用geom_bin2d叠加层与其他统计信息进行映射

来自分类Dev

如何使用python根据相关统计信息进行最佳分组?

来自分类Dev

使用统计模型进行预测

来自分类Dev

使用Powershell进行CSV统计

来自分类Dev

使用dplyr进行分组统计

来自分类Dev

使用Powershell进行CSV统计

来自分类Dev

使用精美汤获取统计信息

来自分类Dev

使用Gitolite提取/克隆统计信息

来自分类Dev

使用python获取Google App统计信息

来自分类Dev

如何使用统计信息正常分发数据

来自分类Dev

Gnuplot在for循环中使用统计信息

来自分类Dev

如何对列表的特定部分使用统计信息

来自分类Dev

使用stargazer输出摘要统计信息

来自分类Dev

使用NHL API提取玩家统计信息

来自分类Dev

如何使用Google Cloud Datastore统计信息

来自分类Dev

Gnuplot在for循环中使用统计信息

来自分类Dev

使用统计信息提供触摸的时间戳

来自分类Dev

使用libpcap收集连接统计信息

来自分类Dev

使用 graphql 从 github 提交统计信息

来自分类Dev

使用 PHP 和 SQL 生成统计信息

来自分类Dev

使用PIL进行像素编码

来自分类Dev

使用FabricJS进行像素处理

来自分类Dev

如何从Facebook的广告API获取像素/非现场转化统计信息?

来自分类Dev

使用preg_replace进行可变长度遮罩

来自分类Dev

使用遮罩时无法进行输入更改检测

来自分类Dev

使用AWK进行字数统计