DNG原始图片导入为16位深,但出乎意料表演()结果

2024-05-12 22:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试用rawpy在Python中处理原始DNG图片,结果很奇怪。在

import rawpy
import imageio
from matplotlib import pyplot as plt

path = '/home/stefan/AIJ/RAW.DNG'
with rawpy.imread(path) as raw:
    rgb = raw.postprocess()
plt.imshow(rgb)
plt.show()

结果是一个有8位值的rgb图片数组,而我的相机生成14位的原始图片。在

可视化rgb数组可以得到预期的结果:

enter image description here

从google上我了解到可以导入同一个文件,但是输出是16位的。在

我在后处理函数中使用了以下参数:

^{pr2}$

现在,rgb数组包含16位值,但可视化结果如下:

enter image description here

有人能告诉我如何获得一个类似于第一个结果但处理16位值的可视化效果?在

最初我认为这与我的相机产生的是14位图像而不是16位图像有关,但是将参数output_bps更改为14位会导致更糟糕的可视化效果。在

提前谢谢!在

如有要求,我会在这里添加一张PENTAX K-5的原始图片,但它是18MB大,论坛有2MB的限制(可能是另一种方式来传递文件吗?)。在


Tags: 文件pathimport参数raw可视化as图片
1条回答
网友
1楼 · 发布于 2024-05-12 22:25:05

我不认为这个问题与如何读取图像有关,因为imshow不显示16位RGB图像。因此,如果你有兴趣在16位图像中直观地检查读取结果,我建议要么单独检查波段,要么使用

plt.imshow(rgb[:, :, 0])

等等;或者将rgb转换为8位并显示,使用

^{pr2}$

相关问题 更多 >