Python原始图像奇怪的方格图案

2024-04-26 04:13:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

指向bayer(原始)数据的链接herebin_image.txt

结果是这张带有奇怪格子图案的图像: enter image description here

我不知道是什么原因造成的?在


Tags: topath图像imageimportnumpybinmatplotlib
1条回答
网友
1楼 · 发布于 2024-04-26 04:13:13

拜耳图像不像常规的RGB图像,每个像素都有一些红色、绿色和蓝色的分量。取而代之的是,拜耳图像在每个像素位置都有一个单一的红色、绿色或蓝色值,其强度各不相同。这在很多传感器上是典型的,这样每个像素都可以捕捉到特定波长的光。Wikipedia entry on Bayer filters可能会有帮助。在

首先,你需要对图像进行de-Bayer处理,也就是将这些值插值到RGB中,然后将其转换为灰度显示。这里有OpenCV标记,所以假设您使用OpenCV,您可以使用^{}完成这两个步骤:

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)

De-bayered grayscale image

典型的Bayer图像有三种不同的顺序;在OpenCV中,它们被列为BayerBG(最常见)、BayerRG、和{}。为了获得最佳效果,您应该找出原始图像存储在哪个模式中。在

相关问题 更多 >