史蒂夫与MATLAB图像处理

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

MATLAB图像显示真彩和索引图像

内容

MATLAB图像显示真彩和索引图像

最后一次我提出这个问题:MATLAB如何将特定数组元素的值关联到一个颜色显示在屏幕上吗?让我们开始探索MATLAB的两种基本的像素颜色显示模式:

  • 三维数组元素的值直接指定像素的颜色
  • 二维矩阵元素值指定像素颜色间接,通过图或轴colormap

真彩图像

首先我将构建一个简单的图像只包含六个像素:红色,绿色,蓝色,青色,品红色,和黄色。

plane_1 = [1 0 0;0 1 1];plane_2 = [0 1 0;1 0 1];plane_3 = [0 0 1;1 1 0];rgb =猫(3 plane_1 plane_2 plane_3);我= imshow (rgb,“InitialMagnification”,“健康”);标题(“真彩图像有六个像素”)

那么,这是怎么回事?首先看看的大小rgb:

大小(rgb)
ans = 2 3 3

前两个数字的大小rgb告诉你的行数和列的像素。有两行三列。

的大小rgb第三个维度是3。这是因为我们使用三种不同的值来指定一个像素的颜色。下面是红色的三个值颜色,第二行,列2:

rgb (2, 2,:)
ans (:: 1) = 1 ans (:,: 2) = 0 ans (:,:, 3) = 1

三个数字代表的添加剂混合红色,绿色和蓝色的光。1的值对应于烈度光,而0的值对应于没有光。所以上面的红色颜色是烈度红灯、绿灯,烈度蓝光。同样,这里有三个黄色像素值:

rgb (2 3:)
ans (:: 1) = 1 ans (:,: 2) = 1 ans (:,:, 3) = 0

黄颜色是没有红灯、烈度绿灯,烈度蓝光。

这种类型的图像,每个像素的颜色是由三个值,通常被称为一个真彩图像

现在让我们看看图形图像对象,该对象被调用返回的上面imshow:

即时通讯
我=图像的属性:CData:[2子集要双]CDataMapping:“直接”

对象显示显示最常用的属性图像对象,CDataCDataMapping。(我不会进一步谈论CDataMapping今天。我们将回到它在接下来的几个博客之一。)

CData,这代表颜色数据我们创建,包含2-by-3-by-3数组。

im.CData
ans (:: 1) = 1 0 0 0 1 1 ans (:,: 2) = 0 1 0 1 0 1 ans (:,:, 3) = 0 0 1 1 1 0

我们可以改变这个属性的值直接改变图像颜色。例如,如果我们降低绿色像素值在第一行,第二列从1.0到0.5,我们做一个暗的绿色。

im.CData (1、2、2) = 0.5;snapnow

真彩图片一样,改变colormap对图像颜色显示没有影响。

colormap(热)标题(“改变图colormap不影响像素颜色的)

索引图像

如果图像CData是二维的,那么CData值被视为查找索引到轴或图colormap。作为一个例子,让我们使用一个索引图像与MATLAB船只,小丑。垫(Ned的最喜欢的)。

s =负载(“小丑”)%这个负载的函数形式。这种形式的回报%变量存储结构的字段MAT-file %。
s = X (200 x320双):地图:[81 x3双]标题:x1 char [2]

X地图变量存储在小丑。垫都必须正确显示图像。X包含像素值,地图包含colormap有关。

得到的颜色(5,5)像素,首先看看X (5,5)是:

s.X (5,5)
ans = 61

然后使用该值作为进入colormap矩阵的行索引,地图:

:s.map (61)
ans = 0.9961 0.5781 0.1250

这些是相同的三个颜色组件(红、绿、蓝色)用于真彩图像。所以(5,5)像素有很多红色,绿色,和少量的蓝色。

显示图像,通过这两个CData和colormapimshow

imshow (s.X s.map)标题(索引图像的)

与真彩图像、图像索引图的colormap受到改变。

colormap(酷)标题(“索引图像显示不正确如果你使用了错误的colormap”)

在我以前的文章我建议,可能真的有三个像素颜色显示模型在MATLAB而不是两个。第三个显示模型是索引图像模式的一种变体。

我下次会讲到。




发表与MATLAB®R2015b

|
  • 打印
  • 发送电子邮件

评论

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