Определите, является ли изображение оттенками серого в Matlab
Я пишу функцию, которая может принимать изображение и выполнять определенные задачи сглаживания.
В самом начале моей функции я преобразую изображение в оттенки серого, используя 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) == ....
или что-то? Я не уверена... Мысли?
3 ответов
похоже на то, что предложил @Milo, но с другой функцией. Использовать ndims
:
ndims(pic)
возвращает количество измерений в образ pic
. Количество измерений в массиве всегда больше или равно 2, а в RGB-изображении это будет >2
. Конечные одноэлементные измерения игнорируются (одноэлементное измерение-это любое измерение, для которого size(A,dim) = 1
.)
цветные изображения имеют 3 канала (R, G, B), так что:
size(pic, 3) = 3
для оттенков серого:
size(pic, 3) = 1
f=imfinfo ('yourimage.someextension');
Ф.Цветотипы
это вернет вам ColorType изображения, которое вы можете проверить программно.