SPECIM更新

文章介绍了使用MATLAB进行高光谱相机数据处理的方法,包括读取环境头文件,执行黑白平衡与暗电流校正,以及计算光谱反射率。提供的代码示例展示了如何处理SPECIM高光谱相机的RAW数据,以获取光谱反射率数据。
摘要由CSDN通过智能技术生成

前言:十分抱歉,由于工作原因没办法按时更新,看到很多研究者的留言提到,分享的内容对大家帮助很大,于是在休息之余仓促更新一章,如想要技术交流可以通过邮箱tycaglow@163.com联系,分享更多内容。
**

芬兰SPECIM高光谱相机数据处理(二)

**

数据校正

1、黑白平衡与暗电流校正
先上代码,再说闲话。

function average=selected_area_average_spectrum(bands,inputdata)
x1=100;y1=20;x2=540;y2=80;
average=zeros(1,bands);
for i=1:bands
    for n=y1:y2
        for m=x1:x2
            average(i)=average(i)+double(inputdata(n,m,i));
        end
    end
    average(i)=average(i)/((y2-y1+1)*(x2-x1+1));
end
function [samples,lines,bands,precision,interleave,wavelength,inputdata,inputdata_w,inputdata_b,image]=Spectral_data
%选取高普文件路径(raw文件)
% [Input_Name,Intput_path]=uigetfile('*.*','Select input file');                  %鼠标点选路径
% inputfile = strcat(Intput_path,Input_Name);

%  制定路径(用于程序调试)
inputfile='5-12 SUSE_2-1\capture\SUSE_2-1.raw';                                
Intput_path='5-12 SUSE_2-1\capture\';
Input_Name='SUSE_2-1.raw';

%打开高光谱hdr文件及参数
[samples,lines,bands,precision,interleave,wavelength]=read_ENVIrawhdr(inputfile);
inputdata = multibandread(inputfile,[lines,samples,bands],precision,0,interleave,'ieee-le');

%设置白板数据路径
inputfile_w=strcat(Intput_path,'WHITEREF_',Input_Name);
% 打开白板hdr文件及参数
[samples_w,lines_w,bands_w,precision_w,interleave_w,wavelength_w]=read_ENVIrawhdr(inputfile_w);
inputdata_w = multibandread(inputfile_w,[lines_w,samples_w,bands_w],precision_w,0,interleave_w,'ieee-le');

%设置暗电流数据路径
inputfile_b=strcat(Intput_path,'DARKREF_',Input_Name);
% 打开暗电流hdr文件及参数
[samples_b,lines_b,bands_b,precision_b,interleave_b,wavelength_b]=read_ENVIrawhdr(inputfile_b);
inputdata_b = multibandread(inputfile_b,[lines_b,samples_b,bands_b],precision_b,0,interleave_b,'ieee-le');

%读取rgb图像
Input_Name_im=strcat(Input_Name(1: (length(Input_Name)-4)));
inputfile_im=strcat(Intput_path(1: (length(Intput_path)-8)),Input_Name_im,'.png');
image=imread(inputfile_im);

主函数部分

%% 读取高光谱数据
[samples,lines,bands,precision,interleave,wavelength,inputdata,inputdata_w,inputdata_b,image]=Spectral_data(address,file_num);

%% 求白板暗电流ROI平均光谱数据
% 白板平均光谱数据
average_w=selected_area_average_spectrum(bands,inputdata_w);
% 暗电流平均光谱数据
average_b=selected_area_average_spectrum(bands,inputdata_b);

2、计算光谱反射率
使用白板与暗电流的平均DN值计算光谱反射率

%% 系统黑白校正[I=(I0-B)/(W-B)](数据整理)
for i=1:bands
    I(:,:,i)=(double(inputdata(:,:,i))-average_B(:,:,i))./(average_W(:,:,i)-average_B(:,:,i));
end

最终得到的数据I为最终提取到的光谱反射率数据。
以上内容仅供学习,如有错误请您包容性指出,谢谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值