欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    遥感影像监督分类与非监督分类及相关代码实现Word下载.docx

    • 资源ID:5107787       资源大小:199.72KB        全文页数:34页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    遥感影像监督分类与非监督分类及相关代码实现Word下载.docx

    1、float train1603,train2603,train3603,train4603; /存各类训练样本 float m13,m23,m33,m43,c133,c233,c333,c433; /各类均值向量及协方差矩阵float p=0.25; /先验概率float test24011; /检验样本 各列分别存放:分类前类别,行号,列号,一波段灰度,二波段灰度,三波段灰度,分类后类别float a1,a2,a3,a4; /公式中常数项;float qq,qq1,qq2,qq3,qq4; /分类精度 float k; /kappa值int q44; /混淆矩阵float a44; /精度指

    2、标矩阵 各列分别为生产者精度 漏分误差 /用户精度 错分误差int main() void getdata1(char *filename); void getdata2(char *filename); void compute(float train603,float m3,float c33,float *a); float identify(float m3,float c33,float a,float band1,float band2,float band3); int classify(float p1,float p2,float p3,float p4); void tes

    3、ting(); void accuracy(float p44); void output(char *filename); void output1(char *filename); getdata1(05training.txt); /存放的是训练样本三个波段的灰度值 getdata2(05testing.txt /检验样本行号 列号 类别代码 三个波段的灰度值 compute(train1,m1,c1,&a1); /计算各类均值向量及协方差矩阵 compute(train2,m2,c2,&a2); compute(train3,m3,c3,&a3); compute(train4,m4,

    4、c4,&a4); testing(); /对检验样本分类 accuracy(a); output(05test-result.txt output1(05confusion-matrix.txt return 0;void getdata1(char *filename) ifstream infile(filename,ios:in|ios:nocreate); /把每类样本的灰度值依次存入对应的数组 if(infile=0) coutopen infile error!endl; exit(1); int i,j; for(i=0;i60;i+) for(j=0;jtrain1ij;tra

    5、in2ij;train3ij;train4ij; infile.close();void getdata2(char *filename) cout exit(1);240;i+) /检验样本的数量为2406;j+) /行、列号、类别代码、三个波段灰度值testij;void compute(float train603,float m3,float c33,float *a) void gauss(int f,float n33); /求n矩阵的逆阵声明 i+) mi=0; mi+=trainji; mi=mi/60; float Train360; /转置矩阵 Trainij=trainj

    6、i; int k;i+) /求协方差 for(j=0; cij=0; for(k=0;kk+) cij+=(Trainik-mi)*(trainkj-mj); cij=cij/60; *a=c00*c11*c22+c01*c12*c20+c02*c10*c21 -c02*c11*c20-c00*c12*c21-c01*c10*c22; *a=(-0.5)*log(*a)+log(p)-25*log(2*PI); gauss(3,c); float identify(float m3,float c33,float a,float band1,float band2,float band3) /

    7、 计算待分样本的d(X) float x3; x0=band1; x1=band2; x2=band3; xi-=mi; float d3; di=0; di+=(xi*cji); double q=0; q+=xi*di; q=(-0.5)*q+a; q=exp(q); return q;int classify(float p1,float p2,float p3,float p4) /根据后验概率将像元归为指定类别 float p4; p0=p1; p1=p2; p2=p3; p3=p4; int i,k=0; float max=p0; for(i=1;4; if(maxpi) max

    8、=pi; k=i; k+; return k;void testing() double p1,p2,p3,p4,p5,p6,p7; float kappa(int k44); p1=identify(m1,c1,a1,testi3,testi4,testi5); p2=identify(m2,c2,a2,testi3,testi4,testi5); p3=identify(m3,c3,a3,testi3,testi4,testi5); p4=identify(m4,c4,a4,testi3,testi4,testi5);p5=identify(m5,c5,a5,testi3,testi4,t

    9、esti5);p6=identify(m6,c6,a6,testi3,testi4,testi5);p7=identify(m7,c7,a7,testi3,testi4,testi5); double dx=p1+p2+p3+p4+p5+p6+p7; p1=p1/dx; p2=p2/dx; p3=p3/dx; p4=p4/dx; p5=p5/dx; p6=p6/dx; p7=p7/dx; testi7=p1; testi8=p2; testi9=p3; testi10=p4; testi11=p5; testi12=p6; testi113=p7; testi6=classify(p1,p2,

    10、p3,p4,p5,p6,p7); / coutsetiosflags(ios:fixed)setprecision(3)p1 p2p3p4p5p6p77; qij=0;i+) / 混淆矩阵中的各类别组合数量 if(testi2=1&testi6=1) q00+;testi6=2) q01+;testi6=3) q02+;testi6=4) q03+; if(testi2=1&testi6=4) q04+;testi6=4) q05+;testi6=4) q06+; for(i=60;120; if(testi2=2&testi6=1) q10+;testi6=2) q11+;testi6=3)

    11、 q12+;testi6=4)q13+; if(testi2=2&testi6=4)q14+;testi6=4)q15+;testi6=4)q16+; for(i=120;180; if(testi2=3&testi6=1) q20+;testi6=2) q21+;testi6=3) q22+;testi6=4) q23+; if(testi2=3&testi6=4) q24+;testi6=4) q25+;testi6=4) q26+; for(i=180; if(testi2=4&testi6=1) q30+;testi6=2) q31+;testi6=3) q32+;testi6=4)

    12、q33+;testi6=4) q34+;testi6=4) q35+;testi6=4) q36+; qq1=(float)q00/60.0; qq2=(float)q11/60.0; qq3=(float)q22/60.0;qq4=(float)q33/60.0;qq5=(float)q43/60.0;qq6=(float)q53/60.0;qq7=(float)q63/60.0; qq=(qq1+qq2+qq3+qq4+ qq5+qq6+qq7)/4; qq=qq*100; k=kappa(q);/ cout1 代表 房顶 , 2 代表 街道 , 3 代表 小路 ,4 代表 草地 ,5 代

    13、表 树木,6 代表 水体,7 代表 阴影正确分类百分比分别为:;qq1qq2qq3qq4qq5 qq6qq7总分类精度:setprecision(2)qq%Kappa值为:void output(char *filename) ofstream outfile(filename,ios:out); if(outfile=0)open outfile error! outfilesetprecision(4)row col before after proba1 proba2 proba3 proba4 int i;setprecision(0)testi0testi1testi2testi6t

    14、esti7testi8testi9testi10=0;k-) p=n00;f; q=ni0; hi=(ik)?q:-q)/p; for(j=1;=i; ni-1j-1=nij+q*hj; nf-1f-1=1/p; nf-1i-1=hi;i; nji=nij;float kappa(int k44) float K; int c4,d4; int N=0, M=0, D=0; ci=0; di=0; N+=kij; if(i=j) D=D+kij; ci=kij+ci; dj=kij+dj; M=ci*di+M; K=float(N*D-M)/(N*N-M); return K;void acc

    15、uracy(float p44) int a4,b4; float a14,a24,b14,b24; ai=0; bi=0; a1i=0; b1i=0; a2i=0; b2i=0; pij=0; ai+=qij; bi+=qji; a1i=(float)qii/ai; a2i=1-a1i; b1i=(float)qii/bi; b2i=1-b1i; pi0=a1i*100; /生产者精度 pi1=a2i*100; /漏分误差 pi2=b1i*100; /用户精度 pi3=b2i*100; /错分误差 void output1(char *filename) ofstream outfile(filename,ios: Lakes Built-up Land Forest Land Cropland switch(i) case 0: outfileLakes break; case 1: case 2: case 3:break


    注意事项

    本文(遥感影像监督分类与非监督分类及相关代码实现Word下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开