我观察到,每当我使用命令imagesc(image);
时,生成的图像都会有一些颜色为黄色且背景为红色的区域。
有没有办法划分图像的这些区域?如果没有,他们有任何类似的模式可以用于阈值处理或颜色表示无意义?
我在Windows上使用Matlab R2012a。
答案 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')