c++ - 如何将RGB888转成Bayer GB/BG/GR格式?

标签 c++ opencv

<分区>

我想创建一个可以将 BMP 图像转换为 Raw Bayer(所有格式)图像的应用程序。我想使用这个应用程序来交叉验证我的相机的实际输出。所以任何帮助表示赞赏。请指定从 RGB888 转换为 Bayer 格式的任何公式的任何链接。我在 C++ 中使用 opencv。

编辑:为了减少可能答案的数量,我只想考虑对其原始拜耳图像进行双线性插值 RGB888 图像,并接受此转换中可能出现的损失。

最佳答案

如果用 3x3 对图像进行插值,则可以在没有任何损失的情况下从每个像素取回颜色。基本上,只需为 B 像素使用“蓝色” channel ,为 G 像素使用绿色 channel ,为 R 像素使用红色 channel 。如果原件是用高阶插值插值的,这仍然有效,但你会丢失信息。参见 http://www.vision-doctor.co.uk/area-scan-cameras/1ccd-colour-cameras/bayer-colour-interpolation.html .

另一种思考方式是您正在应用“拜耳滤镜”,它会消除每个像素的其他颜色。无论您是通过相机捕捉它还是尝试对图像进行马赛克处理,都是如此。

关于c++ - 如何将RGB888转成Bayer GB/BG/GR格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426099/

相关文章:

c++ - 不可复制、不可移动、显式构造类型的成员数组的初始化

c++ - 我需要透明色之类的白色

c++ - 是否可以将模板实例视为命名空间?

c++ - 旋转图像 PPM

c++ - 在 C++ 中向上转换实例并在基类上调用函数

RotatedRect 顶点的 OpenCV 顺序

c++ - Opencv Mat vector 分配给矩阵的一行,最快的方法?

opencv - 如何在 Xamarin 中使用 openCV?

c++ - 在 OpenCV 中查找椭圆的成本

c++ - decltype(自动),尾随返回类型和 sfinae : can we mix them?