我想使用Matlab将8位图像的位深度更改为4位,2位深度。 源图像是8位和jpg文件。我想利用png'BitDepth'参数,所以首先我尝试将图像转换为png格式。然后我尝试使用这个参数;但我收到了错误。如果有一个使用Java库的简单解决方案,我也可以。
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');
答案 0 :(得分: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如何处理索引图像。