1

如何更改加载到 MATLAB 中的图像的每像素位数?我使用文件对话框和 imread 函数将图像加载到矩阵中。我只需要更改该图像的每像素位数。使用户能够选择从 1 位到 8 位的任何位置。我知道如何让用户能够选择一个我只是不知道谁来改变它。如何改变这一点?(顺便说一句,我在 MATLAB R2012a 中)

4

2 回答 2

0

此文档页面包含有关您要执行的操作的大量信息:减少图像中的颜色数量

一个简单的例子如下(几乎直接取自该页面),它将抖动图像并产生一个颜色图(与 OP 的答案略有不同 - 不确定你想做什么):

>> RGB = imread('peppers.png');
>> [x,map] = rgb2ind(RGB, 2); % Reduce to a 2-colour image
>> imagesc(x)
>> colormap(map)

您应该根据可以容纳多少位的最大数量来选择颜色的数量。

于 2013-04-25T19:40:36.700 回答
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是示例图像,因此您可以按原样立即运行此代码。

于 2013-04-25T19:42:01.293 回答