![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Алгоритм нахождения [Delphi, C++ Builder, Windows]
Pavelius © (2004-04-14 16:42:00)Так как этот форум был раньше и по алгоритмам, то вопрос такой.
Существует следующая задача.
Есть у меня на изображении закрашенная окружность.
Мне необходимо найти ее приблизительный радиус и центр.
Окружность может быть плохого качества (копия на копире),
недостаточная закрашенность всей окружности.
Помогите пожалуйста с алгоритмами для этой задачи.
KA_ (2004-04-20 15:23:00) [1]>wiz © (20.04.04 13:59) [46]
ИМХО, такое сглаживание сильно зависит от зашумленности изображения. Лучше, наверное, использовать преобразование Фурье над полученной гистограммой и отбросить шумы с нее.
wiz (2004-04-20 13:59:00) [2]2KA_:
в предложеной проге я как раз сглаживаю полученные гистограммы, считаю "средний шум" и вычитаю его...
KA_ (2004-04-20 09:09:00) [3]>wiz © (19.04.04 20:01) [44]
Спасибо. А то я напугался :)
>Этот способ (конечно) даёт большую ошибку
В принципе можно получить достаточно хорошие результаты, если перед построением этих гистограмм подавить шум на картинке и сами гистограммы обработать каким-нибудь образом (ну хотя бы сгладить)
wiz (2004-04-19 20:01:00) [4]2 KA_:
профильные диаграммы - довольно тупая весчь: берём некий массив (AxB), усредняем по одной координате и получаем массив 1xB или Ax1. В нём уже довольно легко определить нужное нам (т.к. одномерный случай). Этот способ (конечно) даёт большую ошибку, и всерьез может использоваться только как первая "пристрелка", чтобы более сложные алгоритмы стартовали не с "нуля".
Способ взят на вооружение из некой книги по аппроксимации (названия и автора уже не помню - давно было). Там правда они imho назывались немного по другому (или так как я их обозвал, или "покоординатные гистограммы", в общем - не помню :] )
KA_ (2004-04-18 16:34:00) [5]>wiz © (15.04.04 21:29) [38]
А что такое профильные диаграммы?
Может подскажешь ссылки?
Спасибо.
KA_ (2004-04-17 15:34:00) [6]>sergey_shandar (17.04.04 07:44) [41]
МНК это замечательно, но проблема в том, чтобы получить для него данные - массив точек, например. В зависимости от условий - состояния изображения, топологии фигуры и т.п. предобработка картинки и нахождение контура объекта может быть достаточно сложной задачей. Но не обязательно ведь привязываться на контур, т.е. массив точек. Есть масса других методов, которые позволят с большой точностью определить положение объекта (если его топология извесна). Часто при этом можно даже отказаться (или почти отказаться) от предобработки изображения.
sergey_shandar (2004-04-17 07:44:00) [7]Если примитив хорошо описываеться аналитически и можно решить МНК для него, то все равно. Прямая линия и окружность IMHO легче чем квадрат :-)
Не мастер. :-)
Pavelius (2004-04-16 14:33:00) [8]Уважаемые мастера, что повашему проще находить: окружность или другие примитивы ?
Pavelius (2004-04-16 08:37:00) [9]to wiz
see to email
wiz (2004-04-15 21:29:00) [10]2 Pavelius:
поиск одинокого круга на тестовом изображении. версия нулевая:
http://wad-fox.chat.ru/im_searcher.zip
Для поиска координат круга использованы профильные гистограммы и метод моментов. Для поиска радиуса использовано "эдакое нечто", что я пока сам не могу классифицировать :)
Алгоритм отвратительно работает в случае отрезки части круга, но это можно пофиксить дальнейшими "уточняющими" алгоритмами (чем я займусь, если это будет интересно "заказчику").
smb (2004-04-15 20:59:00) [11]http://smb.hotmail.ru/files/spsearch2.exe
качайте исходник. работает иногда криво, файлы, которые тестировал там же. можно выбрать цвет и расхождение, или как оно там называется, короче цвет+-расхождение. для начала расчета нажать на картинку. радиус будет на заголовке формы.
зы. говорите, что хотите - люблю когда на меня гонят :)
Pavelius (2004-04-15 16:13:00) [12]to sergey_shandar
Спасибо за указание в каком направлении надо двигаться
sergey_shandar (2004-04-15 14:04:00) [13]На С++ за вознаграждение можно реализовать алгоритм. В не зависимости от ответа, идея здесь http://www.rsdn.ru/Forum/Message.aspx?mid=607696и здесь http://www.rsdn.ru/Forum/Message.aspx?mid=607412.
Pavelius (2004-04-15 13:39:00) [14]to KA_
see to EMail
KA_ (2004-04-15 12:57:00) [15]>Pavelius © (15.04.04 12:47) [32]
Большая окружность или нет? Много места она занимает на этом куске 10х10?
Pavelius (2004-04-15 12:47:00) [16]to ALL
Если есть еще какие то вопросы по задаче, задавайте
KA_ (2004-04-15 11:47:00) [17]>wiz © (15.04.04 10:16) [20]
В такой простой задаче можно добиться уверенного распознавания даже при больших значениях сигнал/шума, тем более, что шум скорее всего белый.
KA_ (2004-04-15 11:43:00) [18]Кстати, есть еще несколько методов поиска площадных объектов на растре.
1. Можно использовать преобразование Хаффа (Hough). Но это достаточно ресурсоемказ задача - работать будет медленно, хотя зависит от конкретных условий распознавания.
2. Если круг маленький (занимает скажем 10% от площади картинки), то пожно применить пирамидальное преобразование растра.
KA_ (2004-04-15 11:40:00) [19]>Pavelius © (15.04.04 11:38) [28]
О! Я не все читал! Здесь и деньги дают :)
За 50 баксов сварганю - пиши в мыло :)
Pavelius (2004-04-15 11:38:00) [20]На реализацию у меня просто нет времени. Вот я Вас уважаемые и прошу, да к тому же за вознаграждение.