RAW数据批量格式转换matlab脚本
16bit转换为12bit少四位222*2=16,以此类推
12bit-10bit 16bit-10bit
%% 批量raw图像数据转换%%%%%%%%%%%%%%%%
%% 2021/9/23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
clc
%% 读取raw数据 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
read_file_path = 'd:\project\1\';%读取图像文件夹
write_file_path = 'd:\project\2\';%存储图像文件夹
write_add_fileName = '12bit ';%自己定义
rawcol=2688;
rawrow=1520;
%% %%%%
myfile = dir(strcat('read_file_path', '*.raw'));
for fi=1: length(myfile)
myfile(fi).name
[rfid, message]=fopen(stract(read_file_path,myfile(fi).name), 'rb');
wfid = fopen(stract(write_file_path,myfile(fi).name, write_add_fileName), 'wb');
%% 单个raw的数据个数%%%%
fseek(rfid,0,'eof');
fsize =fteel(rfid);
%% 移动到文件头%%
fseek(rfid, 0, 'bof');
rawnum = fsize / rawcol /rawrow /2
%cutnum=rawnum/3 %截取帧数
for i = 1:rawnum
rawdata = fread(rfid, [rawcol, rawrow], 'unit16');
rawchange = rawdata/16;%16bit转换为12bit少四位2*2*2*2=16,以此类推
count =fwrite(wfid,rawchange,'unit16');
end
fclose(rfid);
fclose(wfid);
end
-
dir()函数用法:
此 MATLAB 函数 列出当前文件夹中的文件和文件夹。
dir
dir name
listing = dir(name)
三种:
1、dir(’.’) 列出当前目录下所有子文件夹和文件
2、dir(‘E:\Matlab’) 列出指定目录下所有子文件夹和文件
3、dir(E:\Matlab,’*.raw’) 列出指定目录下后缀为.raw的文件 -
strcat函数用法 连接字符串使用:
用在批量处理,横向连接字符串, 水平地连接成单个字符串;
水平串联 s1,…,sN。每个输入参数都可以是字符数组、字符向量元胞数组或字符串数组。
1、如果任一输入是字符串数组,则结果是字符串数组。
2、如果任一输入是元胞数组,并且没有输入是字符串数组,则结果是字符向量元胞数组。
3、如果所有输入都是字符数组,则结果是字符数组。
s = strcat(s1,…,sN)
注意:文件夹路径必须加入\ -
fopen - 打开文件或获得有关打开文件的信息
打开文件 filename 以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。MATLAB 保留文件标识符 0、1和 2 分别用于标准输入、标准输出(屏幕)和标准错误。fileID = fopen(filename)
fileID = fopen(filename,permission)
fileID = fopen(filename,permission,machinefmt,encodingIn)
[fileID,errmsg] = fopen(___)
fIDs = fopen(‘all’)
filename = fopen(fileID)
[filename,permission,machinefmt,encodingOut] = fopen(fileID)w 打开只写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 (原来的EOF符不保留) wb 只写打开或新建一个二进制文件;只允许写数据。 wb+ 读写打开或建立一个二进制文件,允许读和写。 wt+ 读写打开或着建立一个文本文件;允许读写。 at+ 读写打开一个文本文件,允许读或在文本末追加数据。 ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
-
fseek