当前位置: 首页 > news >正文

深度学习遥感影像分类(1)_数据集批量准备

近年来,深度学习在遥感影像地物分类中取得了一系列显著的效果。CNN可以很好的获取影像纹理信息,捕捉像素与像素之间的空间特征,因此,一个训练好的深度学习模型在地物提取中具有很大的优势。但模型的训练却是一个很繁琐的任务,需要人工准备数据集,贴标签,训练模型等。本文将以sar影像为例实现冰水二分类的数据集批量准备工作(划线取点截取小图片保存):

1.原始sar遥感影像

2.预处理思路:

     a.人工划线:对应在冰和水上画n条线(自己设置,注意自己需要针对类别所占比例控制线条数量和长度)

     b.保存小图片:获取直线上点坐标,以每个像素点为中心取21×21的小图片(类似mnist数据集,尺寸自己设置),保存至文件夹

     c. 创建label:以保存的小图片名称+空格+类别(0或者1)将label保存至新创建的txt文档中

3.代码实现:

     a.创建一个main函数调用drawTrainingSamples(img);CreateTrainSmallImages(img);drawValSamples(img);CreateValSmallImages(img);这四个函数,功能分别是和划训练集,创建训练集,划验证集,创建验证集

clear ;
clc;

img = imread('150905_multilook_4_s1a-ew-grd-hv-20150905t174712-20150905t174812-007583-00a7f0-002.tiff');
%准备训练集数据
drawTrainingSamples(img);
CreateTrainSmallImages(img);

%准备验证集数据
drawValSamples(img);
CreateValSmallImages(img);

      b.drawTrainingSamples(img)

function [] = drawTrainingSamples(img)
n_ice=4;
n_water=4;
h_im=imshow(img);
bw_train_ice=zeros(size(img));
bw_train_water=zeros(size(img));
fprintf('please draw four lines on the picture for preparing the training sets of Ice');
for i = 1:n_ice
    h = imline;
    bw = createMask(h,h_im);
    bw_train_ice=bw_train_ice+bw;
end
figure,imshow(bw_train_ice);

 h_im=imshow(img);
 fprintf('please draw four lines on the picture for preparing the training sets of Water');
 for i = 1:n_water
    h = imline;
    bw = createMask(h,h_im);
    bw_train_water=bw_train_water+bw;
 end
figure,imshow(bw_train_water);

 save('bw_train_ice.mat','bw_train_ice');
 save('bw_train_water.mat','bw_train_water');

       c.CreateTrainSmallImages(img)

function [] = CreateTrainSmallImages(img)

%创建小图片
      load bw_train_ice;
      load bw_train_water;
       fprintf('Creating training small images...');
        [X,Y]=find(bw_train_ice==1);
        A=[X,Y];
        A;
        [a,b]=size(A);
        mkdir('train');
        
            for i=1:a
                    m=A(i,1);
                    n=A(i,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
                    imwrite(SmallImage,['train/',num2str(i),'.jpg']);
                     
                    fid = fopen('train.txt', 'a');  
                    t=[num2str(i),'.jpg'];
                    fprintf(fid, '%s %d \n', t,0);  
                    fclose(fid); 
            end
            
        [X,Y]=find(bw_train_water==1);
        B=[X,Y];
        B;
        [a,b]=size(B);
        
            for j=1:a
                    m=B(j,1);
                    n=B(j,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
		             j=i+j;
                    imwrite(SmallImage,['train/',num2str(j),'.jpg']);
                     
                    fid = fopen('train.txt', 'a');  
                    t=[num2str(j),'.jpg'];
                    fprintf(fid, '%s %d \n', t,1);  
                    fclose(fid); 
                     
            end
end

       d.drawValSamples(img)

function [] = drawValSamples(img)
n_ice=4;
n_water=4;
h_im=imshow(img);
bw_val_ice=zeros(size(img));
bw_val_water=zeros(size(img));
fprintf('please draw four lines on the picture for preparing the validition sets of Ice');
for i = 1:n_ice
    h = imline;
    bw = createMask(h,h_im);
    bw_val_ice=bw_val_ice+bw;
end
figure,imshow(bw_val_ice);

 h_im=imshow(img);
 fprintf('please draw four lines on the picture for preparing the validition sets of Water');
 for i = 1:n_water
    h = imline;
    bw = createMask(h,h_im);
    bw_val_water=bw_val_water+bw;
 end
figure,imshow(bw_val_water);

 save('bw_val_ice.mat','bw_val_ice');
 save('bw_val_water.mat','bw_val_water');

       e.CreateValSmallImages(img)

function [] = CreateValSmallImages(img)

%创建小图片
      load bw_val_ice;
      load bw_val_water;

        [X,Y]=find(bw_val_ice==1);
        A=[X,Y];
        A;
        [a,b]=size(A);
        mkdir('val');
          fprintf('Creating validition sets small images...');
            for i=1:a
                    m=A(i,1);
                    n=A(i,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
                    imwrite(SmallImage,['val/',num2str(i),'.jpg']);
                     
                    fid = fopen('val.txt', 'a');  
                    t=[num2str(i),'.jpg'];
                    fprintf(fid, '%s %d \n', t,0);  
                    fclose(fid); 
            end
            
        [X,Y]=find(bw_val_water==1);
        B=[X,Y];
        B;
        [a,b]=size(B);
        
            for j=1:a
                    m=B(j,1);
                    n=B(j,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
		            j=i+j;
                    imwrite(SmallImage,['val/',num2str(j),'.jpg']);
                     
                    fid = fopen('val.txt', 'a');  
                    t=[num2str(j),'.jpg'];
                    fprintf(fid, '%s %d \n', t,1);  
                    fclose(fid); 
                     
            end
end

 

转载于:https://www.cnblogs.com/xzyzg/p/7220823.html

相关文章:

  • 2012来了
  • 初学html
  • hive-udf
  • java的IO详解
  • Hadoop如何计算map数和reduce数
  • hive源码解析(1)之hive执行过程
  • java面试(五)
  • hive源码解析(2)之编译前序
  • eCharts.js使用心得
  • ABAP POH和POV事件中 获得屏幕字段的值
  • Hive优化(2)之系统评估reduce数为1的MR Job优化
  • RecycleView + SwipeRefreshLayout 实现下拉刷新和底部自动加载
  • hive中间接实现不等值连接
  • python之字符编码
  • Hadoop计算文件大小
  • angular组件开发
  • gulp 教程
  • Hibernate【inverse和cascade属性】知识要点
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java 网络编程(2):UDP 的使用
  • JS函数式编程 数组部分风格 ES6版
  • js继承的实现方法
  • js如何打印object对象
  • JS字符串转数字方法总结
  • Python - 闭包Closure
  • Python爬虫--- 1.3 BS4库的解析器
  • Shell编程
  • SOFAMosn配置模型
  • Vue 动态创建 component
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 服务器之间,相同帐号,实现免密钥登录
  • 力扣(LeetCode)357
  • 前端攻城师
  • 前端临床手札——文件上传
  • 区块链分支循环
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小而合理的前端理论:rscss和rsjs
  • 一个SAP顾问在美国的这些年
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #android不同版本废弃api,新api。
  • #pragma pack(1)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $jQuery 重写Alert样式方法
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (搬运以学习)flask 上下文的实现
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm高校实验室 毕业设计 800008
  • (全注解开发)学习Spring-MVC的第三天
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)创业的注意事项