我想在二进制图像中的单元格周围绘制椭圆形状。到目前为止,我尝试使用下面显示的代码在二进制图像中的单元格周围绘制椭圆。在代码中,IBord是二进制image.Code在单元格周围成功绘制椭圆形状。
s = regionprops(IBord, 'Orientation', 'MajorAxisLength', 'MinorAxisLength', 'Eccentricity', 'Centroid');
figure(2);
imshow(IBord)
phi = linspace(0,2*pi,50);
cosphi = cos(phi);
sinphi = sin(phi);
for k = 1:length(s)
xbar = s(k).Centroid(1);
ybar = s(k).Centroid(2);
a = s(k).MajorAxisLength/2;
b = s(k).MinorAxisLength/2;
theta = pi*s(k).Orientation/180;
R = [ cos(theta) sin(theta)
-sin(theta) cos(theta)];
xy = [a*cosphi;b*sinphi];
xy = R*xy;
X = xy(1,:) + xbar;
Y = xy(2,:) + ybar;
plot(X,Y,'r','LineWidth',2);
end
请建议我如何修改此代码以在二进制图像中的单元格周围绘制椭圆形状(蛋形状)。
答案 0 :(得分:0)
实现此效果的一种方法是在cosphi
和sinphi
上使用较小的指数。
gam = .8
xy = [a * sign(cosphi) .* abs(cosphi).^gam; b * sign(sinphi) .* abs(sinphi).^gam];
使用gam
。这应该给出更多椭圆形的形状。