реклама на сайте
подробности

 
 
> Преобразование Хафа y=A^2*x / sqrt( A^2 * x^2 + B^2) Как?
tmtlib
сообщение Oct 22 2011, 14:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Здравствуйте! Я хотел бы сделать простейшее преобразование Хафа для этой функции, чтобы выделить её на изображении. По аналогии с поиском линий я предположил, что результат преобразования - это максимум "аккумулятора" в пространстве параметров "A-B". Для этого я выразил функцию через B:

(1) исходная функция y=A^2*x / sqrt( A^2 * x^2 + B^2)
(2) выражаем через B=sqrt( (A^4*x^4)/y^2 - A^2*x^2 )

Далее казалось бы всё просто: для каждого закрашенного пикселя на картинке (x,y) подставляем эти координаты в формулу (2) и пробегаем все значения A из интересующего диапазона, получая пары чисел A-B. Так для каждой точки изображения X-Y будет соответствовать некоторая кривая в координатах A-B. Точка с наибольшим количеством пересечений и есть параметры искомой функции. Подставляя найденные A и B в формулу (1) можем численно нарисовать кривую поверх растрового изображения.

Но у меня что-то функции (2), назову их "параболы", пересекаются только в начале координат, соответственно невозможно по этим данным найти параметры A-B - они всегда равны нулю A=0, B=0.

Подскажите, что не так!

p.s. этот же вопрос задал на другом сайте и с нетерпением жду ответов!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Самурай
сообщение Oct 22 2011, 22:50
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(tmtlib @ Oct 22 2011, 18:35) *
Здравствуйте! Я хотел бы сделать простейшее преобразование Хафа для этой функции, чтобы выделить её на изображении. По аналогии с поиском линий я предположил, что результат преобразования - это максимум "аккумулятора" в пространстве параметров "A-B". Для этого я выразил функцию через B:

(1) исходная функция y=A^2*x / sqrt( A^2 * x^2 + B^2)
(2) выражаем через B=sqrt( (A^4*x^4)/y^2 - A^2*x^2 )

Далее казалось бы всё просто: для каждого закрашенного пикселя на картинке (x,y) подставляем эти координаты в формулу (2) и пробегаем все значения A из интересующего диапазона, получая пары чисел A-B. Так для каждой точки изображения X-Y будет соответствовать некоторая кривая в координатах A-B. Точка с наибольшим количеством пересечений и есть параметры искомой функции. Подставляя найденные A и B в формулу (1) можем численно нарисовать кривую поверх растрового изображения.

Но у меня что-то функции (2), назову их "параболы", пересекаются только в начале координат, соответственно невозможно по этим данным найти параметры A-B - они всегда равны нулю A=0, B=0.

Подскажите, что не так!


Во-первых, у Вас очепятка, должно быть либо y=A^2*x^2 / sqrt( A^2 * x^2 + B^2), либо B=sqrt( (A^4*x^2)/y^2 - A^2*x^2 ), но это я думаю просто формулу невнимательно набилиsm.gif

Во-вторых, в качестве параметров лучше использовать не A и B, а A^2 и B^2. Ну, или A и B^2. В этом случае уходим от проблемы интерпретации комплексных значений параметра B, а таких будет многоsm.gif.

Ну и в-третьих, у Вас функция сильно нелинейная, а значит на результат будет катастрофически влиять все исходные данные: диапазон изменения параметра A, шаг с которым он изменяется (шаг квантования параметров), координаты точек x,y которые берутся для расчетов, шум.

Чем уже диапазон изменения параметра A относительно искомой величины и чем меньше шаг квантования, тем лучше будет результат. Аналогично, чем меньше значение параметра B в исходной кривой, тем в более узком диапазоне координат x и y необходимо вести поиск.



Go to the top of the page
 
+Quote Post
tmtlib
сообщение Oct 26 2011, 04:03
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Спасибо, ошибку в формуле не заметил. Преобразование для моих исходных данных явно не подходит, но разобрался хоть =)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 08:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016