棋盘图案在黑色和白色加红色圆圈

时间:2016-01-22 17:19:40

标签: image matlab plot

我是新手,也是matlab的初学者。我有这个问题需要我解决。我看过互联网和这个网站找到解决方案。但我无法得到确切的解决方案。这是个问题。

  

在Matlab中绘图

     

“以黑白方式创建棋盘图案的图像,并在图像中用红色圆圈标记所有黑色方块的中心。”

我不允许使用checkerboard命令或其他工具箱命令。我花了很多时间仍然无法解决它。

我能想到的一件事是创建一个由0和1组成的矩阵。像

m=zeros(10);
m(1:2:end,1:2:end) = 1; 
m(2:2:end,2:2:end) = 1; 

1 个答案:

答案 0 :(得分:4)

您已正确创建了棋盘图案。现在你只需要想象它。您可以使用imageimagesc

imagesc(m); 
%// or
%//image(m);

这两个命令的目的是显示矩阵中的图像。此图片遵循彩色地图。最小值可视化为颜色图的下端,而最大比例可视化为颜色图的较高端。

然而imagesc另外缩放输出,以便矩阵中遇到的最小值和最大值分别转到颜色映射的较低和较高端。

您可以选择许多颜色地图。出于棋盘的目的,请使用gray颜色映射:

imagesc(m); colormap gray;
%// or
%//image(m); colormap gray;

为了完整性,可以在此处找到所有颜色图的列表(不包括从R2014b引入的新parula颜色图):

http://matlab.izmiran.ru/help/techdoc/ref/colormap.gif

现在你需要做的最后一件事是绘制每个黑色方块所在的红色圆圈。这可以通过查找棋盘中包含值0的所有坐标,然后用红色绘制这些点来完成:

%// Code from before... your code
m=zeros(10);
m(1:2:end,1:2:end) = 1; 
m(2:2:end,2:2:end) = 1; 

%// New code
imagesc(m); colormap gray;
hold on;
[row,col] = find(m == 0);
plot(row, col, 'r.', 'MarkerSize', 14);

hold on;允许对包含棋盘图案的窗口进行更多更新。如果您尝试更新图形以在其上添加更多内容,则该图将使用新内容覆盖而不保留旧内容。因此,hold on;在那里非常重要。

在这种情况下使用的find命令会在棋盘矩阵m中找到值为0的所有行和列位置。之后,我们将这些位置和plot红色界。这些坐标将作为圆圈放置的中心。我使用plot来执行此操作并确保我们绘制红色圆圈(即r.)。我还使标记的大小足够大,以便您可以看到红点(即MarkerSize=14),但不足以覆盖黑色方块。

我终于得到了这张图片:

enter image description here