#image #matlab
#изображение #matlab
Вопрос:
У меня небольшая проблема с сохранением данных в массиве. Я хочу сохранить данные в виде 10001010 <- 8 бит в 2d-массиве, содержащем 100 строк и 100 столбцов. что я делаю сейчас, так это
a = rand(100,100);
a = a * 127; // <<- this is done to make it 8 bits
Чтобы подтвердить то, что я сделал, я сделал imshow для отображения изображения.
Когда a умножается на 127, большинство пикселей в оттенках серого становится белым, но перед шагом умножения отображается хорошее изображение в оттенках серого.
a = rand (100,100); после a = a * 127;
Комментарии:
1. Вы хотите сказать, что вам нужен массив целых значений в диапазоне 0-> 255?
Ответ №1:
Если вы хотите 8-битное представление, это фактически 0-> 255, поскольку интенсивности изображения без знака. Matlab проверяет, к какому классу относится изображение при использовании imshow, если это double, ожидается диапазон 0-> 1. Следовательно, вам нужно преобразовать изображение в uint8 после умножения, чтобы оно отображалось должным образом.
a = rand(100,100);
a = a*255;
a = uint8(a);
imshow(a);
Комментарии:
1. изображения в оттенках серого не имеют 8-разрядного знака?
2. На самом деле нет смысла в отрицательной интенсивности, следовательно, без знака. Но вы можете представить его любым способом, который вы хотите, я думаю. Вот как imshow будет рисовать изображение, и я думаю, что вы искали.