Понадобилось мне однажды вычисление изофот (линий равной интенсивности на изображениях), однако, готовых библиотек я не нашел, а копаться в чужом коде (например, в тех же Octave или Iraf) очень не хотелось. В качестве простейшего алгоритма я нашел метод шагающих квадратов. Однако, этот метод сильно снижает пространственное разрешение при вычислении узлов изофот, поэтому я решил его немного видоизменить и сделать квадраты перекрывающимися.
Первая реализация (кстати, довольно быстрая) была неудачной: т.к. я строил маску, общую для всех уровней, а для конкретного уровня пересчитывал отдельно, в точках, через которые проходит несколько изолиний, получились разрывы. Ковыряния в коде приводили к все большему и большему числу взаимных блокировок и флагов, поэтому я решил пойти в ущерб производительности и вычислять маски отдельно для каждого уровня интенсивности.

подробности )
Разрабатывая свой велосипед, о котором уже неоднократно писал, я наткнулся на необходимость поиска изофот с представлением их для начала хотя бы в виде ломаных (потом можно будет и сглаживание добавить). И вот здесь-то у меня возникли затруднения. Есть множество программ, реализующих поиск и даже сглаживание изофот, но вот внятного изложения алгоритма, реализующего это, на просторах интернета я не нашел. Ковыряться в исходниках GPL-программ, строящих изофоты, мне не хотелось (на это ушло бы гораздо больше времени), поэтому я решил для начала попробовать сделать свою реализацию метода шагающих квадратов. Использовать "классический" алгоритм я не захотел, т.к. он приводит к уменьшению количества найденных узлов (все-таки, я собираюсь использовать именно этот вариант, проводя сетку 2х2 пикселя, но об этом - в следующей публикации). Итак, у меня "родился" свой, неправильный метод.
Как делать не надо ) Планирую: провести работу над ошибками и, если ничего не получится, переделать методику (т.е. сделать ячейки маски непересекающимися или даже вообще использовать классический - медленный - алгоритм).

В следующей части повествования я надеюсь рассказать о реализации работающего алгоритма.

September 2017

S M T W T F S
     1 2
3456789
1011 12 13141516
17181920 212223
24252627282930

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 26th, 2017 12:52 pm
Powered by Dreamwidth Studios