Python RAW Image奇怪的格仔图案

tom*_*ech 1 python opencv image image-processing

使用以下python来读取和显示(灰度)RAW图像:

import numpy as np
import matplotlib.pyplot as plt
path = 'path\\to\\where\\image\\is\\downloaded'
f = open(path,'rb')
height = 2500
width = 1000
bin_image = np.fromstring(f.read(), dtype=np.uint16)
bin_image.shape = (height, width)
plt.imshow(bin_image)
plt.show(block=True)
Run Code Online (Sandbox Code Playgroud)

bayer我可以在这里找到(RAW)数据的链接 bin_image.txt

结果是这个图像有一个奇怪的方格图案: 在此输入图像描述

我不确定是什么原因造成的?

alk*_*asm 5

拜耳图像不像常规RGB图像,其中每个像素都有一些红色,绿色和蓝色成分.相反,拜耳图像在每个像素位置具有单一的红色,绿色或蓝色值,具有不同的强度.这在许多传感器上是典型的,因此每个像素可以捕获特定波长的光.关于拜耳过滤器的维基百科条目可能会有所帮助.

首先,您必须对图像进行去Bayer,即将这些值插值为RGB,然后将其转换为灰度以进行显示.这有OpenCV标记,因此假设您使用OpenCV,您可以完成以下两个步骤cv2.cvtColor():

import numpy as np
import matplotlib.pyplot as plt
import cv2

path = 'bin_image.txt'
f = open(path,'rb')
height = 2500
width = 1000
bin_image = np.fromstring(f.read(), dtype=np.uint16)
bin_image.shape = (height, width)
bin_image = cv2.cvtColor(bin_image, cv2.COLOR_BayerBG2RGB)
bin_image = cv2.cvtColor(bin_image, cv2.COLOR_RGB2GRAY)
plt.imshow(bin_image, cmap='gray')
plt.show(block=True)
Run Code Online (Sandbox Code Playgroud)

De-bayered灰度图像

一个典型的拜耳图像有三种不同的订单; 在OpenCV中,它们被列为BayerBG(最常见)BayerRG,和BayerGR.您应该找出存储原始图像的模式以获得最佳效果.