How to smoothen a curve so I can separate 2 objects?
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
Greetings to all.
I wish to smoothen a curve drawn in an image, so I can separate it into 2 objects.
Here is the code used to produce the curve:
THETA=linspace(0,pi,cirP);
Radii = abs( drawPoint(1,2) - cenDraw(1,2) );
[cirCoorX cirCoorY] = pol2cart(THETA,Radii);
cirCoorY = cirCoorY + cenDraw(1,1);
cirCoorX = cirCoorX + cenDraw(1,2);
cirCoor = zeros( cirP, 2 );
cirCoor(:,1) = cirCoorY;
cirCoor(:,2) = cirCoorX;
% round up the decimal to integer
cirCoor2 = cirCoor;
for i = 1 : cirP
yCoor = cirCoor2(i,1);
xCoor = cirCoor2(i,2);
yCoorUp = ceil(yCoor);
xCoorUp = ceil(xCoor);
if yCoorUp ~= yCoor
yDiff = yCoorUp - yCoor;
if yDiff >= 0.5
yCoor = ceil(yCoor);
else
yCoor = floor(yCoor);
end
end
if xCoorUp ~= xCoor
xDiff = xCoorUp - xCoor;
if xDiff >= 0.5
xCoor = ceil(xCoor);
else
xCoor = floor(xCoor);
end
end
cirCoor2(i,1) = yCoor;
cirCoor2(i,2) = xCoor;
end
%%Draw the arc
bwFil2 = bwFil;
for i = 1 : cirP
yBlack = cirCoor2(i,1);
xBlack = cirCoor2(i,2);
bwFil2(yBlack,xBlack) = 0;
% figure; imshow(bwFil2); title('bwFil2')
end
Here is the image before the curve is drawn: http://www.imgplace.com/viewimg543/1755/94beforecurve.png
As you can notice, the curve is not smooth and the bwlabel may not be able to recognise 2 separate objects properly.
Any guide is welcomed! Thanks.
Réponses (0)
Cette question est clôturée.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!