我有一个labVIEW程序,该程序读取光谱的波长和强度作为时间的函数。我读取此数据的硬件使用CCD芯片,因此有时会遇到不良像素。程序在文本文件中输出强度的二维数组。我想编写一个单独的程序,该程序将读取此文件,然后查找并消除不良像素点。坏像素应该很明显,因为强度比周围的点大10倍。正如熟悉labVIEW的人所知道的那样,您可以插入公式节点并使用基本上是C的语言进行编码。因此,我已经用C和labVIEW对其进行了标记。
最佳答案
尝试使用中位数或百分位数过滤器。由于您不希望实际更改数据,除非它不在那儿,所以您可以执行以下操作:
for every point, collect *rank* points around it in every direction
compute statistics on the subset of points
if point is an outlier, replace with median value
这样,除非该点的值很远,否则您实际上不会替换它。如果点大于
Q3 + 1.5 IQR
或小于Q1 - 1.5 IQR
,则该点将是异常值。这是一个VI片段,执行了我描述的过滤器:
如果只想更改更极端的异常值,则增加IQR乘数。
关于c - labVIEW中的像素校正不良?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50651344/