在图像上重叠滑动窗口

时间:2014-12-23 13:55:56

标签: python computer-vision object-detection sliding-window

我的目标是在一个图像上以重叠的步骤滑动窗口,这样我就可以在每个窗口中运行一个分类器并检测是否有一个有趣的对象。

为此,我需要确保

  • windows我提取的分类确实可以覆盖整个图像,
  • 抓住原始图像上每个滑动窗口的顶部和左侧坐标。

从这里跟进: Sliding window - how to get window location on image?

并基于此代码进行滑动窗口:

https://github.com/keepitsimple/ocrtest/blob/master/sliding_window.py#blob_contributors_box

我正在做以下事情,因为winh和winw是滑动窗口的宽度和高度,而window_size是(winh,winw):

grid_h_max =(imgheight/winh)
grid_w_max= (imgwidth / winw)
win = sliding_window(img, window_size, shiftSize=None, flatten=False) 
for h in range (grid_h_max): 
    for w in range (grid_w_max): 
        win = windows[h,w]
        grid_pos = (h,w), (winh, winw)) 
        t, b, l, r = get_win_pixel_coords(grid_pos, window_size)

这工作得很好 - 给我滑动窗口以及每个窗口的坐标。但我没有重叠滑动窗口。

因此,如果我的步长为10且我的第一个窗口从(顶部,左侧)开始:( 0,0),那么我的第二个窗口应为(0,10)。

但在上面的代码中,我的第二个窗口是(0,60)。

早些时候,我使用的是这段代码:

windows = sw.sliding_window(image1, window_size, step_size, flatten=True) 
    for w in windows:
        # and then I grabbed each w and printed it out

这给了我所有的滑动窗口,包括重叠窗口。但是在这种方法中,我无法抓住每个滑动窗口的顶部和左侧坐标。

1 个答案:

答案 0 :(得分:1)

好吧,我弄清楚问题是什么。

此代码没有导致重叠:

grid_h_max =(imgheight/winh)
grid_w_max= (imgwidth / winw)
win = sliding_window(img, window_size, shiftSize=None, flatten=False) 

将整个图像尺寸与窗口尺寸的尺寸分开显然会产生不重叠的结果。

为了获得每个维度的正确数量的窗口,我只需要允许sliding_window函数告诉我自己窗口的数量是垂直和水平的:

win = sliding_window(img, window_size, shiftSize=None, flatten=False) 
grid_h_max = win.shape[0]
grid_w_max = win.shape[1]

这再次给了我大约5000个窗口。