我有一个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片段,执行了我描述的过滤器:

c - labVIEW中的像素校正不良?-LMLPHP

如果只想更改更极端的异常值,则增加IQR乘数。

关于c - labVIEW中的像素校正不良?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50651344/

10-12 17:46