问题描述
我正在研究Bayer raw(.raw格式)图像域,需要根据需要(应用仿射矩阵)编辑像素并将其保存为.raw格式。因此存在两个子问题。
-
我能够编辑像素,但可以将其另存为.raw 我正在使用一个名为rawpy的健壮库,该库允许我将像素值读取为numpy数组,同时尝试将它们保存回去,但我无法持久保存该值
rawImage = rawpy.imread('Filename.raw')//这给出了rawpy对象
rawData = rawImage.raw_image //这将像素作为numpy数组
。
.///一些对rawData进行的操作,仍然是一个numpy数组
。
imageio.imsave('newRaw.raw',rawData)
这不起作用,引发错误未知文件类型。有没有一种方法可以将这些文件保存为.raw格式。
注意:我也尝试过:-
rawImageManipulated = rawImage
rawImageManipulated.raw_image [:] = rawData [:] //这会复制新的 数据到rawpy对象上,但不保存或保留值 分配。
- 旋转拜耳图像-我知道rawpy不能处理此问题,据我所知,任何其他API或库也无法处理。 opencv和枕头的现有图像旋转Apis会在旋转时更改子像素。我怎么知道?经过一系列小的旋转(例如30度旋转12次),当我回到360度旋转时,使用十六进制编辑器进行比较时,子像素并不相同。
有没有针对这些问题的解决方案?我走错了方向吗?请您指导我。我目前正在使用python,我愿意接受任何语言或堆栈的解决方案。谢谢
解决方法
据我所知,出于充分的原因,没有一个库能够直接以Bayer模式格式旋转图像(如果这就是您的意思)。相反,您需要转换为RGB,然后再返回。 (如果您尝试将拜耳图案图像当作只是灰度位图来处理,则旋转的结果将是一场灾难。)
由于数字问题,累积旋转会破坏图像,并且整整旋转后您将永远无法获得原始图像。为了使损失最小化,请从原始角度开始旋转所有角度,并增加角度。