【发布时间】:2017-01-03 22:04:55
【问题描述】:
尝试在 Python 中使用 rawpy 处理原始 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 数组给出了预期的结果:
通过一些谷歌搜索,我了解到可以导入相同的文件,但输出为 16 位。
我在后处理函数中使用了以下参数:
rgb = raw.postprocess(output_bps=16,demosaic_algorithm=None,output_color = rawpy.ColorSpace.Adobe)
现在rgb 数组包含 16 位值,但可视化结果如下:
谁能告诉我如何获得类似于第一个结果但处理 16 位值的可视化?
最初我认为这与我的相机生成 14 位图像而不是 16 位的事实有关,但是将参数 output_bps 更改为 14 会得到更差的可视化结果。
提前致谢!
根据要求,我会在此处添加 PENTAX K-5 的原始图片,但它有 18MB 大,并且论坛有 2MB 的限制(可能是另一种传递文件的方式?)。
【问题讨论】:
-
你能分享你的原始文件吗?普通相机似乎不太可能输出不需要去马赛克的 DNG……或者它不是普通相机吗?
-
如果不应用去马赛克,为什么还要使用 ColorSpace.Adobe?
-
这是我不由自主的问自己,这张图需要去马赛克吗?但是因为 output_bps=8 bit 输出没问题,我没有考虑。
-
在第二张奇怪的照片上,我看到右下角的树,所以我快到了。我仍然不明白去马赛克的机制,什么时候需要,什么时候不需要。
标签: python image-processing matplotlib dng