Одним из способов является использование логического индексирования .Учитывая матрицу изображения img
(которая может быть 2-D оттенки серого или 3-D RGB ), это заменит все ваши значения:
img(img >= 0 & img <= 64) = 31;
img(img >= 65 & img <= 128) = 95;
img(img >= 129 & img <= 192) = 159;
img(img >= 193 & img <= 255) = 223;
Другой вариант - создать256-элементную справочную таблицу и используйте значения вашего изображения в качестве индексов для этой таблицы:
lookupTable = [31.*ones(1,65) 95.*ones(1,64) 159.*ones(1,64) 223.*ones(1,63)];
img = uint8(lookupTable(double(img)+1));
Обратите внимание, что с этим решением вам придется помнить о классе вашей матрицы изображения.Многие изображения имеют класс uint8
, охватывая значения от 0 до 255. Чтобы использовать эти значения в качестве индекса, необходимо преобразовать их в класс, который может хранить большие целые числа (например, double
), чтобы избежать насыщения при максимальном значении 255, затем добавьте один, так как вам нужен индекс от 1 до 256. Затем вы захотите преобразовать полученную матрицу изображений обратно в класс uint8
.