Представьте себе простое прямоугольное растровое изображение, скажем, размером 1024x768 пикселей, заполненное белым. На растровом изображении нарисовано несколько (не перекрывающихся) спрайтов: круги, квадраты и треугольники.
Существует ли алгоритм (возможно, даже реализация C ++), который с учетом растрового изображения и цвета, который является цветом фона (белый в приведенном выше примере), дает список, содержащий наименьшие ограничивающие прямоугольники для каждого из спрайтов?
Вот пример: С левой стороны вы можете увидеть образец растрового изображения, который приведен в моем коде (вместе с информацией о том, что «фон» белый). С правой стороны вы можете увидеть то же изображение вместе с ограничивающими прямоугольниками четыре фигуры (красным); алгоритм, который я ищу, вычисляет геометрию этих прямоугольников.
Некоторые программы рисования имеют аналогичную функцию для выбора фигур: они могут даже вычислять кажущиеся произвольными ограничивающие многоугольники. Вместо перетаскивания выделенного прямоугольника вручную, вы можете щелкнуть «фон» (какой фон, а какой нет, определяется некоторым порогом), а затем инструмент автоматически вычисляет форму объекта, нарисованного на фоне. Мне нужно что-то вроде этого, за исключением того, что я в порядке, если у меня есть только прямоугольные ограничивающие области для объектов.
Мне стало известно о OpenCV ; это кажется актуальным (кажется, это библиотека, которая включает в себя все графические алгоритмы, которые я могу придумать, а затем и некоторые из них), но из-за быстрого количества информации я не мог найти путь к алгоритму, о котором я думаю. Я был бы удивлен, если бы OpenCV не смог этого сделать, но я боюсь, что вам нужно иметь докторскую степень, чтобы его использовать. : -)