конвертировать двойной в 12 бит, используя Matlab - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь реализовать функцию комбинирования цветов из программного обеспечения для обработки изображений, называемого metamorph, в matlab. У меня есть три файла uint16 bit (R, G и B). Мне нужно преобразовать их в 12 бит, а затем объединить их в RGB-изображение. .metamorph преобразует 16-разрядные файлы в 12-разрядные, а затем создает RGB-изображение из трех 12-разрядных файлов. Мой код выглядит следующим образом. Я не совсем уверен, как перейти к преобразованию 16-разрядного файла изображения в 12 -битовый.

    C1 = imread('metamorph/R.tif',3);
    C2 = imread('metamorph/G.tif',3);
    C3 = imread('metamorph/B.tif',3);

    R=mat2gray(C1);
    G=mat2gray(C2);
    B=mat2gray(C3);

    rgb1=cat(3,R,G,B);
    imshow(rgb1)

любая помощь очень ценится.

Спасибо

1 Ответ

1 голос
/ 06 октября 2011

Я не думаю, что MATLAB имеет тип данных для 12 бит (что составляет полторы байта на цвет на пиксель). Конечно, вы можете масштабировать ваши двойные данные, чтобы они соответствовали 12-битному целому числу:

rgb12= round(rgb1/max(rgb1(:))*(2^12-1)); %# scale & round image values to 12 bit

... но тогда реальный вопрос в том, что хорошего в этом есть:

  • вы хотите экспортировать в какой-нибудь 12-битный формат файла RGB? imwrite, очевидно, может делать 12-битный JPEG, но я не уверен, что это 12-битный для цвета.
  • или вы хотите сэкономить ОЗУ, находясь в MATLAB? В этом случае я не уверен, что есть разумный способ сделать это.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...