0

我观察到,每当我使用该命令时imagesc(image);,生成的图像都会有一些区域是黄色的,而背景是红色的。

有没有办法分割图像的这些区域?如果没有,它们是否有任何可用于阈值的类似模式,或者颜色表示是否毫无意义?

我在 Windows 上使用 Matlab R2012a。

4

1 回答 1

3

当您使用 imagesc (图像比例的缩写)时,您通过将该矩阵的最小值映射到颜色图的一端并将矩阵的最大值映射到另一端来可视化矩阵。

默认情况下,MATLAB 使用正常的 RGB 颜色范围的 jet() 颜色图。如果图像的某些部分变成黄色,则表示矩阵的元素处于最高值和最低值之间的某个特定位置。

希望下面的示例更清楚地说明了这一点,并展示了如何分割矩阵的“黄色”区域(它本身实际上没有任何颜色)

colorRes = 256;

%# In a jet colormap with size 256, yellow is at placement 159
yellow = 159;
yellowScale = ((yellow/256));

image = repmat(1:colorRes,40,1);

figure(1);clf;
colormap(jet(colorRes))

subplot(2,1,1)
imagesc(image)
title('Original image')

%# Segment out yellow
colorDist = 1/colorRes*5; %# Make scalar higher to include colors close to yellow
imageSegmented = zeros(size(image));
imageSegmented(abs(image/colorRes-yellowScale)< colorDist) = 1;

subplot(2,1,2)
imagesc(imageSegmented)
title('Yellow segmented out')

在此处输入图像描述

于 2012-10-14T19:03:36.103 回答