Octave 4.0 `imwrite` png: `BitDepth` 4?
Octave 4.0 `imwrite` png: `BitDepth` 4?
Matlab 的 imwrite
允许我在将 2D uint16
数组写入文件“*.png”时指定配对参数 'BitDepth',4
。我的 Octave imwrite
不接受配对参数 'BitDepth',4
。我可以对位深度进行一些有限的控制,但是,如果我缩放 uint8
的数据并将其保存到二维 uint8
数组;来自 imwrite
的 '*.png' 刚好超过 uint16
数组文件大小的一半。我通过查看 imread
得到了这样做的想法,源图像文件的位深度决定了目标变量的 uint
类型。假设源 2D 图像数组的 uint
类型类似地确定了 imwrite
目标文件的位深度,uint8
产生的位深度为 8。但是,我发现有点对于手写笔记的 100 dpi 灰度扫描,深度 2 通常就足够了。 有没有一种简单的方法可以对 imwrite
进行这种任意位深度控制?
旁白: 关于上面提到的 uint16
,我可不是瞎编的。这是从颜色 RGB 转换而来的默认设置。通过网络搜索,我找到了我的旧 Octave 4.0 的转换方法(没有rgb2gray
):
im=imread('rgb.jpeg');
[imInd,Ind]=rgb2ind(im);
imGray16=ind2gray(imInd,Ind); imwrite(imGray16,'gray16b.png');
imGray8=uint8(imGray16/256); imwrite(imGray8,'gray8b.png');
我正在使用作为 Cygwin 一部分的 Octave 安装。然而,我使用的笔记本电脑用户权限有限,升级Octave需要大量时间。
回答你的问题,调用imwrite
时不能设置BitDepth
。该函数将写入一个具有变量数据类型的图像(前提是图像文件类型支持它)。
如果写文件时确实需要任意位深控制,需要直接与libpng交互,即自己编写oct函数。
但是,关于您的评论有几点:
从 uint16 转换为 uint8 并获得超过一半大小的问题,我猜是因为图像被压缩了。
默认情况下,rgb2ind
不会转换为 uint16
。它将根据图像中独特颜色的数量转换为 uint8
或 uint16
。
函数 rgb2gray
是图像包的一部分。如果您需要该功能,请加载该包。
Matlab 的 imwrite
允许我在将 2D uint16
数组写入文件“*.png”时指定配对参数 'BitDepth',4
。我的 Octave imwrite
不接受配对参数 'BitDepth',4
。我可以对位深度进行一些有限的控制,但是,如果我缩放 uint8
的数据并将其保存到二维 uint8
数组;来自 imwrite
的 '*.png' 刚好超过 uint16
数组文件大小的一半。我通过查看 imread
得到了这样做的想法,源图像文件的位深度决定了目标变量的 uint
类型。假设源 2D 图像数组的 uint
类型类似地确定了 imwrite
目标文件的位深度,uint8
产生的位深度为 8。但是,我发现有点对于手写笔记的 100 dpi 灰度扫描,深度 2 通常就足够了。 有没有一种简单的方法可以对 imwrite
进行这种任意位深度控制?
旁白: 关于上面提到的 uint16
,我可不是瞎编的。这是从颜色 RGB 转换而来的默认设置。通过网络搜索,我找到了我的旧 Octave 4.0 的转换方法(没有rgb2gray
):
im=imread('rgb.jpeg');
[imInd,Ind]=rgb2ind(im);
imGray16=ind2gray(imInd,Ind); imwrite(imGray16,'gray16b.png');
imGray8=uint8(imGray16/256); imwrite(imGray8,'gray8b.png');
我正在使用作为 Cygwin 一部分的 Octave 安装。然而,我使用的笔记本电脑用户权限有限,升级Octave需要大量时间。
回答你的问题,调用imwrite
时不能设置BitDepth
。该函数将写入一个具有变量数据类型的图像(前提是图像文件类型支持它)。
如果写文件时确实需要任意位深控制,需要直接与libpng交互,即自己编写oct函数。
但是,关于您的评论有几点:
从 uint16 转换为 uint8 并获得超过一半大小的问题,我猜是因为图像被压缩了。
默认情况下,rgb2ind
不会转换为uint16
。它将根据图像中独特颜色的数量转换为uint8
或uint16
。函数
rgb2gray
是图像包的一部分。如果您需要该功能,请加载该包。