Я бы хотел попросить вас помочь с определением толщины линии.У меня есть бинарная кривая.Мне нужно выяснить расстояние каждой точки скелета кривой до края линии в направлении нормали.Итак, я сначала вычислил скелет бинарной кривой.Следовательно, для каждого пикселя скелета я вычисляю нормаль.Эта ситуация изображена на рисунке, показывая скелет и карту нормальных векторов от каждого пикселя.В этом пункте я не знаю, как вычислить расстояние для каждого пикселя скелета до края кривой в нормальном направлении.На практике мне нужно посчитать количество пикселей (логическая 1) от пикселей скелета до края линии в нормальном направлении.Это означает, что мне нужно получить вектор, содержащий расстояние для каждой точки скелета.Я хотел бы заранее поблагодарить вас за вашу помощь.
Код для генерации скелета с нормалями:
clc;clear all;close all
i=rgb2gray(imread('Bin_Lines.bmp'));
BW=bwskel(logical(i));
% BW = image sceleton
Orientations = skeletonOrientation(BW,5); %5x5 box
Onormal = Orientations+90; %easier to view normals
Onr = sind(Onormal); %vv
Onc = cosd(Onormal); %uu
[r,c] = find(BW); %row/cols
idx = find(BW); %Linear indices into Onr/Onc
figure()
imshow(BW,[]);
%Plotting normals of binary skeleton
hold on
quiver(c,r,-Onc(idx),Onr(idx));
Вот ссылка, где я храню исходные коды и изображение двоичной строки:
https://www.dropbox.com/sh/j84ep3k1604hsza/AABm92TUBX6yIp29Gc0v_PHHa?dl=0
![](https://uc53df7718c34ea266caa648a872.previews.dropboxusercontent.com/p/thumb/AAeqH5uvGTWZyiJbwLsTDsOLYmC8XjLPZY1hlS7UmzgUILZufazpBn8ruIzee1Vlg37ryoQJxbeFBWDC07xNtHIIoXVwVZgzOZ2bBbtWmfQlh9GjUQh-CirQUAiKrO1RKiDo5DHRZJLireoxL_RuPpjpUZdU73OufXDXU9l8GtesDtITz_i5KGbOZCh260G8dLC4DsEK8L9XbyKLnhyi_hELIXt8IwBWkgVy_awpt1yknwLg4z808OqC3g0r2sWT5tNxFHd-yn0SF0MYUWsvWlRRNejiyDh3BSn6MMt-GMtT2oCi8QDB9r2yBCrqhnLic3eVU4bUVz0jZ2NhXOUBcjf5t7XW0ijtADaxmTNrQiZCxQ/p.jpeg?fv_content=true&size_mode=5)