Кажется, ваш вопрос не полностью сформирован, и вы ищете достойную формулировку того, что вы выразили словами.
Вот несколько предложений:
- Используйте пересечение над объединением для решения вопроса о том, как назначить сходство для перекрывающихся областей.
- Есть много способов, которыми вы можете попытаться сделать то, что выражаете словами, количественно, и, следовательно, сможете оптимизировать. Один из разумных способов количественно выразить то, что вы выразили словами, - это проблема минимизации, о которой я расскажу ниже.
При минимизации следует назначить один синий прямоугольник ровно одному красному прямоугольнику (учитывая то, что вы сказали мне). Зеленый и желтый прямоугольники являются подсказками и не включены в это ограничение, они просто используются для изменения того, какой красный прямоугольник предпочтительнее другие. Чтобы формализовать то, что вы описали словами, у нас есть набор красных прямоугольников R
и набор синих прямоугольников B
. Есть m
красные коробки и n
синие коробки с m >= n
. Каждое соединение синей рамки i
с красной рамкой j
имеет предпочтение w_{ij}
(это предпочтение предварительно рассчитывается с учетом блоков подсказок, а также пространственной близости.)
Мы хотим вычислить:
max \sum_{i<j} w_{ij}x_{ij}
such that
\sum_{k} x_{ik} = 1, \sum_{l} x_{lj} = 1, x_{ik} \in {0,1}
Переменная x_{ij}
равна 1, если и только если синему прямоугольнику i
присвоено красное поле j
, в противном случае - 0.
Эта проблема (является Полностью унимодулярной ) и может быть решена за полиномиальное время. Фактически, это может быть решено как пример общей проблемы Поток минимальной стоимости . Для этого определите узел на графике для каждого синего поля i
и узел на графике для каждого красного поля j
. Соедините каждый синий узел с каждым красным узлом (направленный синий-> красный) с ребром с весом -w_{ij}
и емкостью 1. Соедините каждый синий узел с источником (направленный источник -> синий) с ребром емкости 1 и весом 0 Подключите каждый красный узел к приемнику (направленный красный-> приемник) с ребром емкости 1 и весом 0. Дайте источнику предложение n
, а потребителю - n
. Вычислите минимальный поток затрат на этом графике (см., Например, лимон ), и полученный поток дает максимальное решение (альтернативно минимальный поток).
Подробно описав это, я вижу, что это уже общий подход [1] для решения именно таких проблем, как ваша. Здесь - это реализация.
YMMV в зависимости от того, насколько хороши ваши веса. Возможно, вы захотите попробовать подход машинного обучения для определения оптимальных весов, используя базовый набор данных истинности и итеративное уточнение. Уточнение может быть вычислено для фиксированного набора синих и красных базовых блоков истинности путем уточнения весов w_{ij}
до тех пор, пока все другие возможные назначения, отличные от основного показателя, не будут иметь более низкий показатель оптимизации, чем базовый уровень. Это можно сделать итеративно, используя любую структуру или технику обучения с максимальным запасом, в сочетании с методом, который я описал выше (и, по-видимому, описан в [1].)
[1] Чжан, Ли, Неватия: Глобальная ассоциация данных для отслеживания нескольких объектов с использованием сетевых потоков, CVPR (2008).