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