【问题标题】:Isolating Pixels by Color按颜色隔离像素
【发布时间】:2014-02-28 18:07:15
【问题描述】:

我是 matlab 新手,正在尝试自学。

我的第一个任务是尝试拍摄一张图像并将一张图像中的颜色值与另一张图像进行比较。为了做到这一点,我需要收集特定阈值之间的所有 R、G、B 值,并将它们相应地放在一个向量中。我目前的问题是如何浏览图像并隔离,例如,R 值在 [0,31] 之间、G 值在 [0,31] 之间、B 值在 [0,31] 之间的像素?

给定图像 X,我知道如何在图像中找到强度,但是在寻找颜色时我不知所措。如果我需要进一步解释,请告诉我。

谢谢

编辑:图像是 2D .jpegs(不知道是否有帮助)

【问题讨论】:

  • 您的图像是基于颜色图还是 3D 数组(大小 m x n x 3)?

标签: image matlab colors pixels


【解决方案1】:

首先,将您的 jpeg 图像读入 Matlab 3D 数组(前两个维度表示位置,第三个维度表示 R、G、B):

X = imread('image.jpg');

然后:

index = find(X(:,:,1)<=31 & X(:,:,2)<=31 & X(:,:,3)<=31);
R = X(index);
G = X(index + size(X,1)*size(X,2));
B = X(index + 2*size(X,1)*size(X,2));

做你想做的事。它使用linear indexing的概念。

【讨论】:

  • 你能解释一下这个计算吗:index + 2*size(X,1)*size(X,2)?
  • @DeeVu 线性索引通过将所有索引“累积”为一个来工作:首先是行索引,然后是列索引,然后是“切片”索引(第三维)。当您将size(X,1)*size(X,2) 添加到线性索引时,您将移动到第二个切片(即G 分量);或者当您添加 2*size(X,1)*size(X,2) 时,您将移至第三个(B 组件)
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2011-04-14
  • 2015-07-26
相关资源
最近更新 更多