anomalyRX

Обнаружение аномалий с помощью детектора Рида-Сяоли

    Описание

    пример

    rxScore = anomalyRX(inputData) обнаруживает аномальные пиксели в гиперспектральных данных с помощью детектора Рида-Xialoi (RX). Детектор RX вычисляет счет для каждого пикселя как расстояние Махаланобиса между пикселем и фоном. Более высокий счет указывает на вероятную аномалию. Фон характеризуется спектральным средним и ковариацией куба данных. Для получения дополнительной информации об вычислении счета и обнаружении аномалий, см. Алгоритмы.

    Примечание

    Эта функция требует библиотеки Image Processing Toolbox™ гиперспектральной визуализации. Можно установить библиотеку Image Processing Toolbox Hyperspectral Imaging Library из Add-On Explorer. Дополнительные сведения об установке дополнений см. в разделе Получение и управление Дополнений.

    Примеры

    свернуть все

    Обнаружение аномальных пикселей в гиперспектральных данных путем вычисления счета RX для каждого пикселя в кубе гиперспектральных данных. Затем вычислите порог для обнаружения истинных аномальных пикселей с помощью совокупного распределения вероятностей RX значений баллов.

    Считайте гиперспектральные данные, содержащие аномальные пиксели, в рабочую область.

    hcube = hypercube('indian_pines.dat');

    Найдите аномальные пиксели в входе гиперспектральных данных с помощью RX-детектора. Детектор ищет пиксели с высоким различием интенсивности в однородной области.

    rxScore = anomalyRX(hcube);

    Уменьшите динамическую область значений RX- значений баллов путем преобразования их в область значений [0, 255].

    rxScore = im2uint8(rescale(rxScore));

    Отобразите карту счета RX. Пиксели с высоким счетом RX, вероятно, являются аномальными пикселями.

    figure
    imagesc(rxScore)
    colorbar

    Вычислите и постройте график совокупного распределения вероятностей RX- значений баллов.

    count = imhist(rxScore);
    pdf = count/prod(size(rxScore,[1 2]));
    cdf = cumsum(pdf(:));
    figure
    plot(cdf)
    xlabel('RX Score')
    ylabel('Cumulative Probability Values')

    Установите значение доверительного коэффициента 0,998. Выберите первый счет RX с совокупным значением распределения вероятностей, большим, чем доверительный коэффициент, в качестве порога. Этот порог представляет счет RX, выше которого пиксель является аномалией с доверия.

    confCoefficient = 0.998;
    rxThreshold = find(cdf > confCoefficient,1);

    Применить пороговое значение для обнаружения аномальных пикселей с счетом RX, большим, чем вычисленный порог. Результатом является бинарное изображение, в которой аномальным пикселям присваивается значение интенсивности 1, а другим пикселям присваивается 0.

    bw = rxScore > rxThreshold;

    Вывод версии RGB куба данных с помощью colorize функция. Наложите бинарное изображение аномальных пикселей на изображение RGB.

    rgbImg  = colorize(hcube,'Method','rgb');
    B = imoverlay(rgbImg,bw);

    Отобразите как бинарное изображение, так и наложенное изображение.

    fig = figure('Position',[0 0 800 400]);
    axes1 = axes('Parent',fig,'Position',[0 0.1 0.5 0.8]);
    imagesc(bw,'Parent',axes1);
    title('Detected Anomalous Pixels')
    axis off
    colormap gray
    axes2 = axes('Parent',fig,'Position',[0.5 0.1 0.5 0.8]);
    imagesc(B,'Parent',axes2)
    title('Overlaid Image');
    axis off  

    Входные параметры

    свернуть все

    Входные гиперспектральные данные, заданные как 3-D числовой массив или hypercube объект. Если вход является 3-D числовым массивом размера M -by- N -by- C, функция читает его как гиперспектральный кубик данных M -by- N пикселей с C спектральными полосами и вычисляет счет RX. Если вход является hypercube объект, функция считывает кубик данных, хранящийся в DataCube Свойство и затем вычисляет счет RX. Гиперспектральный кубик данных должен быть вещественным и не разреженным.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Выходные аргументы

    свернуть все

    Выход оценки RX для каждого пикселя в кубе гиперспектральных данных, возвращенный как матрица размера M -by- N, такой же как и пространственные размерности входных данных.

    Типы данных: double

    Алгоритмы

    RX- счета для каждого пикселя вычисляется как

    DRX=(rμC)TΣC1(rμC)

    r является тестируемым пикселем, и μ C и Σ C являются спектральным средним и ковариационным соответственно. Аномальные пиксели обычно имеют высокие счета RX.

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

    Ссылки

    [1] Рид, I.S., и X. Yu. «Адаптивное многополосное CFAR-обнаружение оптического шаблона с неизвестным спектральным распределением». Транзакции IEEE по акустике, речи и обработке сигналов 38, № 10 (октябрь 1990): 1760-70. https://doi.org/10.1109/29.60107.

    [2] Чин-И Чан и Шао-Шань Чан. «Обнаружение аномалий и классификация для гиперспектральных изображений». Транзакции ИЭЭЭ по вопросам геологии и дистанционного зондирования 40, № 6 (июнь 2002 года): 1314-25. https://doi.org/10.1109/TGRS.2002.800280.

    См. также

    | |

    Введенный в R2020a
    Для просмотра документации необходимо авторизоваться на сайте