【问题标题】:How to check whether a TIFF file truly has 16 bit depth如何检查 TIFF 文件是否真正具有 16 位深度
【发布时间】:2021-05-16 01:43:18
【问题描述】:

假设我使用以下 ImageMagick 命令将 8 位 TIFF 图像转换为 16 位:

$ convert 8bit-image.tif -depth 16 16bit-image.tif

结果是一个文件被其他程序检测为 16 位深度的文件:

$ identify 16bit-image.tif
16bit-image.tif TIFF 740x573 740x573+0+0 16-bit sRGB 376950B 0.000u 0:00.000

当然,这个文件没有“真正的”16 位,因为它是一个 8 位文件,只是简单地标记为 16 位。它没有真正的 16 位所期望的细微差别。如何区分真正的 16 位图像和只是“假装”的图像?

最好的,

贝拉

【问题讨论】:

    标签: image-processing imagemagick


    【解决方案1】:

    当你有一个 8 位图像时,像素值的范围是 0 到 255。对于 16 位图像,像素范围是 0 到 65535。所以你可以在 16 位中表达比在 16 位中更多的细微差别8位。

    通常,当您的相机中有一个 16 位成像器时,它能够捕捉这些细微差别并将它们映射到完整的 16 位范围。 8 位成像器会限制在更小的范围内,因此在拍照时,与 16 位成像器相比,会丢失一些信息。

    现在,当您开始使用 8 位图像时,该信息已经丢失,因此转换为 16 位不会给您带来更大的细微差别,因为 ImageMagick 无法在没有信息的地方创造信息。

    图像处理工具通常所做的是将 8 位图像的像素值填充复制到 16 位图像中,因此您的 16 位图像仍将仅包含 [0,255] 范围内的值。如果在您的示例中是这种情况,您可以检查 16 位图像的最亮像素是否大于 255。如果是,您可以假设它是原生 16 位图像。如果不是,很可能是从 8 位转换而来的。

    但是,不能保证 16 位图像真的是从 8 位转换而来的,因为它可能只是一个非常暗的原生 16 位图像,只是偶然使用了 8 位范围中最暗的像素。

    编辑: 有人可能使用完整的 16 位范围将 8 位图像转换为 16 位。这可能意味着值为 0 的像素可能保持为 0,255 的像素现在可能为 65535,并且其间的所有值将均匀分布到 16 位范围内。

    但是,由于无法发明新信息,因此使用的像素值会存在间隙,例如您可能有 0、255、510 等值的像素,但不会出现介于两者之间的值。

    根据用于拉伸像素范围的算法,这些特定值可能会有所不同,但您可以通过查看图像的直方图来发现类似的转换:

    它将具有独特的梳状结构(图片取自http://www.northlight-images.co.uk/digital-black-and-white-working-in-16-bit/)

    所以根据从 8 位到 16 位的转换是如何执行的,判断它是否是原生图像可能会稍微复杂一些,即使这样也不能保证可靠地确定图像是否真的被转换了与否。

    【讨论】:

    • 对我来说很有意义,感谢直方图的想法!
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多