簡體   English   中英

在MATLAB中更改每個像素的位數

[英]changing bits per pixel in MATLAB

如何更改載入MATLAB的圖像的每像素位數? 我使用文件對話框和imread函數將圖像加載到矩陣中。 我只需要更改每個像素的圖像位。 賦予用戶從1位到8位之間選擇的能力。 我知道如何賦予用戶選擇一項的能力,但我不知道該更改誰。 一個如何改變呢? (通過我在MATLAB R2012a中的方式)

本文檔頁面包含有關您要執行的操作的大量信息: 減少圖像中的顏色數量

下面是一個簡單的示例(幾乎直接從該頁面截取),它將使圖像抖動並生成一個顏色圖(與OP的答案稍有不同-不確定要執行哪個操作):

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

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

以我的理解,您想做這樣的事情:

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是示例圖像,因此您可以按原樣立即運行此代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM