首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用dcraw估计原始图像的平均信道强度

不使用dcraw估计原始图像的平均信道强度
EN

Stack Overflow用户
提问于 2022-05-06 04:43:20
回答 1查看 58关注 0票数 0

我有一个管道,它记录一个覆盆子π上的图像,通过dcraw将它们转换为tiff,然后估计这三个通道的平均强度(RGB)。

由于转换到tiff是瓶颈,我想知道我是否可以跳过它。更具体而言:

可以直接从原始图像中提取三个通道的平均强度吗?

下面是我正在尝试处理的一幅图像的示例(注意:它的曝光和分辨率都很差,所以不要期望看到任何有趣的东西):https://drive.google.com/file/d/1FNFGuIAw-948c0loj5y4aZTRJK0TpoWB/view?usp=sharing它被收集为:

代码语言:javascript
复制
raspiraw -md 7 -t 1000 -ts /dev/shm/tstamps.csv -hd0 /dev/shm/hd0.32k -h 32 -w 32 --vinc 1F --fps 1 -sr 1 -o /dev/shm/out.%06d.raw

到目前为止,我尝试了以下三种选择:

  1. 直接使用PIL,但抛出UnidentifiedImageError
代码语言:javascript
复制
from PIL import Image
Image.open('image.raw')
  1. 直接使用numpy。这给了我很大的整数;不确定它们如何映射到RGB映像。
代码语言:javascript
复制
>> np.fromfile('image.raw', dtype=np.uint16)
array([4112, 4112, 4184, ...,    0,    0,    0], dtype=uint16)
  1. 使用raspiraw,但不幸的是,与更新版本的Libraw存在兼容性问题(如0.20.2)。
代码语言:javascript
复制
from rawkit.raw import Raw
raw_image = Raw('image.raw')
buffered_image = np.array(raw_image.to_buffer())
Image.frombytes('RGB', (raw_image.metadata.width, raw_image.metadata.height), buffered_image)
EN

回答 1

Stack Overflow用户

发布于 2022-05-07 17:45:47

我本人也没有使用过raspiraw,但我认为基于文档这里的方法存在一些根本问题。

首先,PIL不会对原始图像有任何线索,所以您可以忘记您的方法1)。而且,即使您可以使用Numpy读取数据,它也不知道一般的图像处理--尤其是原始图像的显示。所以你还有第三种方法..。

上面我链接到的文档中说,在每个图像上写入Broadcom头会大大降低速度,所以您需要从/dev/shm/hd0.32k中获取一次性的标头,并将其放在任何帧的开头。因此,实际上您需要这样做:

代码语言:javascript
复制
cat /dev/shm/hd0.32k /dev/shm/out.000001.raw > frame1.raw

然后尝试选项3代码读取合并的文件frame1.raw。你似乎也知道一些不相容之处,但出于某种原因,你选择不去找出这些知识的来源,所以没有人能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72136276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档