Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Поиск точек


Автор: ОВиталий 10.2.2011, 17:41
Приветствую!

Есть картинка, в центре ее нарисован прямоугольник в котором 3 точки(расположены случайным образом). как мне найти их и соединить линиями

Автор: mes 10.2.2011, 20:24
а где ограничительные требования к картинке ?
и правильно ли выбран раздел ? не в Алгоритмы ли Вам случаем ?

Автор: _Y_ 11.2.2011, 12:06
Задача поставлена очень расплывчато. Поэтому и ответ - на догадках.

Догадка 1: картинка бинарная или бинаризуемая. Тогда, скажем, на белом фоне имеем 4 черных обьекта: прямоугольник и 3 точки. Обьекты всегда отделены друг от друга белыми пикселями.

Догадка 2: и прямоугольник и точки нарисованы "карандашом" одинаковой толщины.


1. Ищем обьекты и считаем количество пикселей (черных) в каждом. 

2. На основании догадки 2 отбрасываем обьект, содержащий самое большое количество пикселей т.к. это прямоугольник.

3. Считаем среднееарифметическое положение каждого из оставшихся обьектов (т.к. это точки). Таким образом находим середины точек.

4. Соединяем полученные середины прямыми.

Такой алгоритм будет, определенно, не самым быстрым. Но позвилит работать с не идеальным рисунком. Например, с не очень круглыми точками и/или с криво нарисованным прямоугольником.

Если рисунок зашумлен, т.е. после бинаризации на нем будут дополнительные черные пиксели, разбросанные случайным образом, между п.2 и п.3 вставляем еще один шаг:

2а. Из оставшихся обьектов сохраняем 3 с наибольшим количеством пикселей - это точки. Остальные отбрасываем, считая их шумом.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)