По определению, RGB-изображение имеет 3 канала, что означает, что вам нужна трехмерная матрица для представления изображения. Итак, правильный ответ:
rgbImage = repmat(255*grayImage/max(grayImage(:)),[1 1 3]);
Будьте осторожны при нормализации grayImage
. Если grayImage
равно uint8
, то вы потеряете некоторую точность в операции 255*grayImage/max(grayImage(:))
.
Кроме того, нормализация grayImage
зависит от данных. В своем вопросе вы использовали два метода:
rgbImage = grayImage / max(max(grayImage));
, который нормализует изображение в градациях серого таким образом, что максимальное значение в изображении составляет 1
и
rgbImage = grayImage / 255;
, который имеет смысл, только если значения в grayImage
лежат в диапазоне 0-255
.
Так что это действительно зависит от того, что вы хотите сделать. Но если вам нужно изображение RGB, вам нужно преобразовать одноканальную матрицу в 3-канальную матрицу.