exponenta event banner

поэтапный. CFARDetector2D

Двухмерный детектор CFAR

Описание

phased.CFARDetector2D Система object™ реализует постоянный детектор частоты ложных аварийных сигналов (CFAR) для выбранных элементов (называемых ячейками) двумерных данных изображения. Обнаружение объявляется, когда значение ячейки изображения превышает пороговое значение. Для поддержания постоянной частоты ложных аварийных сигналов пороговое значение устанавливается кратным мощности шума изображения. Детектор оценивает мощность шума для тестируемой ячейки (CUT) из окружающих ячеек, используя один из трех способов усреднения ячеек или способ статистики порядка. Способы усреднения клеток представляют собой усреднение клеток (CA), наибольшее усреднение клеток (GOCA) или наименьшее усреднение клеток (SOCA).

Для каждой испытательной ячейки детектор:

  1. оценивает статистику шума по значениям ячеек в обучающем диапазоне, окружающем соту CUT.

  2. вычисляет пороговое значение путем умножения оценки шума на пороговый коэффициент.

  3. сравнивает значение ячейки CUT с пороговым значением для определения наличия или отсутствия цели. Если значение больше порогового значения, то присутствует целевой объект.

Запуск детектора

  1. Определите и настройте детектор 2-D CFAR. Можно установить phased.CFARDetector2D Свойства системного объекта при создании объекта или оставить для них значения по умолчанию. См. раздел Строительство. Некоторые свойства, заданные во время конструирования, могут быть изменены позже. Эти свойства можно настроить.

  2. Найдите обнаруженные угрозы, позвонив в step способ. Выходные данные этого метода зависят от свойств phased.CFARDetector2D Системный объект.

Примечание

В качестве альтернативы вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

detector = phased.CFARDetector2D создает системный объект детектора 2-D CFAR, detector.

detector = phased.CFARDetector2D(Name,Value) создает системный объект 2-D CFAR, detector, с каждым указанным свойством Name установить в указанное значение Value. Можно указать дополнительные аргументы пары имя-значение в любом порядке как (Name1,Value1,...,NameN,ValueN).

Свойства

развернуть все

Метод двухмерного усреднения CFAR, указанный как 'CA', 'GOCA', 'SOCA', или 'OS'. Для 'CA', 'GOCA', 'SOCA'мощность шума представляет собой среднее значение выборки, полученное из обучающей полосы. Для 'OS'мощность шума является значением k-ой ячейки, полученным из численного упорядочения всех значений обучающей ячейки. Установить k с помощью Rank собственность.

Метод усредненияОписание
CA - Алгоритм усреднения ячеек

Вычисляет среднее значение выборки всех обучающих ячеек, окружающих ячейку CUT.

GOCA - Алгоритм наибольшего усреднения ячеек

Разделение 2-D учебного окна, окружающего ячейку CUT, на левую и правую половины. Затем алгоритм вычисляет среднее значение выборки для каждой половины и выбирает наибольшее среднее значение.

SOCA - Алгоритм усреднения наименьших ячеек

Разделение 2-D учебного окна, окружающего ячейку CUT, на левую и правую половины. Затем алгоритм вычисляет среднее значение выборки для каждой половины и выбирает наименьшее среднее значение.

OS - Алгоритм статистики порядка

Сортировка обучающих ячеек в порядке возрастания числовых значений. Затем алгоритм выбирает значение k из списка. k - ранг, указанный Rank параметр.

Пример: 'OS'

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

Количество строк и столбцов ячеек защитной полосы на каждой стороне ячейки CUT, указанных как неотрицательные целые числа. Первый элемент определяет размер защитной полосы вдоль размера строки. Второй элемент определяет размер защитной полосы вдоль размера столбца. Задание этого свойства в виде одного целого числа эквивалентно заданию защитной полосы с одинаковым значением для обоих размеров. Например, значение [1 1], указывает, что имеется одна область для всей защитной ячейки, окружающая каждую соту CUT. Нулевое значение указывает на отсутствие защитных ячеек.

