Сохранить изображение uint16 tiff как truecolor с Matlab

Я обрабатываю изображения микроскопии (в Matlab) в формате tiff, обычно ***** или uint16. В основном я читаю их, помещаю их в массив ячеек для обработки, а затем экспортирую их в формате tiff либо в виде последовательности изображений, либо в стеке (используя imwrite и либо свойство "переписать", либо "добавить" свойство writemode для imwrite соответственно). До сих пор все работает очень хорошо.

Проблема, с которой я столкнулась, следующая:

Когда я открываю изображения с помощью ImageJ, они не находятся в цветовом режиме с цветовым цветовым "RGB", а в сложном режиме. Например, ImageJ считывает данные как 8 бит, что и есть, но не открывает изображение как truecolor (Извините за плохой выбор слов, я не знаю правильную терминологию). Следовательно, мне нужно вручную объединить 3 канала вместе, что надоедает для больших наборов данных.

Вот объяснение экрана. Слева - это то, что мне хотелось бы, т.е. что я получаю, если я открываю изображение непосредственно с ImageJ, а справа - то, что у меня есть после сохранения изображений с помощью Matlab и открытия их с помощью ImageJ, чего я не хочу.

Код, который я использую для экспорта последовательности изображений, следующий. "FinalSequenceToExport" - это массив ячеек, содержащий изображения.

for i = 1:SliceNumber
 ExportedName = sprintf('%s%s%d.tiff',fileName,'Z',i);
 imwrite(FinalSequenceToExport{i},ExportedName,'tif','WriteMode','overwrite','Compression','none');
end
  • Если я задаю Matlab размер FinalSequenceToExport {1}, например, он дает 512 x 512 x 3.
  • Если я открою данное изображение в окне команд, а затем сохраню его с тем же кодом, что и выше, он сделает то, что я хочу, и получившееся изображение откроется, как я хочу в ImageJ. Следовательно, я предполагаю, что проблема возникает из-за использования массива ячеек, но я не понимаю, как это сделать.

Надеюсь, я был достаточно ясен. Если нет, попросите подробнее. Спасибо за помощь!

2 ответа

После пересмотра этого вопроса я нашел следующее, чтобы работать, благодаря подсказке @Ashish:

imwrite(*****(FinalSequenceToExport{i}/255),...);

Мне просто нужно было разделить на 255 после преобразования в *****.


Вам нужно указать "ColorSpace"

Попробуйте это

imwrite(FinalSequenceToExport{i},ExportedName,...
 'tif','WriteMode','overwrite','Compression','none', ...
 'ColorSpace', 'rgb');

licensed under cc by-sa 3.0 with attribution.