摘要

何为raw图?
对于图像传感器而言,传感器数据每个像素点是RGGB等(排列方式有很多种),此时并不能看见颜色等信息,这种原始数据的图像,便是raw图。对于ISP算法工程师而言,查看RAW图十分重要,这里提供了一些查看RAW图的源代码。

Matlab读取RAW图

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数---读取原始Raw图
%Author:Zhu
%time:2022.3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rawData = readRaw(fileName,bitsNum,width,height)
fin = fopen(fileName,'r');
switch bitsNumcase 8disp('bits: 8');format = sprintf('uint8=>uint8');case 10disp('bits: 10');format = sprintf('uint16=>uint16');case 12disp('bits: 10');format = sprintf('uint16=>uint16');case 16disp('bits: 16');format = sprintf('uint16=>uint16');
end
I = fread(fin,width*height,format);
z = reshape(I,width,height);
z = z';
rawData = z;
end

主程序

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%代码---读取原始Raw图
%Author:Zhu
%time:2022.3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear;
close all;
filePath = 'D:\now.raw';
bayerBits = 8;
row = 4000;
col = 3000;
rawData = readRaw(filePath,bayerBits,row,col);
figure();
imshow(rawData);
title('rawImage');

C/C++语言读取Raw图

/**************************************************
Function: ReadRawFronFile()
Description: 读取Raw图文件
Input:  filePath----->文件路径
Output: filesize----->图像尺寸
return: 图像地址
**************************************************/
unsigned char* ReadRawFromFile(char *filePath,long *filesize)
{FILE *fp;fp = fopen(filePath,"rb");if(fp==NULL){std::cout<<"打开文件失败";return NULL;}fpos_t startpos,endpos;fseek(fp,0,SEEK_END);fgetpos(fp,&endpos);fseek(fp,0,SEEK_SET);fgetpos(fp,&startpos);long filelen = (long)(endpos-startpos);unsigned char *bTemp = NULL;bTemp = (unsigned char*)malloc(filelen);if(bTemp == NULL){fclose(fp);return NULL;}memset(bTemp,0,filelen);fread(bTemp,filelen,1,fp);fclose(fp);*filesize = filelen;return bTemp;
}

C/C++语言保存Raw图

/**************************************************
Function: SaveRawFile()
Description: 保存Raw图文件
Input:  pRawBuf--->图像地址imageWidth,imageHeight----->图像尺寸strSavePath--->文件保存路径
return: 状态值
**************************************************/
int SaveRawFile(unsigned char *pRawBuf,int imageWidth,int imageHeight,char *strSavePath)
{if((pRawBuf == NULL) || (strSavePath == "")){return 1;}FILE *fpdst = fopen(strSavePath,"wb");if(!fpdst){return 1;}fwrite(pRawBuf,sizeof(unsigned char),imageWidth*imageHeight,fpdst);fclose(fpdst);return 0;
}

主程序

int main()
{ long rawDataSize = 0;unsigned char *pInRawBuf = NULL;//读取RAW图pInRawBuf = ReadRawFromFile("D:\\now.raw",&rawDataSize);if (pInRawBuf == NULL){return 0;}//保存Raw图int width = 4000;int height = 3000;char *filePath = "E://6.raw";SaveRawFile(pInRawBuf,width,height,filePath);return 0;
}

Matlab读取Raw图

clc;
clear;
close all;
filePath ='E:\1.raw';
bayerFormat = 'RGGB';
width = 4208;
height= 3120;
bits = 8;
%%%读取RAW
bayerData = ReadRaw(filePath, bits, width, height);
figure();
imshow(uint8(bayerData));
title('raw image');

显示的RAW图像


放大后可以看见

还能发现芯片出图后像素的排列 。

