phased.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 метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

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

detector = phased.CFARDetector2D(Name,Value) создает 2-D объект CFAR System, 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], указывает, что существует одна guard- камеры широкая область, окружающая каждую камеру 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

Методы

сбросСброс состояний системного объекта
шагДвумерное обнаружение 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

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

Выполните среднее обнаружение 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 изображений комплексного случайного шума 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

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] Mott, H. Antennas for Radar and Communications. Нью-Йорк: John Wiley & Sons, 1992.

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

[3] Skolnik, M. Introduction to Радиолокационные Системы, 3rd Ed. New York: McGraw-Hill, 2001.

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

.
Введенный в R2016b