一、RAW图像详解

1.1 什么是raw格式图像?

RAW在英文中的解释是未处理的、自然状态的,这也就是RAW文件的真谛。RAW图像就是CMOS或者CCD图像感应器将捕捉到
的光源信号转化为数字信号的原始数据,因此RAW文件也被人们称之为“数码底片”。RAW格式的全称是RAW Image Format,记
录了由相机拍摄所产生的一些元数据,如ISO的设置、快门速度、光圈值、白平衡等信息。

1.2 RAW格式与JPG格式有什么差别?

如果一句话概括,那就是JPG格式实际上就是由RAW格式处理而来的。RAW格式记录的是拍摄现场的原始数据,然后经过相机自身进行白平衡、锐化、饱和度、色彩等等处理之后,再进行封装,就成为了JPG格式的照片。

1.3 那么RAW和JPG格式到底有什么比较大的区别呢?

实际上,JPG格式所显示的是照片,也可以说是最终的成片,而RAW是从影像传感器中得到的最原始的信息数据包,而非图像。

RAW我们通常用色彩深度来表示,色彩深度的单位是bit,一般的JPG照片色彩深度为8bit,这意味着RGB这三种颜色,每个颜色有256个等级,组合起来可以产生总共256256256即约1677万种不同的颜色。

关于位深可以参考我的另一篇博客:8位, 16位,24位,32位图片显示原理及对比、读自己的mask、判断是否为灰度图

一般的RAW格式照片,目前的主流水平是12bit和14bit,比如一些全画幅机身能够达到14bit的水准。另外一些高端的中画幅相机能够支持16bit RAW格式文件。色彩深度高了,携带的信息也就更加丰富,但是体积也就增加了,不过这个数值仍然是越大越好。

二、使用Python读取raw格式图像并显示

首先确定我们的raw图像是多少位的,我们的是16bit

实现只需两个基本库,能够实现16位图片的无损转换,转换裁切保存之后的图片位深依然为16bit,方便以后处理。

  • 一律使用np.fromfile读取之后再转化为.png或者.tff格式,读取的时候直接传入文件路径,不用加'r'

2.1 输出为png图像显示

import os.path
import os
from PIL import Image
import numpy as np
import cv2
import imageiodef read(input_dir, shape, save_dir):if not os.path.exists(save_dir):os.makedirs(save_dir)# img = cv2.imread('D:\Installer\\h_1_3_00_2_4_0_0_5_30_01_0_00.raw')# type = img.dtypew, h, c = shapeinput_dir = os.path.join('D:\\JS17\rawData\\', input_dir)list = os.listdir(input_dir)for path in list:if path.endswith('.xml'):continue### 直接传入文件路径,不用加'r'imgData = np.fromfile(input_dir + '\\' + path, dtype='uint16')   ### 这里是16bit所以要uint16w, h, c = 5120, 4096, 1# # imgData = np.fromfile(r'D:\Installer\\h_1_1_0_2_0_4_1_5_38_63_0.raw', dtype='uint16')   # SAR# # w, h, c = 2048, 2048, 1imgData = imgData.reshape(w, h, c)cv2.imwrite(save_dir + path.split('.')[0] + '.png', imgData)
if __name__ == '__main__':#### 传入raw文件夹;图像的w, h, c;图像的保存路径read('SAR', [2048, 2048, 1], 'D:\\JS17\TIFData\SAR\\')read('中波红外', [1024, 1280, 1], 'D:\\JS17\TIFData\MiddleHW\\')read('可见光', [4096,5120, 1], 'D:\\JS17\TIFData\KJG\\')

2.2 输出为tif图像显示

import imageio
import numpy as npraw=np.memmap('140-200-1000(2).raw',dtype=np.uint16,shape=(4288,3524))#读取16位raw图片
imageio.imsave('raw.tif',raw)#转换格式与保存### 上面两行其实就已经读取并且转换完成了,已经可以显示了
### 下面是做裁剪的,仅供参考
tif=np.memmap('raw.tif',dtype=np.uint16,shape=(4288,3524))#读取16位tif图片
resize=tif[1200:1700,1200:1700]
imageio.imsave('resize.tif',resize)#对16位tif图片裁切

