2013-04-25 1 views
1

Как изменить биты на пиксель изображения, загруженного в MATLAB? Я использую диалог файла и функции imread для загрузки изображения в матрицу. Мне просто нужно изменить бит этого изображения на пиксель. Предоставление пользователю возможности выбирать от 1 до 8 бит. Я знаю, как дать пользователям возможность выбрать один, я просто не знаю, кто его изменит. Как это изменить? (Кстати, я нахожусь в MATLAB R2012a)Изменение битов на пиксель в MATLAB

+0

Вероятно, вы должны быть более конкретными в отношении того, какой результат вы хотите. Очевидно, что 1-битное изображение было бы двумя цветами, черно-белыми, это то, что вы хотите? Кроме того, наименьший размер элемента представляет собой один байт, поэтому вы собираетесь упаковывать значения или вы просто ограничиваете диапазон значений, которые может принимать каждый пиксель? – jazzbassrob

+0

Кроме того, есть ли вероятность, что вы имеете в виду «байт», а не «бит»? Это имело бы смысл ... – jazzbassrob

+0

no Я имел в виду бит, я знаю, что 1-битное изображение будет только двух цветов – Umdoobby

ответ

0

Я так понимаю, что вы хотите сделать что-то вроде этого:

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

+0

вот он, ты потрясающий, большое спасибо – Umdoobby

0

Эта страница документации содержит много информации о том, что вы хотите сделать: 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) 

Вы должны выбрать количество цветов, исходя из максимального количества, которое может содержать много бит.