как отобразить/обновить черно-белое изображение, используя функцию set в MATLAB

Я делаю проект по обработке видео, в котором изображения обрабатываются, отображаются и обновляются с помощью кода ниже:

hFigure=figure(1);
set(hFigure,'Position', [50, 250, 400, 300]);

IM1=getdata()  % get frame from video object

%initialise
figure(1)
handles=image(IM1);
IM1=binarize(IM1);

Loop  %update frame 
    IM1=getdata()  % get frame from video object
    IM1=binarize(IM1);
    set(handles,'CData',IM1);
end loop 

Выходное изображение синее и желтое, а не черно-белое. Онлайн-инструкция говорит, что когда CData равно uint8, тогда выходной цвет будет RGB; когда logical, вывод будет черно-белым. Может ли кто-нибудь сказать мне, как установить тип CData в logical? Или вы знаете другие альтернативы, чтобы решить эту проблему?


person benkyou    schedule 21.03.2017    source источник
comment
Использовать цветовую карту (серый)   -  person user2999345    schedule 21.03.2017


Ответы (1)


Отображаемые данные будут только в формате RGB, если CData равно M x N x 3. Если это только M x N, вместо этого он будет отображаться с использованием цветовой карты осей. В вашем случае используется цветовая карта по умолчанию (parula), поэтому вам нужно либо преобразовать ввод в RGB, либо использовать цветовую карту gray для отображения черно-белого изображения.

Подход RGB

set(handles, 'CData', repmat(IM, [1 1 3]))

Подход с цветовой картой

hFigure = figure(1);
set(hFigure,'Position', [50, 250, 400, 300]);

IM1 = getdata()  % get frame from video object

handles = image(IM1);
colormap(hFigure, gray(2))
person Suever    schedule 21.03.2017