Как вернуть координаты, соответствующие точкам интенсивности, полученным в результате более быстрого процесса обнаружения объектов r-cnn? - PullRequest
0 голосов
/ 23 декабря 2018

В результате более быстрого метода обнаружения объектов r-cnn я получил набор блоков значений интенсивности (каждый ограничивающий прямоугольник можно представить как трехмерную матрицу с глубиной 3 для интенсивности rgb, ширины ивысота, которая затем может быть преобразована в 2D-матрицу с использованием шкалы серого), соответствующей области, содержащей объект.Я хочу получить соответствующие координаты в исходном изображении для каждой ячейки интенсивности внутри ограничительной рамки.Есть идеи как это сделать?

1 Ответ

0 голосов
/ 23 декабря 2018

Насколько я понимаю, у вас есть модель R-CNN, которая выводит обрезанные фрагменты входного изображения, и теперь вы хотите проследить эти выходные кадрирования до их координат в исходном изображении.

Что вы можетеДля этого просто используйте меру подобия патча, чтобы найти исходную позицию.Так как выходная обрезка должна выглядеть точно как на исходном изображении, просто используйте основанное на пикселях расстояние:

enter image description here

Найдитепоместите на изображении наименьшее расстояние (должно быть ноль), и из него вы можете найти желаемые координаты.

В питоне:

d_min = 10**6
crop_size = crop.shape
for x in range(org_image.shape[0]-crop_size[0]):
    for y in range(org_image.shape[1]-crop_size[1]):
        d = np.abs(np.sum(np.sum(org_image[x:x+crop_size[0],y:y+crop_size[0]]-crop)))
        if d <= d_min:
            d_min = d
            coord = [x,y]

Однако , вашмодель должна иметь эту информацию доступной (в конце концов, она обрезает выходные данные на основе некоторых координат).Возможно, если вы добавите некоторую информацию о вашей реализации.

...