首页 > 编程语言 >囚徒_风云云检测算法改进

囚徒_风云云检测算法改进

时间:2023-11-18 19:55:36浏览次数:34  
标签:tmp sz 13 mat 算法 && 风云 ref 囚徒


function mask = code(ref_b2,ref_b3,ref_b4,ref_b5,tmp_7,tmp_9,tmp_13,tmp_15,SC,height,mask_lan)
%算法实现
% 此处提供详细说明
sz=size(ref_b2);
temp=ref_b4*0;
temp(temp~=-999.0)=1;
raio=ref_b3 ./ref_b2;
%可信矩阵准备
mat_15=T_mat(tmp_15,224,228,"lt");
mat_9=T_mat(tmp_9,215,225,"lt");
mat_2=T_mat(ref_b2,0.38,0.34,"gt");
mat_3=T_mat(ref_b3,0.23,0.1,"gt");
mat_13=T_mat(tmp_13,280,290,"lt");
mat_4=zeros(sz(1),sz(2));
for i=1:sz(1)
for j=1:sz(2)
if (ref_b4(i,j) >0.06)&&(height(i,j)<3000)&&(temp(i,j)==1)
mat_4(i,j)=0;
elseif (ref_b4(i,j) <0.04)&&(temp(i,j)==1) || ((ref_b4(i,j) >0.06)&&(height(i,j)>3000))
mat_4(i,j)=1;
else
mat_4(i,j)=(0.06-ref_b4(i,j))/0.02;
end
end
end
mat_ra=zeros(sz(1),sz(2));
for i=1:sz(1)
for j=1:sz(2)
if abs(SC(i,j)) < 20
if (raio(i,j) >0.92)
mat_ra(i,j)=0;
elseif raio(i,j) <0.9
mat_ra(i,j)=1;
else
mat_ra(i,j)=(0.92-raio(i,j))/(0.02);
end
else
if raio(i,j) > 0.8
mat_ra(i,j)=0;
elseif raio(i,j) <0.78
mat_ra(i,j)=1;
else
mat_ra(i,j)=(0.8-raio(i,j))/(0.02);
end
end
end
end
tmp_7_13=zeros(sz(1),sz(2));
tmp_7_13=tmp_7-tmp_13;
mat_7_13=zeros(sz(1),sz(2));
for i=1:sz(1)
for j=1:sz(2)
if abs(SC(i,j)) < 20
if tmp_7_13(i,j) > 35.5
mat_7_13(i,j)=0;
elseif tmp_7_13(i,j) <33
mat_7_13(i,j)=1;
else
mat_7_13(i,j)=(35.5-tmp_7_13(i,j))/(2.5);
end
else
if tmp_7_13(i,j) > 19
mat_7_13(i,j)=0;
elseif tmp_7_13(i,j) <17
mat_7_13(i,j)=1;
else
mat_7_13(i,j)=(19-tmp_7_13(i,j))/(2.0);
end
end
end
end
va=zeros(sz(1),sz(2));
va=(ref_b2-ref_b5)./(ref_b2+ref_b5);
%沙漠处理
for i=1:sz(1)
for j=1:sz(2)
if (va(i,j) < -0.04)&&(mask_lan(i,j) == 1)
mat_7_13(i,j)=1;
end
end
end
%陆地
%高云
p_15_lan=zeros(sz(1),sz(2));
p_9_lan=zeros(sz(1),sz(2));
p_4_lan=zeros(sz(1),sz(2));
%高云可信度
F1_lan=zeros(sz(1),sz(2));
temp1_lan=zeros(1,3);
%中云
p_2_lan=zeros(sz(1),sz(2));
%可信度
F2_lan=zeros(sz(1),sz(2));
%低云
p_7_13_lan=zeros(sz(1),sz(2));
F3_lan=zeros(sz(1),sz(2));
%%海洋
%高云
p_15_sea=zeros(sz(1),sz(2));
p_9_sea=zeros(sz(1),sz(2));
p_4_sea=zeros(sz(1),sz(2));
p_13_sea=zeros(sz(1),sz(2));
%高云可信度
F1_sea=zeros(sz(1),sz(2));
temp1_sea=zeros(1,4);
%中云
p_3_sea=zeros(sz(1),sz(2));
p_ra_sea=zeros(sz(1),sz(2));
%可信度
F2_sea=zeros(sz(1),sz(2));
temp2_sea=zeros(1,2);
%低云
p_7_13_sea=zeros(sz(1),sz(2));
F3_sea=zeros(sz(1),sz(2));
%%
W=2;
for i=1+W:sz(1)-W
for j=1+W:sz(2)-W
if mask_lan (i,j)==1
%高云监测
p_15_lan(i,j)=mat_15(i,j);
if (tmp_15(i,j)>224)&&(tmp_15(i,j)<228)
value=inter(mat_15,i,j,mat_15(i,j),1);
p_15_lan(i,j)=value;
end
p_9_lan(i,j)=mat_9(i,j);
if (tmp_9(i,j)>215)&&(tmp_9(i,j)<225)
value=inter(mat_9,i,j,mat_9(i,j),1);
p_9_lan(i,j)=value;
end
p_4_lan(i,j)=mat_4(i,j);
if (ref_b4(i,j)>0.04)&&(ref_b4(i,j)<0.06)
value=inter(mat_4,i,j,mat_4(i,j),1);
p_4_lan(i,j)=value;
end
%高云的可信度
temp1_lan(3)=p_15_lan(i,j);
temp1_lan(1)=p_9_lan(i,j);
temp1_lan(2)=p_4_lan(i,j);
F1_lan(i,j)=min(temp1_lan);
%中云
p_2_lan(i,j)=mat_2(i,j);
if (ref_b2(i,j)>0.34)&&(ref_b2(i,j)<0.38)
value=inter(mat_2,i,j,mat_2(i,j),1);
p_2_lan(i,j)=value;
end
%可信度
F2_lan(i,j)=p_2_lan(i,j);
%低云
p_7_13_lan(i,j)=mat_7_13(i,j);
if (tmp_7_13(i,j)>17)&&(tmp_7_13(i,j)<19)
value=inter(mat_7_13,i,j,mat_7_13(i,j),1);
p_7_13_lan(i,j)=value;
end
%可信度
F3_lan(i,j)=p_7_13_lan(i,j);
else %海
%高云监测
p_15_sea(i,j)=mat_15(i,j);
if (tmp_15(i,j)>224)&&(tmp_15(i,j)<228)
value=inter(mat_15,i,j,mat_15(i,j),1);
p_15_sea(i,j)=value;
end
p_9_sea(i,j)=mat_9(i,j);
if (tmp_9(i,j)>215)&&(tmp_9(i,j)<225)
value=inter(mat_9,i,j,mat_9(i,j),1);
p_9_sea(i,j)=value;
end
p_4_sea(i,j)=mat_4(i,j);
if (ref_b4(i,j)>0.04)&&(ref_b4(i,j)<0.06)
value=inter(mat_4,i,j,mat_4(i,j),1);
p_4_sea(i,j)=value;
end
p_13_sea(i,j)=mat_13(i,j);
if (tmp_13(i,j)>280)&&(tmp_13(i,j)<290)
value=inter(mat_7_13,i,j,mat_7_13(i,j),1);
p_13_sea(i,j)=value;
end
%高云的可信度
temp1_sea(4)=p_15_sea(i,j);
temp1_sea(1)=p_9_sea(i,j);
temp1_sea(2)=p_4_sea(i,j);
temp1_sea(3)=p_13_sea(i,j);
F1_sea(i,j)=min(temp1_sea);
%中云
p_3_sea(i,j)=mat_3(i,j);
if (ref_b3(i,j)>0.1)&&(ref_b3(i,j)<0.23)
value=inter(mat_3,i,j,mat_3(i,j),1);
p_3_sea(i,j)=value;
end
p_ra_sea(i,j)=mat_ra(i,j);
if abs(SC(i,j))<20
if (raio(i,j)>0.9)&&(raio(i,j)<0.92)
value=inter(mat_ra,i,j,mat_ra(i,j),1);
p_ra_sea(i,j)=value;
end
else
if (raio(i,j)>0.78)&&(raio(i,j)<0.8)
value=inter(mat_ra,i,j,mat_ra(i,j),1);
p_ra_sea(i,j)=value;
end
end
%可信度
temp2_sea(2)=p_3_sea(i,j);
temp2_sea(1)=p_ra_sea(i,j);
F2_sea(i,j)=min(temp2_sea);
%低云
p_7_13_sea(i,j)=mat_7_13(i,j);
if abs(SC(i,j))<20
if (tmp_7_13(i,j)>33)&&(tmp_7_13(i,j)<35.5)
value=inter(mat_7_13,i,j,mat_7_13(i,j),1);
p_7_13_sea(i,j)=value;
end
else
if (raio(i,j)>17)&&(raio(i,j)<19)
value=inter(mat_7_13,i,j,mat_7_13(i,j),1);
p_7_13_sea(i,j)=value;
end
end
%可信度
F3_sea(i,j)=p_7_13_sea(i,j);
end
end
end
%可信度海洋F_sea
F_sea=zeros(sz(1),sz(2));
F_sea=nthroot((F1_sea.*F2_sea.*F3_sea),3);
%针对耀斑区的晴空优化
for i=1:sz(1)
for j=1:sz(2)
if abs(SC(i,j))<20
if F_sea(i,j)>0.85
F_sea(i,j)=1;
end
end
end
end
%可信度陆地F_lan
F_lan=zeros(sz(1),sz(2));
F_lan=nthroot((F1_lan.*F2_lan.*F3_lan),3);
%可信度F
F=zeros(sz(1),sz(2));
F=F_lan+F_sea;
%晴空修复
ndvi=(ref_b3-ref_b2)./(ref_b3+ref_b2);
for i=1:sz(1)
for j=1:sz(2)
if (ndvi(i,j) > 0.4)||(ndvi(i,j) <-0.18)
F(i,j)=1;
end
end
end
mask=mask_co(ref_b2,sz,F,mask_lan);
disp("code OKAY!")
end

