史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

棋盘上,隐式扩张、REPELEM和Unicode象棋女王

在几周前,我写了八皇后问题的求解算法。这个职位包括这样的图。

今天我想告诉你们我是如何在MATLAB,图。首先,让我们谈谈。早在2011年,我写了各种各样的方法让一个棋盘(棋盘)模式。在这篇文章中,我玩游戏repmat的1地板上,。这有点疯狂。

我仍然喜欢使用整数的1,像这样。

(1)美元^ {(n_1 +甲烷)}$

2011年,我使用ndgrid一个矩阵的整数,n_1 +甲烷、美元。

(n1、n2) = ndgrid (0:4);(1)。^ (n1 + n2)
ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

在R2016b引入隐式扩张以来,尽管如此,我不再需要使用ndgrid矩阵的显式形式的权力。

n = 0:4;(1)。^ (n + n”)
ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

在我八皇后的代码,在这里我得到了棋盘的灰色阴影。(有很多方法可以做到这一点。)

N = 8;dark_square_color = 7;light_square_color =。9;color_range = light_square_color - dark_square_color;f = (1) ^ ((1: N) + (1: N));f = (f + 1) * color_range / 2;f = f + dark_square_color;f (1:4, 1:4)
ans = 0.9000 0.7000 0.9000 0.7000 0.7000 0.9000 0.7000 0.9000 0.9000 0.7000 0.9000 0.7000 0.7000 0.9000 0.7000 0.9000

接下来,我需要复制的每个元素f使图像更大广场。你知道如何复制一个矩阵的元素?一些有经验的MATLAB用户会使用克隆亚麻函数。然而,现在你可以使用新的repelem函数。的参考页面告诉你当这个函数了。

我要让我的方块60像素宽,然后我会把它变成一个真彩图像的像素颜色是独立的图的colormap。

pixel_size = 60;f = repelem (f pixel_size pixel_size);f = repmat (f, 1, 1, 3);h = imshow (f,“InitialMagnification”,100);

现在我想给你们展示一个坐标系统的技巧。如果你打开轴显示,你可以看到图像的像素坐标。(在图像处理工具箱术语中,这些被称为内在的坐标。)

当我到达部分显示女王,然而,我希望能够将它们基于坐标的棋盘广场,独立的像素的数量每平方。我可以通过操纵XDataYData图像的属性。这些属性分配空间坐标和左/右顶部/底部的边缘图像。

h。XData = (0.5 N + 0.5);h。YData = (0.5 N + 0.5);轴(0.5 [0.5 N + 0.5 N + 0.5))

现在让我们把一些皇后在黑板上。这是很容易的,因为你可以做文本对象。既然R2014b,你已经能够使用Unicode字符在MATLAB图形绘制文本。和Unicode字符集包括国际象棋符号!黑皇后的象征是在9819(十进制)代码点。

女王= char (9819)
女王= '♛'

让我们把一个女王在广场上在第二行,第三列。美元($ x = 3, y = 2美元)。

总部=文本(3 2女王);

哦,我们的女王是很小的,她似乎也是不平衡的。让我们解决这个问题。

总部。字形大小= 40;总部。HorizontalAlignment =“中心”;

这是更好的。

我有一个更小的编码技巧。当我写八皇后动画代码,我想要一个简单的显示和删除一个女王在任何广场在黑板上。所以,我做了一个文本对象的矩阵,在每一个广场。然后我可以指数矩阵的文本对象和转动可见财产。这是如何。(首先,我删除的文本对象我。)

删除(总部)r = 1: Nc = 1: N皇后(r、c) =文本(c, r, char (9819),“HorizontalAlignment”,“中心”,“可见”,“关闭”,“字形大小”,40);结束结束

好的,让我们打开显示女王的方块。

皇后(5,3)。可见=“上”;皇后(2、4)。可见=“上”;

最后一点乐趣,函数让你修改整个数组的图形对象的属性。

把他们所有!

集(皇后区“可见”,“上”)

(上面的董事会中,顺便说一下,并不是一个解决八皇后问题。如果你想知道)。




发表与MATLAB®R2017a

|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。