分阶段。CFARDetector2D
二维CFAR探测器
描述
分阶段。CFARDetector2D
系统对象™为二维图像数据的选定元素(称为单元)实现了一个恒定的假报警率检测器(CFAR)。当图像单元值超过阈值时声明检测。为了保持恒定的虚警率,阈值设置为图像噪声功率的倍数。检测器估计被测细胞的噪声功率(减少)从周围的单元中使用三种单元平均方法之一,或顺序统计方法。细胞平均方法有细胞平均(CA)、最大细胞平均(GOCA)或最小细胞平均(SOCA)。
对于每个测试单元,检测器:
从CUT单元周围的训练带中的单元值估计噪声统计量。
通过将噪声估计乘以阈值因子来计算阈值。
将CUT单元格值与阈值进行比较,以确定目标是否存在。如果该值大于阈值,则存在目标。
运行探测器
请注意
或者,不使用一步
方法来执行System对象定义的操作,则可以使用参数调用该对象,就像调用函数一样。例如,Y = step(obj,x)
而且Y = obj(x)
请执行相同的操作。
建设
创建一个二维CFAR检测器系统对象,探测器
=分阶段。CFARDetector2D探测器
.
创建一个二维CFAR系统对象,探测器
=分阶段。CFARDetector2D (的名字
,价值
)探测器
,每个指定的属性的名字
设置为指定的价值
.您可以以任意顺序指定额外的名-值对参数,如(Name1
,Value1
、……以
,家
).
属性
方法
- - - - - -二维CFAR平均法
“CA”
(默认)|“GOCA”
|“严重”
|“操作系统”
二维CFAR平均方法,指定为“CA”
,“GOCA”
,“严重”
,或“操作系统”
.为“CA”
,“GOCA”
,“严重”
,噪声功率为从训练频带中得到的样本均值。为“操作系统”
,噪声功率为k对所有训练单元格值进行数值排序后得到的单元格值。集k使用排名
财产。
求平均值法 | 描述 |
---|---|
CA -单元格平均算法 |
计算CUT单元周围所有训练单元的样本均值。 |
GOCA -最大单元平均算法 |
将围绕CUT单元格的2-D训练窗口分成左右两半。然后,算法计算每一半的样本均值,并选择最大的均值。 |
打击严重有组织犯罪署 -最小的单元平均算法 |
将围绕CUT单元格的2-D训练窗口分成左右两半。然后,算法计算每一半的样本均值,并选择最小的均值。 |
操作系统 -顺序统计算法 |
按数值升序排列训练单元格。然后算法选择k列表中的Th值。k级别是否由 |
例子:“操作系统”
数据类型:字符
GuardBandSize
- - - - - -保护带的宽度
[1]
(默认)|非负整数|非负整数的2元向量
CUT单元格两侧保护带单元格的行数和列数,指定为非负整数。第一个元素指定沿行维数的保护带大小。第二个元素指定沿列维度的保护带大小。将此属性指定为单个整数相当于为两个维度指定具有相同值的保护带。例如,值[1]
,表示每个CUT单元周围都有一个警卫单元范围的区域。值为0表示没有保护细胞。
例子:3 [2]
数据类型:单
|双
TrainingBandSize
- - - - - -训练带的宽度
[1]
(默认)|正整数|正整数的2元向量
CUT单元格两侧训练带单元格的行数和列数,指定为正整数或1 × 2正整数矩阵。第一个元素指定沿行维数的训练带大小。第二个元素指定沿着列维度的训练带大小。将此属性指定为标量相当于为两个维度指定具有相同值的训练频带。例如,值[1]
表示围绕CUT单元的1个训练单元宽区域。
例子:(30:0.1:30)
数据类型:单
|双
排名
- - - - - -阶统计量
1(默认)|正整数
2-D CFAR算法中使用的顺序统计量的秩,指定为正整数。此属性的值必须介于1和之间N火车,在那里N火车是训练细胞的数量。值1选择训练区域中最小的值。
例子:5
依赖关系
属性可启用此属性方法
财产“操作系统”
.
数据类型:单
|双
ThresholdFactor
- - - - - -阈值因子法
“汽车”
(默认)|输入端口的
|“自定义”
阈值因子方法,指定为“汽车”
,输入端口的
,或“自定义”
.
当你设置ThresholdFactor
财产“汽车”
时,阈值因子由所期望的虚警概率计算而成ProbabilityFalseAlarm
财产。计算假设输入中的每个独立信号都是来自一个没有脉冲积分的平方律探测器的单个脉冲。此外,噪声被假设为白高斯分布。
当你设置ThresholdFactor
财产输入端口的
的输入参数获得阈值因子一步
方法。
当你设置ThresholdFactor
财产“自定义”
的值得到阈值因子CustomThresholdFactor
财产。
例子:“自定义”
数据类型:字符
ProbabilityFalseAlarm
- - - - - -所需的虚警概率
0.1
(默认)|0到1之间的正标量
所需的虚报警概率,指定为0到1之间的正标量。该算法根据所需的虚警概率计算出阈值因子。
例子:0.001
依赖关系
属性可启用此属性ThresholdFactor
财产“汽车”
.
数据类型:单
|双
CustomThresholdFactor
- - - - - -自定义阈值因子
1
(默认)|积极的标量
自定义阈值因子,指定为实正标量。此属性是可调的。
依赖关系
属性可启用此属性ThresholdFactor
财产“自定义”
.
数据类型:单
|双
OutputFormat
- - - - - -检测结果格式
“切的结果”
(默认)|“检测指数”
方法返回的检测结果的格式一步
方法,指定为“切的结果”
或“检测指数”
.
当设置为
“切的结果”
,结果为逻辑检测值(1
或0
)为每个测试单元。当设置为
“检测指数”
,结果形成包含超过检测阈值的被测细胞指数的向量或矩阵。属性的输入分阶段。RangeEstimator
而且分阶段。DopplerEstimator
系统对象。
数据类型:字符
ThresholdOutputPort
- - - - - -开启检测门限输出
假
(默认)|真正的
选项,以启用检测阈值输出,指定为假
或真正的
.将此属性设置为真正的
通过输出参数返回检测阈值,th
的一步
方法。
数据类型:逻辑
NoisePowerOutputPort
- - - - - -开启噪声功率输出
假
(默认)|真正的
选项,以启用噪声功率的输出,指定为假
或真正的
.将此属性设置为真正的
通过输出参数返回噪声功率,噪音
的一步
方法。
数据类型:逻辑
NumDetectionsSource
- - - - - -检测数量的来源
“汽车”
(默认)|“属性”
检测数量的来源,指定为“汽车”
或“属性”
.当您将此属性设置为“汽车”
,报告的检测指标数是被测细胞中检测到的细胞总数。如果将此属性设置为“属性”
的值确定所报告的检测数量NumDetections
财产。
依赖关系
属性可启用此属性OutputFormat
财产“检测指数”
.
数据类型:字符
NumDetections
- - - - - -要报告的检测指标的最大数量
1
(默认)|正整数
要报告的检测指标的最大数目,指定为正整数。
依赖关系
属性可启用此属性OutputFormat
财产“检测指数”
和NumDetectionsSource
财产“属性”
.
数据类型:双
例子
设置纯噪声数据二维CFAR门限
这个例子展示了如何根据所需的虚警概率(pfa)设置二维CFAR阈值。
注意:可以用等价函数替换对函数的每次调用一步
语法。例如,替换myObject (x)
与步骤(myObject x)
.
在包含高斯噪声的41 × 41单元矩阵上执行单元平均CFAR检测。估计经验pfa,并将其与所需pfa进行比较。为了得到一个好的估计,在1000个相似的矩阵上执行这个模拟。首先,使用所需的pfa设置阈值。在这种情况下,没有目标,pfa可以从超过阈值的细胞数量来估计。假设数据是通过一个平方定律探测器处理的,并且没有执行脉冲积分。使用宽3格、高4格的训练单元带。使用宽度为3个单元格、高度为2个单元格的保护带将测试单元格(CUT)与训练单元格分开。指定所需的pfa为5.0e-4。
P = 5e-4;rs = RandStream.create(“mt19937ar”,“种子”5);N = 41;Ntrials = 1000;检测器=相控。CFARDetector2D (“TrainingBandSize”3],[4日,...“ThresholdFactor”,“汽车”,“GuardBandSize”(2、3),...“ProbabilityFalseAlarm”、磷、“方法”,“严重”,“ThresholdOutputPort”,真正的);
创建包含随机复杂数据的41 × 41图像。然后,对数据进行平方,以模拟平方法检测器。
x = 2 /√(2)* (randn (rs, N, N, ntrials) + 1我* randn (rs, N, N, ntrials));X2 = abs(x).^2;
处理每张图像中的所有单元格。要做到这一点,找到每个CUT单元格的行和列,其训练区域完全位于每张图像中。
Ngc = detect . guardbandsize (2);Ngr = detect . 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);为M = colstart:colend为N = rowstart:rowend cutidx = [cutidx,[N;m]];结束结束Ncutcells = size(cutidx,2);
显示CUT单元格。
cutimage = 0 (N,N);为K = 1:ncutcells cutimage(cutidx(1, K),cutidx(2, K)) = 1;结束显示亮度图像(cutimage)轴平等的
对所有CUT单元执行检测。返回检测分类和用于分类单元格的阈值。
[dets,th] =检测器(x2,cutidx);
找到并显示带有假警报的图像,以供说明。
Di = [];为K = 1:ntrials d = dets(:, K);如果(any(d) > 0) di = [di,k];结束结束Idx = di(1);detimg = 0 (N,N);为K = 1:ncutcells detimg(cutidx(1, K),cutidx(2, K)) = dets(K,idx);结束显示亮度图像(detimg)轴平等的
计算经验pfa。
Pfa = sum(dets(:))/ntrials/ncutcells
Pfa = 4.5898e-04
经验pfa与指定pfa相一致。
显示所有图像的平均经验阈值。
意思是(th (:))
Ans = 31.7139
计算所需pfa的理论阈值因子。
Threshfactor = npwgnthresh(p,1,“非相干”);Threshfactor = 10^(Threshfactor /10);disp (threshfactor)
7.6009
理论阈值因子乘以噪声方差应与实测阈值一致。
Noisevar = mean(x2(:));disp (threshfactor * noisevar);
30.4118
理论阈值和经验阈值在可接受的范围内一致。
在背景噪声中检测目标
在高斯噪声中包含五个紧密间隔目标的41 × 41单元矩阵上执行单元平均CFAR检测。在1000个图像的模拟上执行此检测。使用两个具有不同保护带区域的探测器。方法手动设置阈值自定义
阈值的因素。假设数据是通过平方定律探测器处理的,并且没有执行脉冲积分。使用宽2格、高2格的训练单元带。对于第一个检测器,使用1个细胞的保护带将CUT细胞与训练细胞分开。对于第二个探测器,周围使用8个单元的保护带。
注意:此示例仅在R2016b或更高版本中运行。如果您正在使用较早的版本,请将对函数的每次调用替换为等效的调用一步
语法。例如,替换myObject (x)
与步骤(myObject x)
.
P = 5e-4;rs = RandStream.create(“mt19937ar”,“种子”5);N = 41;Ntrials = 1000;
创建1000张41乘41的复杂随机噪声图像,标准偏差为1。
S = 1;x = s /√(2)* (randn (rs, N, N, ntrials) + 1我* 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 = 0 (N,N);xtgt(23,20,:) = A;xtgt(23,18,:) = A;xtgt(23,23,:) = A;xtgt(20,22,:) = A;xtgt(21,18,:) = A;显示亮度图像(xtgt)轴平等的轴紧
将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;
使用两个CFAR 2-D探测器对所有CUT细胞进行检测。第一个探测器有一个小的保护带区域。训练区域可以包含相邻目标,这些目标会影响噪声功率的计算。第二检测器具有更大的保护带区域,从而防止目标单元被用于噪声计算。
创建两个CFAR检测器。
Detector1 =相控。CFARDetector2D (“TrainingBandSize”(2, 2),...“GuardBandSize”[1],“ThresholdFactor”,“自定义”,“方法”,“CA”,...“CustomThresholdFactor”2,“ThresholdOutputPort”,真正的);Detector2 =阶段性。CFARDetector2D (“TrainingBandSize”(2, 2),...“GuardBandSize”[8],“ThresholdFactor”,“自定义”,“方法”,“CA”,...“CustomThresholdFactor”2,“ThresholdOutputPort”,真正的);
返回检测分类和用于分类单元格的阈值。然后,计算发现的概率。
[dets1,th1] = detector1(x2,cutidx);Ndets =数字(dets1(:)));Pd1 = sum(dets1(:))/ndets
Pd1 = 0.6416
[dets2,th2] = detector2(x2,cutidx);Pd2 = sum(dets2(:))/ndets
Pd2 = 0.9396
保护带区域越大的探测器pfa值越高,因为噪声估计越准确。
更多关于
培养细胞
CFAR 2-D需要估计噪声功率。噪声功率是从假定不包含任何目标信号的单元中计算的。这些细胞是培养细胞.训练细胞在被测试细胞(CUT)周围形成一个带,但可以由一个保护带与被测试细胞隔开。检测阈值通过将噪声功率乘以阈值因子来计算。
对于GOCA和SOCA平均,噪声功率从训练单元区域的左半部分或右半部分的平均值中获得。
因为训练区域的列数是奇数,所以中间列中的单元格被平等地分配到左半边或右半边。
使用序统计方法时,秩不能大于训练单元区域的单元数,N火车.你可以计算N火车.
NTC为训练带列数。
NTR是训练带行数。
NGC是保护带列的数量。
NGR是保护带的行数。
联合训练区、警戒区和CUT单元的总单元数为N总计= (2 nTCn + 2GC+ 1) (2 nTRn + 2GR+ 1).
联合保护区和CUT单元的总单元数为N警卫= (2 nGC+ 1) (2 nGR+ 1).
训练细胞数为N火车= N总计- N警卫.
通过构造,训练单元数始终为偶数。因此,要实现中值过滤器,可以选择的秩N火车/ 2或N火车/2 + 1.
算法
数据精度
System对象支持输入数据、属性和参金宝app数的单精度和双精度。如果输入数据X
为单精度,输出数据为单精度。如果输入数据X
是双精度,输出数据是双精度。输出的精度与属性和其他参数的精度无关。
参考文献
[1]莫特H。雷达和通信天线.纽约:John Wiley & Sons出版社,1992年。
[2]理查兹,文学硕士雷达信号处理基础.纽约:麦格劳-希尔,2005年。
[3]斯科尔尼克,M。雷达系统概论纽约:麦格劳-希尔出版社,2001年版。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
看到系统对象在MATLAB代码生成(MATLAB编码器).
System对象支持输入数据、属性和参金宝app数的单精度和双精度。如果输入数据X
为单精度,输出数据为单精度。如果输入数据X
是双精度,输出数据是双精度。输出的精度与属性和其他参数的精度无关。
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。