如何更改加载到MATLAB中的图像的每像素位数?我使用文件对话框和imread函数将图像加载到矩阵中。我只需要改变每个像素的图像位数。使用户能够选择从1位到8位的任何位置。我知道如何让用户选择一个我不知道改变它的人。如何改变这一点? (顺便说一句,我在MATLAB R2012a中)
答案 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
是一个示例图片,因此您可以按原样立即运行此代码。