Пример: [2 3]

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

Количество строк и столбцов ячеек обучающей полосы на каждой стороне ячейки CUT, указанное как положительное целое число или матрица положительных целых чисел 1 на 2. Первый элемент определяет размер обучающей области вдоль размера строки. Второй элемент определяет размер обучающей области вдоль размера столбца. Задание этого свойства в качестве скаляра эквивалентно заданию обучающей полосы с одинаковым значением для обоих измерений. Например, значение [1 1] указывает область в пределах всей обучающей ячейки 1, окружающую соту CUT.

Пример: [-30:0.1:30]

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

Ранг статистики порядка, используемой в алгоритме 2-D CFAR, определяемый как положительное целое число. Значение этого свойства должно лежать между 1 и Ntrain, где Ntrain - количество тренировочных ячеек. Значение 1 выбирает наименьшее значение в области обучения.

Пример: 5

Зависимости

Чтобы включить это свойство, установите значение Method свойство для 'OS'.

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

Метод порогового коэффициента, указанный как 'Auto', 'Input port', или 'Custom'.

При установке ThresholdFactor свойство для 'Auto', пороговый коэффициент рассчитывается из желаемой вероятности ложной тревоги, установленной в ProbabilityFalseAlarm собственность. Вычисление предполагает, что каждый независимый сигнал на входе является единственным импульсом, выходящим из детектора квадратного закона без интегрирования импульсов. Кроме того, предполагается, что шум является белым гауссовым.

При установке ThresholdFactor свойство для 'Input port', пороговый коэффициент получается из входного аргумента step способ.

При установке ThresholdFactor свойство для 'Custom', пороговый коэффициент получается из значения CustomThresholdFactor собственность.

Пример: 'Custom'

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

Требуемая вероятность ложной тревоги, заданная как действительный положительный скаляр между 0 и 1. Алгоритм вычисляет пороговый коэффициент по требуемой вероятности ложной тревоги.

Пример: 0.001

Зависимости

Чтобы включить это свойство, установите значение ThresholdFactor свойство для 'Auto'.

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

Пользовательский пороговый коэффициент, заданный как действительный положительный скаляр. Это свойство можно настроить.

Зависимости

Чтобы включить это свойство, установите значение ThresholdFactor свойство для 'Custom'.

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

Формат результатов обнаружения, возвращенных step метод, указанный как 'CUT result' или 'Detection index'.

  • Если установлено значение 'CUT result', результаты являются логическими значениями обнаружения (1 или 0) для каждой тестируемой ячейки.

  • Если установлено значение 'Detection index'результаты образуют вектор или матрицу, содержащую индексы тестируемых клеток, которые превышают порог обнаружения. Этот формат можно использовать в качестве входных данных для phased.RangeEstimator и phased.DopplerEstimator Системные объекты.

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

Параметр для включения вывода пороговых значений обнаружения, указанный как false или true. Установка для этого свойства значения true возвращает порог обнаружения через выходной аргумент, th, из step способ.

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

Опция для включения вывода мощности шума, указанная как false или true. Установка для этого свойства значения true возвращает мощность шума через выходной аргумент, noise, из step способ.

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

Источник количества обнаружений, указанный как 'Auto' или 'Property'. При установке для этого свойства значения 'Auto', количество сообщенных индексов обнаружения - это общее число проверяемых ячеек, имеющих обнаруженные ячейки. Если для этого свойства задано значение 'Property', количество зарегистрированных обнаружений определяется значением NumDetections собственность.

Зависимости

Чтобы включить это свойство, установите значение OutputFormat свойство для 'Detection index'.

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

Максимальное число индексов обнаружения для отчета, указанное как положительное целое число.

Зависимости

Чтобы включить это свойство, установите значение OutputFormat свойство для 'Detection index' и NumDetectionsSource свойство для 'Property'.

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

Методы

сбросСброс состояний объекта System
шагДвухмерное обнаружение CFAR
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

В этом примере показано, как установить пороговое значение 2-D CFAR на основе требуемой вероятности ложного аварийного сигнала (pfa).

