用MATLAB进行图像处理

图像处理概念,算法和MATLAB

如何显示色块

当工作的“彩色图像处理”章节DIPUM3E,我发现自己经常想要展示方形块(或色块)的颜色,就像这样:

最后,我写了一个函数,colorSwatches,使用单个补丁对象显示一组颜色方块。此函数用于DIPUM3E,并被包括在本书的MATLAB代码文件.要调用它,从一组排列在Px3矩阵中的RGB颜色值开始,其中P是颜色的数量。的functions返回MATLAB绘图函数所使用的颜色:

C = lines(7)
C = 0 0.4470 0.7410 0.8500 0.3250 0.0980 0.9290 0.6940 0.1250 0.4940 0.1840 0.5560 0.4660 0.6740 0.1880 0.3010 0.7450 0.9330 0.6350 0.0780 0.1840

现在只要调用colorSwatches,传入颜色集合,并可选地传入所需的颜色网格大小。

Grid_size = [3 3];grid_size colorSwatches (c)

上图中的色板并不完全是方形的,这是因为坐标轴上的数据纵横比不是1:1。但是我们可以用daspect函数。

Daspect ([11 1 1])

让我们深入了解一下,看看这一切都是使用一个补丁对象工作的。

p = colorSwatches(c,grid_size)
p =带有属性的补丁:FaceColor: 'flat' FaceAlpha: 1 EdgeColor: 'none' LineStyle: '-' Faces: [9×5 double] Vertices: [45×2 double]使用GET显示所有属性

对我们来说,关键的属性是顶点,FaceVertexCData.的顶点属性为45x2,表示补丁有45个顶点。他们是:

持有情节(p.Vertices (: 1) p.Vertices (:, 2),‘*’)举行

属性为9x5,表示有9个面,每个面连接5个顶点。这是第二行属性:

face2 = p.Faces(2,:)
Face2 = 6 7 8 9 10

这些是指数顶点财产。下面,我将使用而且顶点属性在第二个面周围绘制黑线。

顶点(face2,1);y = p.v tices(face2,2);持有情节(x, y,“k”“线宽”, 3)

FaceVertexCData属性控制每个面的颜色。注意,每个面都有一个不变的颜色,因为FaceColor属性是“平”

p.FaceVertexCData
ans = 0 0.4470 0.7410 0.8500 0.3250 0.0980 0.9290 0.6940 0.1250 0.4940 0.1840 0.5560 0.4660 0.6740 0.1880 0.3010 0.7450 0.9330 0.6350 0.0780 0.1840 NaN NaN NaN NaN

如果我们改变第二行的数字FaceVertexCData属性,则第二个面的颜色将发生变化。

p.FaceVertexCData(2,:) = [1 1 0];

另一个应用colorSwatches就是画一个彩色斜面。例如,我们可以通过使用单行色板,将每个色板之间的间隔设置为0,并控制数据纵横比,使其看起来像一个长而细的条来可视化parula色块。

Parula_colors = parula(256);Gap = 0;colorSwatches(parula_colors,gap,[1 256]) daspect([30 1 1])轴

最后一点:当我写作的时候colorSwatches,我不希望它对坐标轴属性有任何副作用,这就是为什么我没有写它来自动设置坐标轴DataAspectRatio.不过,我确实认为,拥有实际上是正方形的色板是足够常见的,可以为它编写一个函数,所以我添加了squareColorSwatchesMATLAB彩色工具.下面是它的实际情况:

squareColorSwatches (c, 3 [3])




由MATLAB®R2019b发布

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。