光谱测量数据处理(matlab)
生活随笔
收集整理的這篇文章主要介紹了
光谱测量数据处理(matlab)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
光譜測量數據處理(matlab)
- 一、數據格式
- 二、數據處理
- 2.1 數據導出
- 2.2 數據處理
- 2.3 處理結果
- 三、地物光譜特征分析
- 3.1 光譜曲線平滑
- 3.2 光譜曲線一階導數
一、數據格式
導出文件:
文件內容:
內容說明:
| 1 | Wavelengths (nanometers) |
| 2 | Reference Values (see below) |
| 3 | Target Values (see below) |
| 4 | Reflectance (percent) |
二、數據處理
2.1 數據導出
將光譜儀測的不同地物的光譜數據以SVC軟件中導出到計算機中,并按不同地物類型存儲在不同Excel表格中。
2.2 數據處理
(一)原理公式
實驗采用垂直測量方法,計算公式為
式中,L——測得地物反射輻射通量,Rr 為白板反射率(已知) ; Lr 為測得白板反射輻射能量;
(二)處理步驟
Step1:共100多組數據,觀察每個數據的圖片結合實地記錄篩選可以利用的數據
Step2:由于儀器光譜突變,將篩選好的數據進行在SVC HR軟件中的平滑操作(overlay)
Step3:將處理后的數據去除文件頭,生成裸數據并保存到txt文本文件中
Step4:求每類地物的光譜數據平均值,生成每類地物的光譜數據
Step5:由于白板反射率波段和每類地物的光譜波段不匹配,對實測數據進行插值
Step6:根據反射率公式選取文件中第四列數據(百分比)與白板反射率的相乘操作
Step7:根據不同需要進行制圖輸出
(三)matlab處理代碼
%---------------------------------------------------------------- %光譜處理代碼 % %時間:2019年6月19日 %---------------------------------------------------------------- %去除文件頭代碼 %輸入.sig文件fileFolder=fullfile('E:\2019-06-11-下');%引號內是需要遍歷的路徑,填絕對路徑,然后保存在fileFolderdirOutput = dir(fullfile(fileFolder,'*.sig'));%引號內是文件的后綴,寫'.txt'則讀取后綴為'.txt'的文件fileNames = {dirOutput.name};%將所有文件名,以矩陣形式按行排列,保存到fileNames中for i=fileNamesi_trace = strcat('E:\2019-06-11-下\',i)%將字符串組合起來i_trace=char(i_trace)i=char(i)ind=findstr(i-1,'.');i=i(1:ind)M = dlmread(i_trace,'',25,0)i_trace_txt=strcat('E:\2019-06-11-下\',i,'txt')%num1, num2, num3, num4]=textread(i_trace,'%f %f %f f','headerlines',29);% A={num1,num2,num3,num4};% eval(['T',num2str(n),'=','load(i_trace{1,1})',';']);dlmwrite(i_trace_txt, M, 'delimiter', '\t','precision', 6,'newline', 'pc')end%生成平均值代碼clc;clear all;close all;fileFolder=fullfile('E:\txt\柏油路');%引號內是需要遍歷的路徑,填絕對路徑,然后保存在fileFolderdirOutput=dir(fullfile(fileFolder,'*.txt'));%引號內是文件的后綴,寫'.txt'則讀取后綴為'.txt'的文件fileNames={dirOutput.name};%將所有文件名,以矩陣形式按行排列,保存到fileNames中sumM = zeros(741,2);for i=fileNamesii_trace = strcat('E:\txt\柏油路\',i); %將字符串組合起來i_trace=char(i_trace);i = char(i);ind=findstr(i,'.');i=i(1:ind-1);M = dlmread(i_trace,'',0,0);sumM(:,1) = M(:,1);sumM(:,2) = sumM(:,2) + M(:,4);%i_trace_txt=strcat('E:\2019-06-11-下\ave.txt''.txt');%dlmwrite(i_trace_txt, M, 'delimiter', '\t','precision', ,'newline', 'pc') endsumM;aveM(:,1)=sumM(:,1);aveM(:,2)=sumM(:,2)/11.0;aveMsave('E:\txt\柏油路\ave.txt','aveM','-ascii');%插值以及計算反射率代碼 clc; clear all; close all; fileName='E:\txt\110-116 118-121小路\ave.txt'; [Target_Lambda,Target_Percent]=textread('E:\txt\110-116 118-121小路\ave.txt','%f %f','headerlines',0); % M = dlmread('E:\txt\柏油路\ave.txt','',0,0) % title('柏油路光譜曲線',); [Whiteboard_Lambda,Whiteboard_Reflectance]= textread('E:\白板定標文件.txt',' %f %f','headerlines',10); Target_interp = interp1(Target_Lambda,Target_Percent,Whiteboard_Lambda); Target_Reflectance=Target_interp.*Whiteboard_Reflectance; A=zeros(957,2); A(:,1)=Whiteboard_Lambda; A(:,2)=Target_Reflectance; save('E:\txt\110-116 118-121小路\光譜曲線.txt','A','-ascii');處理后導出數據
%制圖輸出figure,plot(Whiteboard_Lambda,Target_Reflectance);hold on;plot(Whiteboard_Lambda,Target_interp);legend('柏油路反射率','柏油路百分比原圖像', 'Location', 'SouthEast');xlabel('波段(nm)','fontsize',12,'fontweight','bold','color','b');ylabel('反射率/百分比(%)','fontsize',12,'fontweight','bold','color','b');title('柏油路反射率和百分比','fontsize',15,'fontweight','bold');grid on;figure,plot(Whiteboard_Lambda,Target_Reflectance);% legend('柏油路反射率', 'Location', 'SouthEast');xlabel('波段(nm)','fontsize',12,'fontweight','bold','color','b');ylabel('反射率(%)','fontsize',12,'fontweight','bold','color','b');title('柏油路反射率','fontsize',15,'fontweight','bold');grid on;2.3 處理結果
三、地物光譜特征分析
3.1 光譜曲線平滑
(一)處理代碼
% smooths平滑操作代碼 Reflectance_Smooth = smooth(Target_Reflectance,30,'lowess'); figure, plot(Whiteboard_Lambda,Reflectance_Smooth);(二)處理結果
3.2 光譜曲線一階導數
(一)處理代碼
% 一階導數代碼 figure, plot(Whiteboard_Lambda,Reflectance_Smooth); h=get(gca,'children') x = get(h,'XData'); y = get(h,'YData'); dy = diff(y) ./ diff(x); axis tight; plot(x(1:end-1),dy,'r') xlabel('波段(nm)','fontsize',12,'fontweight','bold','color','b'); ylabel('導數','fontsize',12,'fontweight','bold','color','b'); title('柏油路反射率:一階導數','fontsize',15,'fontweight','bold'); % legend('柏油路反射率:一階導數'); grid on;(二)處理結果
總結
以上是生活随笔為你收集整理的光谱测量数据处理(matlab)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JMeter jp@gc - PerfM
- 下一篇: matlab人脸追踪,求大神帮助我这个菜