Matlab,C/C++语言读取RAW图和保存RAW图相关推荐

  1. C语言读取文件内容,保存到数组里面

    前言 本文分为两部分,其中一部分主要使用C语言编程实现读取文件内容(要打开的文件名称采用命令行方式输入),统计文件内容的行数,并将文件内容保存到数组里面打印输出. 另一部分使用C语言编程实现读取文件内 ...

  2. optisystem软件配合matlab出图快速保存实验图

    1 optisystem软件介绍 OptiSystem是一种创新的光通信系统仿真软件,可以帮助用户完成从视频广播系统到洲际骨干网的宽光谱光网络中物理层的设计,测试与模拟.OptiSystem是一个独立 ...

  3. Matlab视频流处理:读取,播放,保存

    clc;clear;close all;video=VideoReader('d:\Temp\test.mp4'); nFrames=video.NumFrames; % H=video.Height ...

  4. C语言读取BMP格式图片

    C语言读取BMP格式图片 BMP 维基百科,自由的百科全书 汉漢▼ 位图 扩展名 .bmp 开发者 Microsoft 格式 图像文件格式  本文介绍的是一种图像文件格式. 关于Unicode的第1区 ...

  5. Matlab的各种数据读取、文件读写等操作汇总

    Matlab的各种数据读取.文件读写等操作汇总 MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据:将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据.至 ...

  6. C语言读取bmp图像并做简单显示

    C语言读取bmp图像并做简单显示) bmp文件格式 读取bmp文件信息并展示 bmp文件格式 bmp文件大体上分为四个部分: bmp文件构成 位图文件头BITMAPFILEHEADER 位图信息头BI ...

  7. r语言读取excel数据_R语言 | 更快的表格文件读取方法!

    友情提示:蓝色下划线字体为引文,请保持警惕! 使用R语言读取 Affymetrix Human Exon 1.0 ST Array 芯片平台探针注释文件: https://www.affymetrix ...

  8. C | 使用C语言读取.mat文件

    目录 前言 一.使用matio读取.mat文件 1. matio_user_guide章节设置 2. 下载地址 二.利用库文件在其他工程实现读取.mat 1.导入库和头文件 2. 打开mat文件 3. ...

  9. 【多元统计分析与R语言】【详解】使用教材P84页表3-2进行多元数据简单R分析:定量变量的分析(直方图、散点图)、定性变量的分析并绘制绘制均值条图、箱尾图、星相图、调和曲线图

    可视化[教材P84页表3-2] 1.题目 2.题目详解 2.1.多元数据简单R分析:定量变量的分析(直方图.散点图).定性变量的分析(单因素分析.多维列联表).参考教材P45-P52页. 2.2.绘制 ...

最新文章

  1. java+yeild+sleep_Java并发编程--yield sleep和wait的区别
  2. 【学术相关】谈谈国自然申请中标的经验
  3. Linux下的进程相关编程
  4. 临沂大学3加4计算机专业,临沂大学2021年电子信息(计算机技术方向) 硕士研究生调剂工作细则...
  5. Xah Lee Web 李杀网
  6. hdu 4753 Fishhead’s Little Game
  7. 汇编程序基本原理知识笔记
  8. oracle——监听(一、多实例监听配置)
  9. 升级Windows 2003域的唯一DC
  10. 两个蓝牙模块HC-05转TTL转USB上电自动配对配置过程详解
  11. 《数学分析》收敛数列的性质
  12. 声卡接口 LINE_IN、MIC_IN、LINE_OUT
  13. C语言符号优先级——(“++”符号的的坑)
  14. pano2vr怎么制作漫游_Pano2VR如何制作全景图?全景图如何添加热点?
  15. rms 公式 有效值_真有效值RMS定义及推导
  16. arduino中print()跟write()最大区别和注意事项 (最详细)
  17. Caused by java.lang.Exception Failed to send data to Kafka Expiring
  18. 小程序触发刷新页面的方法
  19. 2.4g 无线通讯至服务器,WiFi、2.4G、433M、GPRS无线通讯方式的区别
  20. 液晶面板价格继续下跌,大屏电视跌幅更大,小屏跌无可跌

热门文章

  1. 华为模拟器 eNSP 基本配置命令
  2. 新手学习大数据技术如何入门?
  3. aws xray eks 环境配置
  4. 各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况
  5. Simulink仿真:基于DC DC双向变换器的多电池主动均衡技术
  6. Iframe根据src页面高度实时调整高度
  7. 台达触摸屏modbusRTU与51单片机通讯台达屏与郭天祥51单片机通讯程序
  8. 面试问这些问题,你敢直接拒绝?!
  9. vue项目批量加载url文件并打包到zip下载
  10. 什么是分账?企业为什么需要分账?