【问题标题】:Moving window implementation移动窗口实现
【发布时间】:2013-04-22 19:33:38
【问题描述】:

所以,我必须实现一个恒定误报率 (CFAR) 的算法。它的工作原理是这样的:

我使用的概念是,如果目标窗口包含多个像素,则此算子 (CFAR) 使用以下检测标准

其中 μt 是目标窗口中像素的平均值。在这种情况下,在 PFA 计算中 t 应替换为 t√n(其中 n 是目标窗口中的像素数),其中 μb 是背景均值,σb 是背景标准差,t 是检测器设计参数由 PFA 通过以下公式计算得出:

现在,(方程已经够了!XD),我知道我必须在图像(这是一个二维矩阵)上实现一些循环。我知道我的图像的像素距离比(在两个方向上每个像素大约为 10.054m)。我可以将用户输入的距离转换为像素大小,假设背景窗口是 800m(大约 80 像素),保护窗口是 400m(大约 40 像素),而目标窗口是 20m(大约 2 像素)。我的问题是:

如何循环遍历图片?

问题并不像看起来那么容易,至少对我来说不是。你看,我想不通,对于 mxn 像素,如何实现移动窗口。起初我认为目标大小是固定的,我可以硬编码我的像素坐标,但这不是重点。任何帮助表示赞赏:)

编辑: 目标窗口在保护窗口内移动。完成后,保护窗口将移动到背景窗口中,上面将再次发生,然后背景窗口将在整个图像中移动!

【问题讨论】:

  • 您要移动哪个窗口?它们在移动时会重叠还是会离散地前进?
  • 啊,让我更新一下:)
  • 不,不,它们在迭代中不能重叠。检查图表。目标窗口被限制为保护窗口,而保护窗口被限制为背景窗口。在背景窗口内,守卫将移动,在守卫窗口内,目标窗口移动。希望有帮助:)
  • 我要问的是,他们会一次进步 1 个像素还是窗口?
  • 目标窗口每次前进 1 个像素,如果可能,保护窗口移动它的长度,或者移动到最后。背景窗口的移动类似于保护窗口,但它尊重图像

标签: c image-processing matrix moving-average


【解决方案1】:

假设窗口从左到右再从上到下,伪代码可能如下:

考虑每个窗口的四个属性,即bg_topbg_leftbg_widthbg_hightgrd_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
}

【讨论】:

  • 谢谢!让我运行它,我会回复你 XD 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-06-16
  • 2011-03-06
  • 2017-09-04
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
相关资源
最近更新 更多