2013-04-25 110 views
1

如何改變加載到MATLAB的圖像的每個像素的位數?我使用文件對話框和imread函數將圖像加載到矩陣中。我只需要改變每像素的圖像位數。賦予用戶從1位到8位任意位置的能力。我知道如何讓用戶選擇一個我不知道是誰來改變它的能力。人們如何改變這種狀況? (順便說一句,我在MATLAB R2012a)在MATLAB中改變每個像素的位數

+0

你應該對你想要的結果更具體些。顯然,1位圖像會是兩種顏色,黑色和白色,是你想要的嗎?另外,最小的元素大小是單個字節,所以你打算打包這些值還是隻限制每個像素允許的值的範圍? – jazzbassrob 2013-04-25 19:17:44

+0

另外,有沒有可能你的意思是「字節」而不是「位」?這將更有意義... – jazzbassrob 2013-04-25 19:21:03

+0

不,我的意思是位,我知道1位圖像只會是兩種顏色 – Umdoobby 2013-04-25 19:23:34

回答

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'); 

圖像0​​是一個示例圖像,這樣你就可以,因爲它是立即運行該代碼。

+0

多數民衆贊成它,你真棒,非常感謝 – Umdoobby 2013-04-25 19:54:13

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) 

您應該根據無論多位可以容納的最大數量來選擇顏色的數量。