Изменение бит на пиксель в 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)

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

Другие вопросы по тегам