在Matlab中在矩阵内创建一个圆

时间:2017-02-07 18:00:54

标签: matlab matrix

我想在矩阵中创建一个圆圈。例如;制作一个维度的矩阵,让我们说ones(200,200),然后选择其圆xy坐标,并更改这些选定像素的颜色和然后使用imshow(img)显示图像。如图所示。有可能吗?

enter image description here

我可以将此绘图代码更改为图片以使用圆形功能吗?

radius = 5; 
centerX = 20;
centerY = 30;
viscircles([centerX, centerY], radius);
axis square;

1 个答案:

答案 0 :(得分:1)

您可以使用meshgrid创建xy坐标的网格,然后使用圆的等式来检查每个x / y对是否在圆圈内。这将产生一个逻辑结果,可以显示为图像

[x,y] = meshgrid(1:200, 1:200);
isinside = (x - centerX).^2 + (y - centerY).^2 <= radius^2;

imshow(isinside);

如果您只是想要圆圈的轮廓,您可以将卷积应用于生成的二进制蒙版以减小其大小,然后减去圆圈以仅生成轮廓

shrunk = ~conv2(double(~isinside), ones(3), 'same');
outline = isinside - shrunk;

imshow(outline)

如果您有图像处理工具箱,则可以使用bwperim来生成二进制轮廓

outline = bwperim(isinside);
imshow(outline);

enter image description here

<强>更新

如果您想更改上面显示的颜色,可以在显示之前反转outlineisinside

isinside = ~isinside;
outline = ~outline;

imshow(isinside)
imshow(outline)

或者您可以反转色彩图

imshow(isinside)
colormap(gca, flipud(gray))

enter image description here