RGB数据到Python中拜耳格式的转换



我目前正在进行HIL仿真。我使用的是CARLA平台,有一个RGB相机传感器,通过它我可以获得图像帧的RGB数据值(3D阵列(高度、宽度、3(RGB((。我想通过网络层发送数据。。。。。

问题是我想把RGB格式转换成拜耳格式的数组。我不太清楚拜耳粗滤器的细节。我注意到有一个Opencv标志用于拜耳到RGB的转换,但不是相反。我需要这种格式来重用图像解包或服务器端的库。

任何关于从RGB转换为拜耳格式的建议都将帮助我进一步推进这个项目。

裁判(图片裁判-我想从右到左(-https://theailearner.com/2018/10/28/bayer-filter/

这里有一个naive代码,用于生成该链接中的第一个拜耳模式(GRBG?(:

import numpy as np # of course
im = cv.imread(...)
(height, width) = im.shape[:2]
(B,G,R) = cv.split(im)
bayer = np.empty((height, width), np.uint8)
# strided slicing for this pattern:
#   G R
#   B G
bayer[0::2, 0::2] = G[0::2, 0::2] # top left
bayer[0::2, 1::2] = R[0::2, 1::2] # top right
bayer[1::2, 0::2] = B[1::2, 0::2] # bottom left
bayer[1::2, 1::2] = G[1::2, 1::2] # bottom right

这模仿了图像的形成。您可能想要稍微低通(GaussianBlur(输入,否则您会看到有趣的混叠伪影。

感谢Christoph Rackwithz的贡献!但是,从R和B通道采样的代码似乎已被交换。这是修改后的代码:

之前:

bayer[0::2, 0::2]= G[0::2, 0::2]# top left
bayer[0::2, 1::2]= R[0::2, 1::2]# top right
bayer[1::2, 0::2]= B[1::2, 0::2]# bottom left
bayer[1::2, 1::2]= G[1::2, 1::2]# bottom right

之后:

bayer[0::2, 0::2]= G[0::2, 0::2] # top left
bayer[1::2, 0::2]= R[1::2, 0::2] # top right
bayer[0::2, 1::2]= B[0::2, 1::2] # bottom left
bayer[1::2, 1::2]= G[1::2, 1::2] # bottom right

最新更新