Примечание.Каждый вызов функции можно заменить эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

Выполнение обнаружения CFAR с усреднением ячеек на матрице 41 на 41 ячеек, содержащих гауссовый шум. Оцените эмпирический pfa и сравните его с требуемым pfa. Чтобы получить хорошую оценку, выполните это моделирование для 1000 аналогичных матриц. Сначала задайте пороговое значение, используя требуемый pfa. В этом случае нет мишеней, и pfa можно оценить по количеству клеток, которые превышают порог. Предположим, что данные обрабатываются с помощью квадратного детектора и что интеграция импульсов не выполняется. Используйте полосу обучающих ячеек шириной 3 ячейки и высотой 4 ячейки. Используйте защитную полосу из 3 ячеек в ширину и 2 ячеек в высоту, чтобы отделить тестируемые ячейки (CUT) от тренировочных ячеек. Укажите требуемый pfa 5,0e-4.

p = 5e-4;
rs = RandStream.create('mt19937ar','Seed',5);
N = 41;
ntrials = 1000;
detector = phased.CFARDetector2D('TrainingBandSize',[4,3], ...
    'ThresholdFactor','Auto','GuardBandSize',[2,3], ...
    'ProbabilityFalseAlarm',p,'Method','SOCA','ThresholdOutputPort',true);

Создайте изображение 41 на 41, содержащее случайные комплексные данные. Затем выполните возведение данных в квадрат для моделирования квадратного детектора.

x = 2/sqrt(2)*(randn(rs,N,N,ntrials) + 1i*randn(rs,N,N,ntrials));
x2 = abs(x).^2;

Обработайте все ячейки в каждом изображении. Для этого найдите строку и столбец каждой ячейки CUT, область обучения которой полностью находится внутри каждого изображения.

Ngc = detector.GuardBandSize(2);
Ngr = detector.GuardBandSize(1);
Ntc = detector.TrainingBandSize(2);
Ntr = detector.TrainingBandSize(1);
cutidx = [];
colstart = Ntc + Ngc + 1;
colend = N - ( Ntc + Ngc);
rowstart = Ntr + Ngr + 1;
rowend = N - ( Ntr + Ngr);
for m = colstart:colend
    for n = rowstart:rowend
        cutidx = [cutidx,[n;m]];
    end
end
ncutcells = size(cutidx,2);

Отображение ячеек CUT.

cutimage = zeros(N,N);
for k = 1:ncutcells
    cutimage(cutidx(1,k),cutidx(2,k)) = 1;
end
imagesc(cutimage)
axis equal

Figure contains an axes. The axes contains an object of type image.

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

[dets,th] = detector(x2,cutidx);

Найдите и отобразите изображение с ложным сигналом тревоги для иллюстрации.

di = [];
for k = 1:ntrials
    d = dets(:,k);
    if (any(d) > 0)
        di = [di,k];
    end
end
idx = di(1);
detimg = zeros(N,N);
for k = 1:ncutcells
    detimg(cutidx(1,k),cutidx(2,k)) = dets(k,idx);
end
imagesc(detimg)
axis equal

Figure contains an axes. The axes contains an object of type image.

Вычислите эмпирический pfa.

pfa = sum(dets(:))/ntrials/ncutcells
pfa = 4.5898e-04

Эмпирический и указанный pfa согласны.

Отображение среднего эмпирического порогового значения для всех изображений.

mean(th(:))
ans = 31.7139

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

threshfactor = npwgnthresh(p,1,'noncoherent');
threshfactor = 10^(threshfactor/10);
disp(threshfactor)
    7.6009

Теоретический пороговый коэффициент, умноженный на дисперсию шума, должен соответствовать измеренному пороговому значению.

noisevar = mean(x2(:));
disp(threshfactor*noisevar);
   30.4118

Теоретический порог и эмпирический порог соответствуют допустимой разнице.

