因此,我必须实现恒虚警率(CFAR)算法。它有点像这样:
我使用的概念是,如果目标窗口包含多个像素,则此运算符(CFAR)使用以下检测标准
其中μt是目标窗口中像素的平均值。在这种情况下,t应在PFA计算中用t√n(其中n是目标窗口中的像素数)替换,其中μb是背景平均值,σb是背景标准偏差,t是检测器设计通过以下等式从PFA计算的参数:
现在,(已经足够使用方程!XD),我知道我必须在图像上实现一些循环(这是一个2d矩阵)。我知道我的图像的像素到距离比(大约是两个方向上每像素10.054米)。我可以将用户输入的距离转换为像素大小,假设背景窗口为800米(大约80像素),保护窗口为400米(大约40像素),而目标窗口为20米(大约2像素)。我的问题是:
如何循环播放图片?
问题并不像看起来那么容易,至少不是我。你看,我无法弄清楚,对于mxn像素,如何实现移动窗口。起初我认为目标大小是固定的,我可以硬编码我的像素坐标,但这不是重点。任何帮助表示赞赏:)
编辑: 目标窗口在保护窗口内移动。完成后,防护窗口将在背景窗口内移动,上面将再次发生,然后最终背景窗口将移动整个图像!
答案 0 :(得分:2)
假设窗口从左到右然后从上到下进行,伪代码可能如下:
考虑每个窗口的四个属性,即bg_top
,bg_left
,bg_width
,bg_hight
,grd_top
等等。
还考虑到内部窗户永远不会越过外窗,
将所有窗口左侧和顶部设置为图像的左侧和顶部,可能是(0,0)。
现在循环
while(bg_top+bg_hight <= image_top+image_hight)
{
while(bg_laft+bg_width <= image_left+image_width)
{
while(grd_top+gdr_hight <= bg_top+bg_hight)
{
while(grd_left+gdr_width <= bg_left+bg_width)
//some pixels may be left out if the inner and outer window sizes are not divisible, it will not change the window size to fit in the last case.
{
while(target_top+target_hight <= grd_top+grd_hight)
{
while(target_left+target_width <= grd_left+grd_width)
// the condition will move till end but never goes outside nor changes the inner window size to fit
{
//DO THE PROCESSING
//target_left+=target_width; //if they do not overlap
target_left+=1; //if they overlap
}
target_top+=target_hight// don't overlap. use 1 for overlaping
// use 1 if it goes down 1 pixel
}
grd_left+=grd_width; //or 1
}
grd_top+=grd_hight; //or 1
}
bg_left+=bg_width; //or 1
}
bg_top+=bg_hight; //or 1
}