用MATLAB进行图像处理

图像处理概念,算法和MATLAB

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

内容

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

最后一次我提出了这个问题:MATLAB如何将特定数组元素的值与屏幕上显示的颜色相关联?让我们从MATLAB的两个基本像素-颜色显示模型开始:

  • 三维数组元素值直接指定像素的颜色
  • 2-D矩阵元素值通过图形或轴色图间接指定像素颜色

真彩图像

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

Plane_1 = [1 0 0;0 1 1];Plane_2 = [0 1 0;10 0 1];Plane_3 = [0 0 1;11 10 0];RGB = cat(3,plane_1,plane_2,plane_3);Im = imshow(rgb,“InitialMagnification”“健康”);标题(“六个像素的真彩色图像”

那么,这里发生了什么?首先看看的大小rgb

大小(rgb)
Ans = 2 3 3

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

的大小rgb三维空间是3。这是因为我们使用了3个不同的值来指定像素的颜色。下面是洋红色的3个值,分别是第2行和第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

黄色是没有红光、全强度绿光和全强度蓝光的混合。

这种类型的图像,其中每个像素的颜色由三个值表示,通常称为a真彩图像

现在让我们看一下图形图像对象的调用在上面返回的imshow

即时通讯
CData: [2x3x3 double] CDataMapping: 'direct'

属性的最常用属性图像对象,CData而且CDataMapping.(我不会再进一步谈论CDataMapping今天。我们将在接下来的几篇博文中讨论这个问题。)

CData,代表颜色数据,包含我们上面创建的2 × 3 × 3数组。

即时通讯。CData
Ans (:,:,1) = 1 0 0 0 1 1 Ans (:,:,2) = 0 1 0 1 1 Ans (:,:,3) = 0 0 1 1 1 0 0 1 1 0

我们可以直接改变这个属性中的值来改变图像的颜色。例如,如果我们将第一行第二列像素的绿色值从1.0降低到0.5,我们就会产生更深的绿色阴影。

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

对于真彩色图像,更改色图对显示的图像颜色没有影响。

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

索引图像

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

S =负载(“小丑”这是负载的功能形式。这个表单返回一个结构,其字段是存储的变量%在mat文件。
s = X: [200x320 double] map: [81x3 double] text: [2x1 char]

X而且地图变量存储在小丑。垫都是必要的,以显示正确的图像。X包含像素值和地图包含相关的颜色映射。

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

s.X (5,5)
Ans = 61

然后使用该值作为colormap矩阵的行索引,map:

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

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

参数来显示图像CData和颜色映射到imshow

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

与真彩色图像不同,索引图像会受到图形颜色映射变化的影响。

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

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

我下次再讲。




发布与MATLAB®R2015b

|
  • 打印
  • 发送电子邮件

评论

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