MATLAB tiff 文件格式与 PNG 文件格式。真正的无损压缩?

标签 matlab compression png tiff lossless

我一直在研究一个问题,我需要将矩阵保存为图像,并使其成为 MATLAB 中矩阵的真正无损示例。

我试过将图像写成 png 和 tiff 两种无损形式:

Name              Size                 Bytes  Class     Attributes

  diff            237x354               671184  double              
  imPng           237x354               167796  uint16              
  imPngD          237x354               671184  double              
  imTiff          237x354                83898  uint8               
  imTiffD         237x354               671184  double              
  padded         2042x2170            35449120  double              
  testImage       237x354               671184  double              

testImage is the matrix I would like to save losslessly.

I used the following lines to write the matrix as a tif and png:

EDU>> imwrite(testImage,'imTiff.tif','tiff','compression','none');
EDU>> imwrite(testImage,'imTiff.png','PNG','bitdepth',16);

然后我将图像加载回工作空间(imTiff 和 inPng)并将它们转换为 double。

EDU>> imPngD = im2double(imPng);
EDU>> imTiffD = im2double(imTiff);

但是当我从 testImage 中减去 imPngD 或 imTiffD 时,还剩下剩余值。

我的问题是:
我的处理有问题吗?
如果不是,这是否意味着 tif 和 png 并非真正完全无损?

如果您认为有帮助,我可以提供图片。

我认为这些图片可能会有所帮助: 测试图片
testImage - original
imTiffD 和 testImage 的区别
Difference between imTiffD and testImage
imPngD 和 testImage 的区别
Difference between imPngD and testImage

请注意:图像 2-3 中的灰色像素值为零,即 testImage 与重新加载图像之间的差异为零。

最佳答案

PNG 和 TIFF 都是真正无损的(忽略 TIFF 选项来打包 JPEG,您没有使用它)。然而,考虑到它们的输入,它们是真正无损的,对于 PNG,每个像素每个颜色值 8 位或 16 位,或者对于 TIFF,每个像素每个颜色值 8 位。

如果您正在寻找超出 8 位或 16 位值可以携带的精度,那么您会看到差异。

关于MATLAB tiff 文件格式与 PNG 文件格式。真正的无损压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783602/

相关文章:

iOS 重绘图像以防止延迟解压导致图像变大

matlab 相关性和显着值

c - fft2 (matlab) 和 fftw (C) 的不同结果

c# - 将许多矩形组合成更少的矩形

python - 在不依赖 unrar.dll 的情况下使用 python 解压缩文件

wpf - 将大的 WPF Canvas 切成许多小的 PNG 图像

java - 使用 Swing 显示动画 PNG (apng)?

matlab - 设计低通滤波器

matlab - 如何高效地垂直合并稀疏矩阵

python - 如何使用 Python 将 .ICO 转换为 .PNG?