Я бы хотел попросить вас помочь с определением толщины линии.У меня есть бинарная кривая.Мне нужно выяснить расстояние каждой точки скелета кривой до края линии в направлении нормали.Итак, я сначала вычислил скелет бинарной кривой.Следовательно, для каждого пикселя скелета я вычисляю нормаль.Эта ситуация изображена на рисунке, показывая скелет и карту нормальных векторов от каждого пикселя.В этом пункте я не знаю, как вычислить расстояние для каждого пикселя скелета до края кривой в нормальном направлении.На практике мне нужно посчитать количество пикселей (логическая 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