写一个uint16图像

时间:2016-04-17 20:07:37

标签: image matlab jpeg

如何在MATLAB中将数据类型uint16的图像写入文件?我尝试使用以下命令写入文件,但它给我一个错误

imwrite(pimg, 'h44', 'jpg')
  

使用writejpg时出错> set_jpeg_props(第183行)
  UINT16图像数据需要专门设置为bitdepth   12或16   writejpg出错(第49行)
  props = set_jpeg_props(data,varargin {:});
  imwrite中的错误(第472行)
          feval(fmt_s.write,data,map,filename,           paramPairs {:});
  image16bit出错(第666行)
  imwrite(imgnew1,'h44','jpg');

1 个答案:

答案 0 :(得分:2)

保存超过8位的JPEG图像时,必须指定BitDepth选项:

% note that 16-bit only accepts grayscale images
img = imread('peppers.png');
imwrite(im2uint16(img), '12bit.jpg', 'BitDepth',12);
imwrite(rgb2gray(im2uint16(img)), '16bit.jpg', 'BitDepth',16);

不幸的是,没有多少程序支持12位/ 16位JPEG图像,因此您可能无法在外部打开它。您可以使用JPEG2000格式:

imwrite(im2uint16(img), 'out.jp2');