2016-05-30 3 views
1

Как я могу imwrite это значение [12 13.5; 15 107.75] без изменения в imread?imwrite двойная матрица в MATLAB

Я хочу сохранить информацию. Но если это значение имеет значение I imread, то у меня есть это [12 13; 15 108].

ответ

2

(Пусть [12 13.5;15 107.75] быть A.)

imwrite Из документации:

imwrite (A, имя файла) записывает данные изображения A в файл, указанный по имени файла. Если A имеет тип данных uint16, а формат выходного файла поддерживает 16-разрядные данные (JPEG, PNG и TIFF), тогда imwrite выводит 16-битные значения.

Таким образом, вы можете умножить A на 100 затем, а затем преобразовать его в uint16. Вы получите [1200 1350;1500 10775]. Напишите его на (JPEG, PNG, or TIFF), например. imwrite(A,'image.jpeg').

Теперь imread('image.jpeg') вернет 16-bit целые числа. Преобразуйте их в двойные, а затем разделите на 100, чтобы получить исходные данные. (например, out = double(imread('image.jpeg'))/100)

Примечание: Наивысшее значение, представляемое в 16 бит, - 65536. Таким образом, это означает, что вы вводите после масштабирования должны иметь номера меньше 65536, иначе вы потеряете информацию. Если вы используете парные разряды less that 255 with precision 2 or less (два места после десятичного), то самым высоким значением после масштабирования будет 25599, который меньше 65536, так что это нормально. Просто позаботьтесь, если ваши входные значения имеют различный диапазон или точность.

Тем не менее, я думаю, что вы должны записать данные в файл, используя fprintf, как предлагает Т. Хуанг.

+0

Большое вам спасибо .... its very usefull – shiva

+0

@shiva Если это вам помогло, выберите этот ответ в качестве принятого ответа (нажав на галочку, находящуюся прямо под счетчиком ответов). Это поможет другим, кто придет сюда. – Nishant

Смежные вопросы