参考:关于RAW格式照片 你不可不知的十件事
使用Python读取raw格式图像并显示
[史上最全]16bit RAW图片读取、转换、裁切、保存

RAW图像详解及使用Python读取raw格式图像并显示相关推荐

  1. python读取webp格式图像

    使用python读取webp格式图像 from PIL import Imageimport pdb;pdb.set_trace() filename = '000.webp' im = Image. ...

  2. python 读取.nii格式图像

    # encoding=utf8 ''' 查看和显示nii文件 '''import matplotlib matplotlib.use('TkAgg')from matplotlib import py ...

  3. .nii格式文件python_python 读取.nii格式图像实例

    我就废话不多说了,大家还是直接看代码吧~ # encoding=utf8 ''' 查看和显示nii文件 ''' import matplotlib matplotlib.use('TkAgg') fr ...

  4. 使用Python读取raw格式图像并显示

    整理日期:2020-02-13 整理内容:使用Python读取raw格式图像并显示 代码如下: import cv2 #OpenCV包 import numpy as np# 首先确定原图片的基本信息 ...

  5. 【OpenCV 4开发详解】保存和读取XML和YMAL文件

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  6. Python——读取raw格式文件

    Python--读取raw格式文件 文章目录 Python--读取raw格式文件 前言 一.直接上代码 前言 简单记录一下python读取raw格式图像,因为reshape来来回回还交换轴搞得人头大, ...

  7. 不同格式的图像详解_不同类型的图像格式

    不同格式的图像详解 Image Format basically describes how data related to the image will be stored or we can sa ...

  8. python英语字典程序修改_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  9. 全网最详细 Python如何读取NIFTI格式图像(.nii文件)和 .npy格式文件和pkl标签文件内容

    在医学图像处理中,我们经常使用一种NIFTI格式图像(.nii文件),现在我们来看看 什么是.nii文件? 该如何读取.nii文件? 1. NIFTI格式图像 什么是NIFTI(Neuroimagin ...

最新文章

  1. python多功能电子钟_python gui - PyQt4 精彩实例分析之电子钟
  2. MapReduce骚气分析
  3. 南大计算机学硕复试,2019南大CS考研复试笔试回忆
  4. python 循环中报错 继续运行_python中列表删除和多重循环退出
  5. [patl2-001]紧急救援
  6. SAP中国研究院再次荣获年度中国最佳雇主,国际友人纷纷发来贺电
  7. java的归并排序算法_归并排序算法Java实现
  8. SpringBoot 参数符号转义,用这个包下面的类
  9. Leetcode--全排列(Java)
  10. java父类调用子类方法_Java 中父类怎么调用子类的方法?
  11. 【云栖大会】与马云一起开启“飞天·进化”之旅
  12. 信号signal()、alarm()、信号集函数、sigprocmask()
  13. 第57条:将局部变量的作用域最小化
  14. centos操作---搭建环境 安装python
  15. pandorabox 潘多拉固件路由器作为无线打印机服务器记录
  16. jQuery 身份证验证
  17. Pandas数据清洗总结
  18. 微博程序猿结婚还要加班!只因鹿晗公布恋情
  19. Voldemort启动失败案例一则
  20. AM335x启动流程(BootRom- MLO-的Uboot)

热门文章

  1. 阻抗匹配50欧姆的由来
  2. 第十八篇 -- 学习第十七天打卡20190705
  3. linux文件中出现 m,在linux中文件中^M符号的问题以及中文识别问题
  4. 便捷网站或者工具(前端)
  5. JZOJ 1403.渡河
  6. FlyoutMenus
  7. 应用程序安装在sd卡还是内存选择及设置
  8. 万维钢:我怎样管理信息
  9. 计算机T层,层螺旋计算机断层摄影术及T磁共振成像对-国家心血管病中心.PDF
  10. 阿里 P7 到底是怎样的水平 ???