# Fitting spline to outline

5 visualizzazioni (ultimi 30 giorni)
John Fullerton il 7 Ago 2019
Commentato: Mehri Mehrnia il 20 Giu 2022
I have been trying to write a code (shown below) that will identify the outline of an object and then fit a spline to it.
I can identify the edge (using a ball for example below, image 1), but it picks up multiple points around the edge for each x and y value (image 2). So, I've tried to clean it up be removing some of the points.
However, the final spline doubles back on itself (image 4). How do I stop that from happening and just plot a smooth line connecting all the points?
% Get outline
BW = edge(Image, 'Canny', 0.6);
B = bwboundaries(BW);
J = num2cell(cell2mat(B),1);
F(:,1) = J{1,1};
F(:,2) = J{1,2};
%Show image and outline points
figure
imshow(I)
hold on
scatter(F(:,1),F(:,2), 'r0')
%Reduce number of points
for q = 20:20:(numel(F)/2)
F1((q/20),:) = F(q,:);
end
% Fit spline
x = F1(:,1);
y = F1(:,2);
pointspline = [x'; y'];
values = cscvn(pointspline);
sp = fn2fm(values,'B-')
%Show reduced points and spline
figure
scatter(F1(:,1),F1(:,2), 'r')
hold on
fnplt(sp)
1.
2.
3.
4.
##### 2 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Mehri Mehrnia il 20 Giu 2022
something is wrong with this code, I used it for a boundary of image. it shifts it 90 degrees.

Accedi per commentare.

### Risposte (1)

Pujitha Narra il 19 Ago 2019
Hi John,
There is a similar example here:
Hope this helps.
##### 0 CommentiMostra -1 commenti meno recentiNascondi -1 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su Splines in Help Center e File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by