关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

【变化检测】多时相影像变化检测精度评价(附有完整代码)

发布时间:2023-06-26 15:59:57

 对多时相影像进行精度评估,通常都是使用混淆矩阵求其精确率、漏检率和虚警率;但是要想使用混淆矩阵求上述指标一般都需要知道参考图,也就是在变化检测前知道变化部分和未变化部分,然后用其和变化检测后的结果进行对比,最后求出上述指标;


       道路变化检测使用的往往是矢量数据,即如果想使用变化检测结果和参考图进行对比求变化检测精度指标的话,参考图的生成也必须使用矢量数据;难点在于,道路二值图在进行矢量化时,矢量化结果受道路拓扑结构的影响,从而带来一系列问题,即得到的精度指标和真实情况相差较远;亲测过,在使用道路二值图矢量化结果生成参考图时,未变化部分无法完全重合!!!


       退而求其次,先用道路二值图生成参考图,然后再对参考图进行细化、矢量化操作;此举有原因有二:


(1)生成的参考图相当于把原始道路分为了变化部分和未变化部分两张影像,降低了道路拓扑结构对道路二值图矢量化的影像,使其结果更接近真实情况;


(2)多时相影像中未变化的道路占很大比例,所以针对生成的参考图进行细化、矢量化时,其结果更接近真实情况;


1、生成参考图


(1)制作标签


   我使用的是 labelme 进行打样,标签制作流如下:


       A.在对两幅多时相影像进行打样时,任意挑选其中的一幅影像旧影像(或新影像),对比两幅影像,然后针对未变化部分对旧影像(新影像)进行打样,打样完成后生成的是文件;


       B.对另一幅影像随意打样(随便打两条线即可),目标是为了生成文件;


       C.打开和文件,打开方式选择 vs/记事本 都可以,然后把第一个 .json 文件中的打样数据复制到第二个 .json 中(注意:在复制之前需要把第二个 .json 中的打样数据删掉),并保存;


       D.最后用 labelme 分别打开两个 .json 文件,然后对剩余部分进行打样即可;


       说明:上面做法的目的是,使得两幅多时相影像中未变化部分,使用相同的打样数据,以便后面获取参考图像;


下面举例说明:


下面是使用上述方法生成的多时相影像的道路二值图;


 (2)生成参考图


A.生成参考图核心代码

因涉及一些执行语句,禁止写入,请联系客服获取

   

 B.参考图结果

注:左图是变化部分,有图是未变化部分; 

C.参考图矢量化结果

注:左图是变化部分,有图是未变化部分;

        说明:在生成了参考图后,然后对其进行细化、矢量化操作,最后使用该结果去进行变化检测精度评估;上面给的代码是生成参考图的核心代码,我在实现时使用 QT 将其封装成独立的模块了,如有需要可留言!!!


2、精度评价


根据上述生成的参考图矢量化结果和自己变化检测算法得到的结果进而求变化检测精度评价指标;


(1)精度评估核心代码


因涉及一些执行语句,禁止写入,请联系客服获取

   

说明:上述代码第一个函数中 :createVectorFromFile、simplifyVector、outputBinaryResult 分别是自己的道路二值图矢量化、矢量化简化、输出矢量化结果函数;


(2)变化检测结果


说明:红色为拆除部分、黄色为新增部分、绿色为未变化部分;


(3)精度评价结果


      因为研究内容偏工程,所以基本上所有的内容都使用 VS + QT 封装成独立的模块,由上面给出的代码和显示结果也可以看出; 如果您仅仅需要求变化检测结果,针对上述代码微调足以(主要是路径);


如需要完整代码模块请移步:https://download.csdn.net/download/weixin_47156401/72310899


/template/Home/leiyu/PC/Static