在MATLAB中改变每个像素的位数

时间:2013-04-25 18:58:20

标签: image matlab editor bits-per-pixel

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

2 个答案:

答案 0 :(得分:0)

此文档页面包含许多有关您要执行的操作的信息:Reducing the Number of Colors in an Image

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

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

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

答案 1 :(得分: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是一个示例图片,因此您可以按原样立即运行此代码。