我想在矩阵中创建一个圆圈。例如;制作一个维度的矩阵,让我们说ones(200,200)
,然后选择其圆x
和y
坐标,并更改这些选定像素的颜色和然后使用imshow(img)
显示图像。如图所示。有可能吗?
或
我可以将此绘图代码更改为图片以使用圆形功能吗?
radius = 5;
centerX = 20;
centerY = 30;
viscircles([centerX, centerY], radius);
axis square;
答案 0 :(得分:1)
您可以使用meshgrid
创建x
和y
坐标的网格,然后使用圆的等式来检查每个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);
<强>更新强>
如果您想更改上面显示的颜色,可以在显示之前反转outline
和isinside
isinside = ~isinside;
outline = ~outline;
imshow(isinside)
imshow(outline)
或者您可以反转色彩图
imshow(isinside)
colormap(gca, flipud(gray))