Matlab 图像阈值化
Matlab Image thresholding
以下代码显示了蓝色和红色组合的图像。但是,如果我删除 close
语句,它会生成灰度图像(这正是我想要的)。
为什么会这样,以后可以避免吗?
我正在关注 this tutorial on youtube。
clear;
animal1=imread('animal1.jpg');
%% GrayScale
animal2=rgb2gray(animal1);
%% scale
bright=animal2*1.5;
imshow(bright);
close;
%% threshold
binary= bright>220;
imagesc(binary);
当您调用imshow
函数时,会创建一个新图形,默认colormap
设置为grayscale
。如果不调用 close,imagesc
使用相同的 colormap
,并使用灰度显示二值图像。
否则,当前图形被销毁,创建一个新的,imagesc
函数定义一个新的colormap
。本例中的默认 colormap
是 parula
,从蓝色渐变为黄色。
注意直接使用imshow
函数可以显示二值图像
正如 @dlegland 所指出的,这是色图的问题。
在 MATLAB 中 colormap defines the way that data (in your image, plot, whatever) is mapped to a color on the screen. This is done via a linear mapping which can be different for each axes.
当您调用 imshow
时,它是一个相对高级的函数,它会更改显示它的轴的许多属性。这包括颜色图、颜色限制和刻度线等其他内容。在你的例子中,因为你给它一个灰度图像(你使用 rgb2gray
创建),它设置 figure/axes 使用 gray
颜色图。
然而,imagesc
是一个较低级别的函数,不会 对当前轴进行任何更改,除了它会将颜色限制更改为跨越图像的整个动态范围。因此,当您使用 imagesc
在先前由 imshow
使用的轴上绘制图像时。它只是使用 imshow
正在使用的颜色图 (gray
)。
如果未调用 imshow
,则图形将使用默认颜色图(通常为 parula
),您的图像将使用此颜色图显示。
现在的好处是您可以更改与 colormap
命令一起使用的颜色图。例如使用灰度,你会做
colormap gray
或者,如果您只想为特定轴指定该颜色图,您可以执行以下操作
ax = axes();
colormap(ax, gray)
您唯一的选择不是gray
或parula
。 MATLAB 有许多内置的 colormaps 或者您甚至可以指定自己的自定义颜色图。
以下代码显示了蓝色和红色组合的图像。但是,如果我删除 close
语句,它会生成灰度图像(这正是我想要的)。
为什么会这样,以后可以避免吗?
我正在关注 this tutorial on youtube。
clear;
animal1=imread('animal1.jpg');
%% GrayScale
animal2=rgb2gray(animal1);
%% scale
bright=animal2*1.5;
imshow(bright);
close;
%% threshold
binary= bright>220;
imagesc(binary);
当您调用imshow
函数时,会创建一个新图形,默认colormap
设置为grayscale
。如果不调用 close,imagesc
使用相同的 colormap
,并使用灰度显示二值图像。
否则,当前图形被销毁,创建一个新的,imagesc
函数定义一个新的colormap
。本例中的默认 colormap
是 parula
,从蓝色渐变为黄色。
注意直接使用imshow
函数可以显示二值图像
正如 @dlegland 所指出的,这是色图的问题。
在 MATLAB 中 colormap defines the way that data (in your image, plot, whatever) is mapped to a color on the screen. This is done via a linear mapping which can be different for each axes.
当您调用 imshow
时,它是一个相对高级的函数,它会更改显示它的轴的许多属性。这包括颜色图、颜色限制和刻度线等其他内容。在你的例子中,因为你给它一个灰度图像(你使用 rgb2gray
创建),它设置 figure/axes 使用 gray
颜色图。
imagesc
是一个较低级别的函数,不会 对当前轴进行任何更改,除了它会将颜色限制更改为跨越图像的整个动态范围。因此,当您使用 imagesc
在先前由 imshow
使用的轴上绘制图像时。它只是使用 imshow
正在使用的颜色图 (gray
)。
如果未调用 imshow
,则图形将使用默认颜色图(通常为 parula
),您的图像将使用此颜色图显示。
现在的好处是您可以更改与 colormap
命令一起使用的颜色图。例如使用灰度,你会做
colormap gray
或者,如果您只想为特定轴指定该颜色图,您可以执行以下操作
ax = axes();
colormap(ax, gray)
您唯一的选择不是gray
或parula
。 MATLAB 有许多内置的 colormaps 或者您甚至可以指定自己的自定义颜色图。