% Restituisce la scala della clorofilla in relazione ad una determinata
% colorbar. V e` la matrice nota nella quale le prime tre colonne sono i
% valori RGB e la quarta la relativa concentrazione di clorofilla noti. Le
% righe saranno tante quanto il numero di concentrazioni note. Img e`
% l'immagine RGB della colorbar.
% E` possibile copiare direttamente una colorbar da una pagina web ed
% estrarre i dati dalla medesima purche` essa venga salvata come un file
% bmp.
% Gli input della funzione sono img che e` la matrice NxMx3 RGB
% ottenuta caricando la colormap .bmp.
% fpix e lpix che sono rispettivamente le coordinate xy del primo e
% dell'ultimo pixel colorati della colorbar
% Per poter ottenere i valori della scala e` pero` necessario modificare il
% file di testo chl2RGB nel seguente modo:
%
% $conc_chl1#R1!G1&B1@
% $conc_chl2#R2!G2&B2@
% $conc_chl3#R3!G3&B3@
% ...
% ...
% ...
%
% che sono dei valori di concentrazione di colorofilla leggibili
% direttamente dalla colorbar assieme alla tonalita` RGB relativa. E`
% possibile usare il comando imshow per vedere RGB di ogni pixel della
% colorbar.
% Al termine Mfin sara` la matrice contenente le informazioni di clorofilla
% le concentrazioni di clorofilla e i relativi valori RGB associati.
function Mfin=comb_color(img,fpix,lpix)
fid=fopen('insert your own path...chl_project\chl2RGB.txt','r');
c = fread(fid,inf);
fclose(fid);
c_r=char(c');
v_dol=strfind(c_r,'$');
v_canc=strfind(c_r,'#');
v_excl=strfind(c_r,'!');
v_and=strfind(c_r,'&');
v_at=strfind(c_r,'@');
for i=1:length(v_dol)
str_temp=c_r((v_dol(1,i)+1):(v_canc(1,i))-1);
v_conc(1,i)=str2num(str_temp);
str_temp=c_r((v_canc(1,i)+1):(v_excl(1,i))-1);
v_RGB(i,1)=str2num(str_temp);
str_temp=c_r((v_excl(1,i)+1):(v_and(1,i))-1);
v_RGB(i,2)=str2num(str_temp);
str_temp=c_r((v_and(1,i)+1):(v_at(1,i))-1);
v_RGB(i,3)=str2num(str_temp);
end
size(v_RGB)
h=1;
colore=0;
for i=fpix(1,1):lpix(1,1)
%for i=13:520
%cont=0;
flag=0;
for j=1:size(v_RGB,1)
if img(fpix(1,2),i,1)==v_RGB(j,1)&& img(fpix(1,2),i,2)==v_RGB(j,2) && img(fpix(1,2),i,3)==v_RGB(j,3)
%if img(25,i,1)==v_RGB(j,1)&& img(25,i,2)==v_RGB(j,2) && img(25,i,3)==v_RGB(j,3)
%cont=cont+1;
flag=1;
end
end
%if cont==(size(v_RGB,1)-1)
if flag == 0
colore(h,1)=img(fpix(1,2),i,1);
colore(h,2)=img(fpix(1,2),i,2);
colore(h,3)=img(fpix(1,2),i,3);
h=h+1;
end
end
w=griddata3(v_RGB(:,1),v_RGB(:,2),v_RGB(:,3),v_conc,colore(:,1),colore(:,2),colore(:,3),'linear');
%plot(w)
%X=[1:468];
X=[1:size(w,1)]; % tutti i pixel mancanti al file
size(v_conc,2)
x_nan=isnan(w);
h=1;
%size(x_nan,1)
for i=1:size(x_nan,1)
if x_nan(i,1)==true
xi(h,1)=i;
h=h+1;
end
end
X_nomiss=X;
miss=find(isnan(w)); % vettore con le coordinate
X_nomiss(miss)=[]; %vettore che contiene i t dove c'� il dato
w_nomiss=w(~isnan(w)); % ho un vettore che mi dice dove ci sono i dati
w=interp1(X_nomiss,w_nomiss,X,'linear'); %interpolazione
M1=[v_RGB,v_conc'];
M2=[colore,w'];
M=[M1;M2];
for i=1:size(M,1)
[minimo,index]=min(M(:,4));
Mfin(i,:)=M(index,:);
M(index,4)=100;
end
risp=input('Salvare file .mat ? (Y/N)','s');
if strcmp(risp,'y') || strcmp(risp,'Y')
save('Mfin.mat', 'Mfin');
else
disp('Non si e` voluto salvare il file.');
end
figure('name','chl concentration scale');
subplot(2,1,1); plot(Mfin(:,4));
subplot(2,1,2); imshow(img);
JaniceLu
- 粉丝: 95
- 资源: 1万+
最新资源
- 废弃 arc90 可读性书签的 Python 端口.zip
- 毕业设计背单词微信小程序.zip
- Zulip API 的 Python 库 .zip
- Zipline,一个 Pythonic 算法交易库.zip
- YARA 的 Python 接口.zip
- 自动化unittest框架示例报告
- JS+CSS3文章内容背景黑白切换特效代码.zip
- 11.2.0.4.221018-DB PSU p34474433-112040-MSWIN-x86-64.zip
- Wkhtmltopdf python 包装器将 html 转换为 pdf.zip
- Windows 事件日志文件 (.evtx) 的纯 Python 解析器.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