MrD писал(а):
затем вычислить производные вдоль линии, и посчитать количество изменений знака.
если нужны подробности - сообщите.
Да, если можно, поподробнее.
На самом деле, при утончении линий происходит вот что:
Каждой точке картинки (те, пикселю) сосоставляется структура на языке СИ, содержащая информацию о координатах точки, количестве соседних точек, указатели на соседние точки (возможность доступа к аналогичным структурам соседних точек) и принадлежность точки к определённому классу (вспомогательный параметр, который будет рассмотрен ниже). Так как каждая точка представляет собой квадрат на плоскости, число возможных соседей равно восьми. Полученные структуры образуют собой массив G.
Для удобства дальнейшей обработки полученный массив разбивается на новые массивы, представляющие собой компоненты связности, то есть наборы точек, внутри которых каждая точка связана с другими через соседние и не связана с точками из других наборов. Для этого берётся первая точка из массива G, в качестве принадлежности её к определённому классу ей в соответствие ставится номер текущей компоненты (1). Далее поочерёдно проверяется наличие у этой точки соседей, и, при наличии, соседней точке ставится в соответствие тот же номер компоненты, что и у исходной. С помощью рекурсивной (вызывающей саму себя) функции, происходит переход от точки к точке. Если точке уже присвоен номер компоненты, переход к ней не осуществляется. Если таким образом перебраны все возможные точки, из исходного массива G берётся следующая точка с неприсвоенным пока номером компоненты для проведения аналогичной процедуры. Номер текущей компоненты увеличивается на единицу.
Далее, на основе массива G создаются новые массивы P1, … , PN точек с одинаковыми номерами компонент связности (от 1 до N соответственно), где N – количество компонент связности.
Так вот, я думаю: может, вычислить уравнение прямой, проходящей счерез точки a и b, и подсчитать число точек, входящих в каждую структуру, лежащих на этой прямой?