exponenta event banner

anomalyRX

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

    Описание

    пример

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

    Примечание

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

    Примеры

    свернуть все

    Обнаружение аномальных пикселей в гиперспектральных данных путем вычисления показателя 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, выше которой пиксель является аномалией с достоверностью 99,8 процента.

    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-на-N-на-C, функция считывает его как гиперсектральный куб данных из M-на-N пикселей с C спектральными полосами и вычисляет оценку RX. Если входным значением является hypercube , функция считывает куб данных, хранящийся в DataCube и затем вычисляет оценку RX. Гиперспектральный куб данных должен быть действительным и не разреженным.

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

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

    свернуть все

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

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

    Алгоритмы

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

    DRX = (r мкС) TStartC 1 (r − мкС)

    r - тестируемый пиксель, а мкС и Λ С - спектральное среднее значение и ковариация соответственно. Аномальные пиксели обычно имеют высокие показатели RX.

    Можно оценить порог по кумулятивному распределению вероятности баллов RX для дальнейшей настройки обнаружения аномальных пикселей. См. пример «Обнаружение аномальных пикселей в гиперспектральных данных с помощью детектора RX».

    Ссылки

    [1] Тростник, I.S., и Кс. Ю. «Адаптивное многополосное обнаружение CFAR оптического шаблона с неизвестным спектральным распределением». IEEE Transactions on Acoustics, Speech and Signal Processing 38, No. 10 (October 1990): 1760-70. https://doi.org/10.1109/29.60107.

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

    См. также

    | |

    Представлен в R2020a