【问题标题】:How to save inversed DCT image如何保存倒置的 DCT 图像
【发布时间】:2017-01-08 23:23:47
【问题描述】:

代码如下:

imshow(idct2(CDCT),[0 255])
i=idct2(CDCT),[0 255];
   imwrite(i,'fa.tif');

当我显示图像时,它工作正常。但只保存带有少量黑线的白色图像(图像不正确)。请告诉我做错了什么。 :)

【问题讨论】:

  • 我不知道你的数据到底是什么,不过你可以直接从图中保存,用save,或者export
  • 但是图片要缩放...
  • 图像 dct 中的CDCT
  • 它会按照您在图形窗口中看到的那样保存。
  • 我使用 i=idct2(CDCT); 保存了图像保存('fa.tif','i');但是当我打开图像时,它说它已损坏

标签: matlab


【解决方案1】:

如果您使用imwrite 写入文件的图像数据是doublesingle(您的类型),那么所有值都应该在0 和1 之间。您的值主要是大于 1,因为您的数据都在 0 到 255 之间,所以这就是图像显示为白色的原因。在调用imwrite 之前,您可以使用mat2gray 轻松标准化您的数据。

imwrite(mat2gray(i), 'fa.tif');

否则,如果您将 uint8 值传递给 imwrite,则这些值应在 0 到 255 的范围内(与您的数据一样)。因此,您可以在保存之前简单地将输入数据转换为 uint8

imwrite(uint8(i), 'fa.tif');

【讨论】:

  • 它工作正常,但某些像素略有不同。我该如何改进?
  • @user3102085 不幸的是,你不能。您的原始数据是double(64 位),生成的 tif 是 8 位,因此一旦您重新加载数据,数据将不会完全相等。您能得到的最好的结果是尝试保存 64 -bit tiff,但即使那样也不完全相同。如果您需要相同,请考虑将数据保存在 .mat 文件中
猜你喜欢
  • 2017-05-17
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多