2012-10-04 126 views
1

我想要使用Matlab將8位圖像的位深度更改爲4位2位深度。 源圖像是8位和jpg文件。我想利用png'BitDepth'參數,所以首先我試圖將圖像轉換爲png格式。然後我試着使用這個參數;但我收到錯誤。如果有一個使用Java庫的簡單解決方案,對我來說也是可以的。使用matlab更改圖像位深度

function [] = changeBitDepth(path, depth) 
clear all; close all; 
clc; 
A = imread(path); 
imshow(A); 
imwrite(A, '~/Desktop/football.png'); 
B = imread('~/Desktop/football.png'); 
imwrite(B, '~/Desktop/bitDepthChanged.png', 'BitDepth', depth); 
imfinfo('~/Desktop/bitDepthChanged.png'); 

回答

4

那是因爲你只能有8或16位圖像的標準彩色圖像。您可以爲例如不同的位深度索引圖像或灰度圖像(wiki description of png)。

索引彩色PNG允許標準的每像素有1,2,4或8位;無alpha通道的灰度圖像允許每個像素有1,2,4,8或16位。一切使用每8或16

通道位深度你可以做這樣的事情:

% convert to indexed image 
[IND,map] = rgb2ind(A,32); 
% save indexed png 
imwrite(IND, map, 'test.png', 'bitdepth', 4); 

here知道如何用MATLAB索引圖像的交易。