Выполните обнаружение cell-avering CFAR на матрице ячеек 41 на 41, содержащей пять близко расположенных целей в гауссовом шуме. Выполните это обнаружение при моделировании 1000 изображений. Используйте два детектора с различными областями защитной полосы. Установка пороговых значений вручную с помощью Custom пороговый коэффициент. Предположим, что данные обрабатываются с помощью квадратного детектора закона и что интеграция импульсов не выполняется. Используйте учебную полосу ячеек шириной 2 ячейки и высотой 2 ячейки. Для первого детектора используйте защитную полосу из 1 ячейки вокруг, чтобы отделить клетки CUT от тренировочных ячеек. Для второго детектора используйте защитную полосу из 8 ячеек.

Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

p = 5e-4;
rs = RandStream.create('mt19937ar','Seed',5);
N = 41;
ntrials = 1000;

Создайте 1000 изображений сложных случайных шумов со стандартным отклонением 1 по 41.

s = 1;
x = s/sqrt(2)*(randn(rs,N,N,ntrials) + 1i*randn(rs,N,N,ntrials));

Установите значения целевых ячеек 1,5. Затем возведите значения ячеек в квадрат.

A = 1.5;
x(23,20,:) = A;
x(23,18,:) = A;
x(23,23,:) = A;
x(20,22,:) = A;
x(21,18,:) = A;
x2 = abs(x).^2;

Отображение целевых ячеек.

xtgt = zeros(N,N);
xtgt(23,20,:) = A;
xtgt(23,18,:) = A;
xtgt(23,23,:) = A;
xtgt(20,22,:) = A;
xtgt(21,18,:) = A;
imagesc(xtgt)
axis equal
axis tight

Figure contains an axes. The axes contains an object of type image.

Установите ячейки CUT в качестве целевых ячеек.

cutidx(1,1) = 23;
cutidx(2,1) = 20;
cutidx(1,2) = 23;
cutidx(2,2) = 18;
cutidx(1,3) = 23;
cutidx(2,3) = 23;
cutidx(1,4) = 20;
cutidx(2,4) = 22;
cutidx(1,5) = 21;
cutidx(2,5) = 18;

Выполните обнаружение всех ячеек CUT с помощью двух детекторов 2-D CFAR. Первый детектор имеет небольшую область защитной полосы. Область обучения может включать в себя соседние цели, которые могут влиять на вычисление мощности шума. Второй детектор имеет большую область защитной полосы, которая предотвращает использование целевых ячеек при вычислении шума.

Создайте два датчика CFAR.

detector1 = phased.CFARDetector2D('TrainingBandSize',[2,2], ...
    'GuardBandSize',[1,1],'ThresholdFactor','Custom','Method','CA', ...
    'CustomThresholdFactor',2,'ThresholdOutputPort',true);
detector2 = phased.CFARDetector2D('TrainingBandSize',[2,2], ...
    'GuardBandSize',[8,8],'ThresholdFactor','Custom','Method','CA', ...
    'CustomThresholdFactor',2,'ThresholdOutputPort',true);

Возвращает классификации обнаружения и пороговые значения, используемые для классификации ячеек. Затем вычислите вероятности обнаружения.

[dets1,th1] = detector1(x2,cutidx);
ndets = numel(dets1(:));
pd1 = sum(dets1(:))/ndets
pd1 = 0.6416
[dets2,th2] = detector2(x2,cutidx);
pd2 = sum(dets2(:))/ndets
pd2 = 0.9396

Детектор с большей областью защитного диапазона имеет более высокий pfa, поскольку шум оценивается более точно.

Подробнее

развернуть все

Алгоритмы

развернуть все

Ссылки

[1] Мотт, Х. Антенны для радаров и связи. Нью-Йорк: John Wiley & Sons, 1992.

[2] Ричардс, М. А. Основы обработки радиолокационных сигналов. Нью-Йорк: Макгроу-Хилл, 2005.

[3] Скольник, М. Введение в радиолокационные системы, 3-й ред. Нью-Йорк: Макгроу-Хилл, 2001.

Расширенные возможности

.
Представлен в R2016b