Алгоритм нахождения координат угла в простом изображении - PullRequest
2 голосов
/ 12 апреля 2011

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

enter image description here

Обратите внимание, что я не знаюфактическая геометрия двух фигур, потому что это всего лишь необработанные данные пикселей.

Есть ли какой-нибудь алгоритм, который я мог бы использовать для этого?

1 Ответ

1 голос
/ 12 апреля 2011

Если у вас есть все пиксельные данные в памяти (что, как я полагаю, у вас есть, но это серьезная проблема), и есть только два разных цвета, все, что вам нужно сделать, это запустить горизонтальную линию сканирования, чтобы найтиточка, в которой RGB меняется с цвета X на цвет Y (обратите внимание, что вам может понадобиться запустить эту линию сканирования несколько раз, но в любом случае она не хуже, чем O (высота)).
Простой обход графика (BFS или DFS)) затем продолжит вас по этой линии (вам нужно только 3 точки, и тогда вы сможете сформировать геометрическую линию с уравнением a * x + b * y + c = 0 (при условии, что это не кривая)).
Повторите эту строку развертки по вертикали (опять же, в худшем случае это O (ширина)).Найдите 3 точки, и вы получите две строки с d * x + e * y + f = 0. Используя немного комп.Geom, пересечение этих двух линий даст вам вашу точку.

...