使用imagesc进行分割

时间:2012-10-14 18:24:57

标签: matlab image-processing image-scaling

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

有没有办法划分图像的这些区域?如果没有,他们有任何类似的模式可以用于阈值处理或颜色表示无意义?

我在Windows上使用Matlab R2012a。

1 个答案:

答案 0 :(得分:3)

当您使用imagesc(图像比例的缩写)时,您可以通过将该矩阵的最低值映射到色图的一端来显示矩阵,并将矩阵的最高值映射到另一端。

默认情况下,MATLAB使用jet()色图,这是普通的RGB色范。如果图像的某些部分变成黄色,则意味着矩阵的元素在最高值和最低值之间存在一些特定的位置。

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

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')

enter image description here