поэтапный. CFARDetector2D

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

Описание

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

Для каждой тестовой ячейки, детектора:

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

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

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

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

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

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

Примечание

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

Конструкция

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

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

Свойства

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

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

Метод усредненияОписание
CA — Составляющий в среднем ячейку алгоритм

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

GOCA — Самый Большой - составляющего в среднем ячейку алгоритма

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

SOCA — Самый маленький - составляющего в среднем ячейку алгоритма

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

OS — Закажите статистический алгоритм

Сортировки учебных ячеек в порядке возрастания числовых значений. Затем алгоритм выбирает k th значение из списка. 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

Ранг статистической величины порядка используется в 2D алгоритме 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.DopplerEstimator и phased.RangeEstimator.

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

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

Типы данных: логический

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

Типы данных: логический

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

Зависимости

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

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

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

Пример:

Зависимости

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

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

Методы

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

Позвольте изменения значения свойства Системного объекта

Примеры

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

Этот пример показывает, как установить 2D порог CFAR, основанный на необходимой вероятности ложного предупреждения (PFA).

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

Выполните составляющее в среднем ячейку обнаружение CFAR на 41 41 матрица ячеек, содержащих Гауссов шум. Оцените эмпирический PFA и сравните его с необходимым PFA. Чтобы получить хорошую оценку, выполните эту симуляцию на 1 000 подобных матриц. Во-первых, установите порог с помощью необходимого 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

Выполните обнаружение на всех ячейках 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

Вычислите эмпирический 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

Теоретический порог и эмпирический порог соглашаются на в приемлемом различии.

Выполните составляющее в среднем ячейку обнаружение CFAR на 41 41 матрица ячеек, содержащих пять близко расположенных целей в Гауссовом шуме. Выполните это обнаружение на симуляции 1 000 изображений. Используйте два детектора с различными областями защитной полосы. Установите пороги вручную с помощью порогового фактора 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 41 41 изображения комплексного случайного шума со стандартным отклонением 1.

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

Установите ячейки 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 с помощью двух CFAR 2D детекторы. Первый детектор имеет небольшую область защитной полосы. Учебная область может включать соседние цели, которые могут влиять на вычисление шумовой степени. Второй детектор имеет более крупную область защитной полосы, которая устраняет целевые ячейки от того, чтобы быть используемым в шумовом вычислении.

Создайте два детектора 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] Мотт, H. Антенны для радара и коммуникаций. Нью-Йорк: John Wiley & Sons, 1992.

[2] Ричардс, M. A. Основные принципы радарной обработки сигналов. Нью-Йорк: McGraw-Hill, 2005.

[3] Skolnik, M. Введение в радиолокационные системы, 3-го Эда. Нью-Йорк: McGraw-Hill, 2001.

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

Введенный в R2017b

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