标签:tmp,sz,13,mat,算法,&&,风云,ref,囚徒
From: https://www.cnblogs.com/qt-pyq/p/17841004.html

相关文章

  • 囚徒4.0_13_梯度
    囚徒4.0_13_梯度这是是关于求取梯度的#coding:utf-8importnumpyasnpimportmatplotlib.pylabaspltfrommpl_toolkits.mplot3dimportAxes3D#非批处理梯度求取(1,2)(x1,x2)def_numerical_gradient_no_batch(f,x):h=1e-4#0.0001grad=np.zeros_like(x)#对x进......
  • 囚徒4.1_12_数值微分近似
    数值微分近似#囚徒4.0_13_数值微分近似importnumpyasnpimportmatplotlib.pylabasplt#求数值微分导数defnumerical_diff(f,x):h=1e-4#0.0001return(f(x+h)-f(x-h))/(2*h)#函数deffunction_1(x):return0.01*x**2+0.1*xdeftangent_line(f,x):d......
  • 数组类算法题——删除有序数组中的重复项
    删除有序数组中的重复项题目:给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的......
  • 代码随想录算法训练营第七天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和
    今日学习的文章链接和视频链接https://programmercarl.com/链表理论基础.html●454.四数相加IIvarfourSumCount=function(nums1,nums2,nums3,nums4){letcount=0letmap=newMap();for(letnumber1ofnums1){for(letnumber2ofnums......
  • 代码随想录算法训练营第六天 |● 哈希表理论基础 ● 242.有效的字母异位词 ● 349.
    今日学习的文章链接和视频链接https://programmercarl.com/哈希表理论基础.html242.有效的字母异位词varisAnagram=function(s,t){if(s.length!==t.length)returnfalseletmap=newMap();for(letcharofs){if(!map.get(char)){......
  • 数组类算法题——数组中移除指定元素
    数组中移除指定元素 题目:给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。解......
  • 【教3妹学编程-算法题】数位和相等数对的最大和
    3妹:2哥,你有没有看到新闻“18岁父亲为4岁儿子落户现身亲子鉴定”2哥 :啥?18岁就当爹啦?3妹:确切的说是14岁好吧。2哥 :哎,想我30了,还是个单身狗。3妹:别急啊,2嫂肯定在某个地方等着你去娶她呢。又不是结婚越早越好。2哥:是啊,这孩子14岁当爹,也太早了。3妹:2哥,你找女朋友有什么条件没有......
  • 进程有哪些调度算法?
    进程调度就是确定某一个时刻CPU运行哪个进程,常见的进程调度算法有:先来先服务非抢占式的调度算法,按照请求的顺序进行调度。有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。另外,对I/O密集型进程......
  • 智慧工地平台,利用5G及智能终端算法,实现IOT设备数据抓取与处理
    智慧工地平台采用先进的云计算、物联网和大数据技术,可以实现智慧工地方案的落地。能够实现实时掌控工地活动及各项进度,有效预防违章施工。能够为工地提供多项服务,如安全预警、机械智能监控、作业指导、绿色施工、劳务管理、工程进度监控、施工质量检查等。可实时收录及通知施工进度......
  • 算法题 - 跳楼梯
    提问:有一道编程题是跳楼梯类型的:有M级楼梯,若每次只能向上跳1级或4级或7级,那么要走上M级,共有多少种写法,请用C语言写出这到题的最优解法,最好用递归来解决,并给每行代码和代码块添加注释解答:这是一个动态规划问题,我们可以使用递归和备忘录的方法来解决。首先定义一个数组dp,其中dp[i]表......