% 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);
没有合适的资源?快使用搜索试试~ 我知道了~
chl_func.rar_chlorophyll_image concentration
共5个文件
m:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 111 浏览量
2022-09-24
01:05:32
上传
评论
收藏 4KB RAR 举报
温馨提示
extract concentration of chlorophyll from an image (small toolbox) downloaded images from "oceancolor" project powered by NASA
资源推荐
资源详情
资源评论
收起资源包目录
chl_func.rar (5个子文件)
iso_conc.m 955B
comb_color.m 4KB
chl_max.m 372B
chl_interp.m 899B
chl_find.m 3KB
共 5 条
- 1
资源评论
JaniceLu
- 粉丝: 93
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功