|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Saniya Mamleeva 2:5011/251.21 14 Oct 2001 18:02:14 To : All Subject : как ходить по гребням холмов -------------------------------------------------------------------------------- У меня есть задача. В одномерном варианте она выглядит так: подчеркнуть границы неоднородностей заданной функции (функция задаётся дискретно, однако я её проинтерполировала, так что это уже полином). Скажем, есть функция в виде прямоугольного импульса. Hужно подчеркнуть точки фронта и спада, т.е. точки с максимальной по модулю производной. Причём не просто найти их аналитически, а, последовательно перебирая все точки, говорить - нужная нам это точка, или нет. Точки - это на самом деле пиксели, а функция отображается цветом соответствующей интенсивности. Так вот, эта задача решена. Теперь нужно решить двумерный вариант этой задачи. Если у нас есть двумерная неоднородность, то нужно как бы оконтурить её по тому уровню, где градиент принимает максимальное значение по модулю. Сначала кажется, что здесь тоже нужно искать максимум градиента. Ан нет. Если моя неоднородность (этакий холмик) имеет склоны разного наклона, то и градиент будет различаться, и где-то он будет больше - так что же, рисовать одну лишь точку? Если представить поле модуля градиента в виде эдаких взаимоперетекающих холмов и оврагов, то нам нужно как бы идти по самым гребням этих холмов, чтобы вывести нужную кривую. То есть идти каждый раз так, чтобы градиент был направлен выше, чем если бы мы хоть немного отклонились влево или вправо. Hу и, разумеется, речь тут тоже идёт о последовательном сканировании всех пикселей. Я нашла такое решение: в центре заданной точки смотреть, в каком направлении функция изменяется быстрее всего (это градиент). Теперь брать производную по этому направлению в области всей точки (или немного пошире) и смотреть, претерпевает ли она там переход через локальный максимум. По идее, всё правильно. Однако... есть такой нехороший момент - по вертикальной координате функция изменяется достаточно быстро, поэтому в окрестности одного пикселя очень трудно поймать тот момент, когда она проходит свой локальный максимум. Можно, по идее... но тогда он будет слишком долго работать. Соответственно, вопрос: может, есть какой-нибудь подходящий метод решения этой задачи, не настолько медленный? Заранее спасибо за ответы, Saniya --- * Origin: стремление к оригинальности ведёт к молчанию (2:5011/251.21) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/38443bc9d340.html, оценка из 5, голосов 10
|