| анон-4571 пишет: |
| По контуру карандашом что-то понять тяжело. |
Я несколько последних часов не мог избавиться от того, чтобы думать над этим. Ведь карандашный контур — это толстая и не очень четкая линия, точнее, полоса, как точно определить ее центр и направление в каждой точке? И вдруг понял, что я уже сталкивался с этой проблемой и нашел более-менее удовлетворительное для меня решение, только в трехмерном случае. Это было медицинское приложение, в котором надо было по результатам томографии области сердца построить трехмерную модель части кровеносной системы, точнее, части аорты и коронарных артерий. Идея была в том, чтобы затем применить к этой модели дифференциальные уравнения гидродинамики (уравнение Навье-Стокса, уравнение состояния и др.), чтобы рассчитать все параметры кровотока (все эти уравнения не решаются аналитически, только численно, но такая система существует уже более 50 лет для аэро- и гидродинамических расчетов: ANSYS). В частности, вычислить параметр Fraction Flow Reserve (процент падения давления в коронарной артерии в точке стеноза; медики используют этот критерий для принятия решения, нужно ли вводить расширитель (стент) в эту точку артерии — нужно, если FFR меньше 70%).
Коронарные артерии очень тонкие, рисунок их у разных людей сильно отличается (даже я по томографии не всегда мог понять, где они, например, отличить артерии от вен, хотя за долгие годы просмотрел сотни томографических исследований всего что только можно, даже томографию лошадей; кардиологи, конечно, на подобные вопросы отвечают мгновенно). В общем, это для медицинского софта (теории медицинской визуализации, теории компьютерного зрения и т.п.) более-менее стандартная задача: определить линию сосуда, его направление и площадь сечения в каждой точке). Я попробую написать программу, чтобы сделать это для карандашной линии (это сильно проще, чем для линии сосуда в трехмерном пространстве, да плюс еще и чудовищно нечеткой, как это всегда бывает при томографическом исследовании и сосудах толщиной порою в 2-3 мм). Может, расскажу, какие методы можно при этом применять.
Результат, который хочется получить: кривая лезвия в виде гладкого сплайна (L2-кубического). Можно потом для двух лезвий совместно нарисовать эти две кривые на одном рисунке, кривизну их в каждой точке (например, проиллюстрировав кривизну цветом), точки разрыва второй производной, если они будут, и т.п.