我正在编写一个可以拍摄图像并执行特定平滑任务的函数。
在我的功能的最开始,我使用pic = rgb2gray(pic);
我希望允许该功能拍摄任何图像(即使它已经是灰度)。 在Matlab中,如果我传递一个灰度图像,它当前会出错,因为它无法转换它(很明显)。
是否有内置功能或简单方法来测试图像并确定其颜色格式?
我在google上阅读了有关isRGB和isGrayscale函数的内容,但它们已从更高版本的Matlab中删除...
如果它具有内置功能,我认为这样的话会很酷。
if (pic == RGB)
do
.
.
.
elseif (pic == GrayScale)
do
.
.
.
else
do
.
.
.
如果没有,也许我可以编写一个带pixel x,y
并测试其值的函数?
if (p(x,y) == ....
还是什么?我不确定......想法?
答案 0 :(得分:12)
彩色图像有3个通道(R,G,B),所以:
size(pic, 3) = 3
灰度:
size(pic, 3) = 1
答案 1 :(得分:6)
与@Milo建议类似,但具有不同的功能。使用ndims
:
ndims(pic)
返回图片pic
中的维度数。数组中的维数始终大于或等于2,而在RGB图像中,它将是>2
。尾随单身尺寸被忽略(单身尺寸是size(A,dim) = 1
的任何尺寸。)
答案 2 :(得分:1)
F = imfinfo( 'yourimage.someextension');
f.ColorType
这将返回图像的ColorType,您可以通过编程方式进行检查。