Изменение бит на пиксель в MATLAB
Как изменить биты на пиксель изображения, загруженного в MATLAB? Я использую диалоговое окно файла и функции imread, чтобы загрузить изображение в матрицу. Мне просто нужно изменить бит изображения на пиксель. Предоставление пользователю этой возможности выбирать в любом месте от 1 до 8 бит. Я знаю, как дать пользователям возможность выбрать один, я просто не знаю, кто его поменяет. Как можно это изменить? (Кстати я в MATLAB R2012a)
2 ответа
Как я понимаю, вы хотите сделать что-то вроде этого:
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
Это пример изображения, поэтому вы можете запустить этот код сразу же, как он есть.
Эта страница документации содержит много информации о том, что вы хотите сделать: Уменьшение количества цветов в изображении.
Простым примером является следующий (в значительной степени взятый прямо с этой страницы), который сглаживает изображение и создает цветную карту (немного отличающуюся от ответа ОП - не уверен, какой именно вы хотите сделать):
>> RGB = imread('peppers.png');
>> [x,map] = rgb2ind(RGB, 2); % Reduce to a 2-colour image
>> imagesc(x)
>> colormap(map)
Вы должны выбрать количество цветов, основываясь на максимальном количестве, которое может содержать много битов.