Плохая коррекция пикселей в labVIEW? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть программа labVIEW, которая считывает длину волны и интенсивность спектров как функцию времени.Оборудование, на котором я читаю эти данные, использует микросхему ccd, и поэтому иногда я сталкиваюсь с плохими пикселями.Программа выводит 2d массив интенсивностей в текстовом файле.Я хочу написать отдельную программу, которая будет читать этот файл, а затем находить и устранять точки плохих пикселей.Плохие пиксели должны быть очевидны, так как интенсивности в 10 раз больше, чем точки вокруг них.Как известно тем из вас, кто знаком с labVIEW, вы можете вставить узел формулы и код на языке, который в основном является C. Поэтому я пометил это как C, так и labVIEW.

1 Ответ

0 голосов
/ 11 июня 2018

Попробуйте использовать медианный или процентильный фильтр.Поскольку вы не хотите на самом деле изменять данные, если это не так, вы можете сделать что-то вроде этого:

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, выполняющий фильтр, который я описал:

Intensity Filter Using Outliers

Если вы хотите изменить только более экстремальные выбросызатем увеличьте множитель IQR.

...