Как изменить биты на пиксель изображения, загруженного в MATLAB? Я использую диалог файла и функции imread для загрузки изображения в матрицу. Мне просто нужно изменить бит этого изображения на пиксель. Предоставление пользователю возможности выбирать от 1 до 8 бит. Я знаю, как дать пользователям возможность выбрать один, я просто не знаю, кто его изменит. Как это изменить? (Кстати, я нахожусь в MATLAB R2012a)Изменение битов на пиксель в MATLAB
ответ
Я так понимаю, что вы хотите сделать что-то вроде этого:
imdata = rgb2gray(imread('ngc6543a.jpg')); % Assuming that we have a grayscale uint8 image
figure('name', 'Before');
imagesc(imdata);
colormap('gray');
numberOfBits = input('Enter number of bits:\n');
maxValue = 2^numberOfBits - 1;
newImage = imdata * (maxValue/256);
figure('name', 'After');
imagesc(newImage);
colormap('gray');
Изображение ngc6543a.jpg
образец изображения, так что вы можете запустить этот код сразу же, как она есть.
вот он, ты потрясающий, большое спасибо – Umdoobby
Эта страница документации содержит много информации о том, что вы хотите сделать: Reducing the Number of Colors in an Image.
Простой пример состоит в следующем (в значительной степени взяты прямо с этой страницы), которая будет дрожать изображение и произвести цветовую карту (немного отличается в ответ на ФП в - не уверен, что вы хотите сделать):
>> RGB = imread('peppers.png');
>> [x,map] = rgb2ind(RGB, 2); % Reduce to a 2-colour image
>> imagesc(x)
>> colormap(map)
Вы должны выбрать количество цветов, исходя из максимального количества, которое может содержать много бит.
Вероятно, вы должны быть более конкретными в отношении того, какой результат вы хотите. Очевидно, что 1-битное изображение было бы двумя цветами, черно-белыми, это то, что вы хотите? Кроме того, наименьший размер элемента представляет собой один байт, поэтому вы собираетесь упаковывать значения или вы просто ограничиваете диапазон значений, которые может принимать каждый пиксель? – jazzbassrob
Кроме того, есть ли вероятность, что вы имеете в виду «байт», а не «бит»? Это имело бы смысл ... – jazzbassrob
no Я имел в виду бит, я знаю, что 1-битное изображение будет только двух цветов – Umdoobby