python实现相机成像原理

本文介绍了使用Python处理相机RAW图像的过程,包括CR2转TIFF、图像初始化、线性化、判断拜耳滤波阵列模式、白平衡、去马赛克、降噪以及亮度和gamma编码的调整。通过这些步骤,将RAW图像转化为可观察的RGB图像。
摘要由CSDN通过智能技术生成

摄像的流程:从被拍摄景物上传来的入射光依次穿过相机的光学器件,颜色滤镜后到达传感器,经过模拟前端转换为数字信号,最后通过相机内的图像处理系统转换为最终的RGB格式图像并进行存储。

本次实验要实现的就是:相机内的图像处理系统。

即下图红色区域。

什么是Raw图像:经过颜色滤波阵列(CFA)到达传感器的光线,经过模拟前端放大和模数转换器的转换的图像称为RAW图像。RAW图像没有颜色,显示出像马赛克一样的方块。就像下图:

 

 

 

1、将一张.CR2图片变成.tiff格式的图片

首先第一步将raw image 变成tiff文件,因为cr2格式的图像不能被skimage处理。

用dcraw这个工具,在cmd(windows操作系统下)里面敲:dcraw -4 -d -v -T banana_slug.CR2得到banana_slug.CR2.tiff

以及相关的色彩信息。

Scaling with darkness <black>, saturation <white>, and
multipliers <r_scale> <g_scale> <b_scale> <g_scale>
 

执行了这一步会生成一个勉强还能看得见的图,但是指示里面也说不要用这个图,咱就照着呗。

再次执行dcraw -4 -D -T bata\banana_slug.cr2

原来生成的那个图,被一个黑黑的图覆盖掉了,指示说咱就用这个图,继续后面的操作。(咋感觉是在坑我)

 

2、初始化图片,查看图片的长宽,位深度,把图片变成线性,双精度图片。


img = io.imread(".\data\\banana_slug.tiff") #4290*285
plt.imshow(img)
plt.show()

用io.imread()读那个Windows里面显示为黑黑的图,竟然能看得见。


def initials(img):
    print("图片类型type(image)=", type(img))
    print("像素位数image.dtype=", img.dtype)
    print("形状:",img.shape)
    width = img.shape[0]
    height = img.shape[1]
    print("图片的width=%d,height=%d" % (img.shape[0], img.shape[1]))
    print("***********************************")
    img_array = img.astype(np.double) #感觉这样应该算转化为双精度了吧
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值