Спасибо за ваш ответ dnul, но это действительно не помогло мне решить это. Я думаю о гистограмме для решения проблемы, но это не совсем то, что я хочу.
Я решил эту проблему, создав матрицу 40x40, которая содержит матрицы 5x5, содержащие необработанные данные пикселей во всех 3 каналах. Я повторял через каждую область 40px и внутри повторял через каждую границу области 5px. Я проверил каждый пиксель и сохранил в памяти те, которые темнее определенного порога.
После итерации у меня было общее представление о том, сколько у них черных пикселей, поэтому я проверил каждого из них на наличие соседей с белыми пикселями во всех 3 каналах. Затем я пометил каждый из этих пикселей и сохранил их в другом хранилище.
Затем я использовал алгоритм Ransac для построения линий из этих точек. Он строит около 5-20 строк на каждый край маркера. Затем я посмотрел на линии, которые встречаются друг с другом и сохранил положение тех, которые встречаются под прямым углом.
4 балла, которые я получаю, это края маркера.
Если вы хотите воспроизвести это, вам придется предварительно отфильтровать изображение и применить пороговое значение, чтобы было легче различать черные и белые пиксели.
Пример изображения, сохраните после нахождения точек и до построения линий:
http://www.imagebanana.com/view/i6gfe6qi/9.jpg