我有一个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/