Преобразование изображения Uint8 в градациях серого в изображение UINT8 в RGB - PullRequest
0 голосов
/ 03 июля 2019

У меня есть код для запуска, который использует исходное изображение и изображение маски .Код предполагает, что исходное изображение RGB, а мое исходное изображение - в оттенках серого.Это должно быть результатом команды MATLAB whos, когда я запускаю код:

Name           Size                Bytes  Class      Attributes

mask         308x206               63448  logical              
origImg      308x206x3            190344  uint8                

Маска создается путем создания части изображения белым, а остальная часть - черным (в простом программном обеспечении, таком как windowspaint).

Я хочу использовать серое изображение в качестве origImg и создать маску из origImg в рисовании Windows, но результат команды MATLAB whos следующий, когдаЯ хочу использовать пользовательские фотографии с атрибутами, как я уже сказал:

Name           Size                Bytes  Class    Attributes

mask         490x640x3            940800  uint8              
origImg      490x640              313600  uint8              

Мне нужно преобразовать размер origImage в x3 и удалить x3 измаскировать, а также конвертировать его класс из unit8 в логический .В этом случае, я думаю, что код должен работать правильно.

Что я должен сделать здесь, чтобы подготовить origImg и mask для этой цели?

origImg=imread('G:\the_path\to\my_custom\image.png');
mask=imread('G:\the_path\to\my_custom\image_mask.png');
% I have to do something here to make it work.
whos;
% Rest of the code...

1 Ответ

1 голос
/ 04 июля 2019

Я не уверен, правильно ли я вас понимаю.

Чтобы сделать изображение RGB из изображения в оттенках серого, которое все еще отображается как изображение в оттенках серого, вы можете использовать

origImg = repmat(origImg,1,1,3);

, который просто повторяет ваше изображение в оттенках серогодля каждого канала изображения RGB.

Для маски необходимо сделать обратное.поскольку я не знаю ваш файл image_mask.png, я предполагаю, что это RGB-изображение, которое использует только черный и белый.В этом случае все три канала одинаковы, и вы можете просто использовать один из них для маски, независимо от того, какой из них:

mask = mask(:,:,1);

Чтобы преобразовать его в логический, используйте

mask=logical(mask);
...