8-разрядный 2d-массив в matlab

#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 будет рисовать изображение, и я думаю, что вы искали.