高分辨率图像建筑物提取数据集制作

  1. 目录结构

    /dataset/
     xxxx.tif  # 原始图像
     image-3000
         0.tif # 切割后的tif
         1.tif
         ........
         0.json # 生成的json文件也放在该文件夹下
         1.json
         .......
         0_json # 调用labelme_json_to_dataset 0.json 生成的0_json文件夹
             img.png # 原始图片的png格式
             info.yaml
             label.png # 标签图片
             label_names.txt
             label_viz.png
         1_json
         .......
         0.png  # 将json文件夹中的label.png 提取出来
         1.png
         .......
         label_0.tif # 将上边的png标签文件转换为tif格式

  2. 收集数据,高分辨率图像

    1. 无人机数据,航空数据等
  3. 图像切割,像素大小该为多少?

    1. 本数据集平均像素大小(40000*50000) tif格式,LZW压缩方式压缩
    2. 要考虑计算机显卡,目标建筑无尽量不被切割等问题,本利使用3000*3000
      # data:2020-01-04
      # user:dean
      # desc:图像切割脚本
      import tifffile as tiff  # 也可使用pillow或opencv 但若图片过大时可能会出问题
      import os
      image = r"I:\人工智能数据\DOM\裴庄村51-dom\裴庄村51-dom.tif"
      target_dir = r"I:\人工智能数据\DOM\裴庄村51-dom\image-3000"  # 切割后图片存储位置
      width = 1500*2   # 切割图像大小
      height = 1500*2  # 切割图像大小
      img = tiff.imread(image)  # 导入图片
      print("导入图片完成",img.shape) # 原始图片大小
      pic_width = img.shape[1]
      pic_height = img.shape[0]
      row_num = pic_width//width  # 纵向切割数量
      col_num = pic_height // height  # 横向切割数量
      print("开始进行切割,可切割总数为{}".format(col_num*row_num))
      for j in range(col_num):
          for i in range(row_num):
              num = j * row_num + i
              print("正在进行第{}张切割".format(num + 1))
              row = i * width
              row_end = row + width
              col = j * height
              col_end = col + height
              # print(col,col_end,row,row_end)
              cropped = img[col:col_end,row:row_end]
              name = "{}.tif".format(num)
              image_path = os.path.join(target_dir,name)
              tiff.imsave(image_path, cropped)
  4. 标注工具 labelme

    1. 使用label标注每张图片

      pip install labelme  # 安装labelme
    2. 每张图片标注后会生成对应name.json文件
      labelme_json_to_dataset xxx.json 

      # data:2020-01-04
      # user:dean
      # desc:批量将json文件转为 label
      import os
      dir = r"I:\人工智能数据\DOM\裴庄村51-dom\image-3000"
      files = [os.path.join(dir,file) for file in os.listdir(dir) if file.endswith(".json")]
      for file in files:
          cmd = "labelme_json_to_dataset {}".format(file)
          print(cmd)
          os.system(cmd)
    3. 将所有的json/label.png 提取到统一文件夹
      # data:2020-01-04
      # user:dean
      # desc:将label文件夹中的laebl提取出来
      import tifffile as tiff
      from  PIL import Image
      import os
      target_dir = r"I:\人工智能数据\DOM\裴庄村51-dom\image-3000"  # json_label 所在的文件夹
      files = [os.path.join(target_dir,file)  for file in os.listdir(target_dir)]
      for i in files:
          if os.path.isdir(i):
              lables = os.listdir(i)
              for file in lables:
                  if file == "label.png":
                      imgae = Image.open(os.path.join(i, "label.png"))
                      name = "{}.png".format(i.split("_")[0])
                      imgae.save(os.path.join(target_dir,name))
                      print("第{}个文件夹".format(i))
                      break;
    4. 将所有的label.png转换为tif格式
      # coding:utf-8
      # file: change_format.py
      # author: Dean
      # contact: [email protected]
      # time: 2020/1/4 20:41
      # desc:图片格式转换
      from PIL import Image
      import os
      target_dir = "I:\人工智能数据\DOM\裴庄村51-dom\image-3000"  # png 图片所在文件夹
      files = [os.path.join(target_dir,file) for file in  os.listdir(target_dir)]
      print(files)
      for file in files:
          if file.endswith(".png"):
              name = os.path.basename(file)
              new_name = "label_{}.tif".format(name.split(".")[0])
              image = Image.open(file)
              path = os.path.join(target_dir, new_name)
              image.save(path)
              print(path)
    5. 结束(根据需要提取相应数据即可)

原文地址:https://www.cnblogs.com/Dean0731/p/12150524.html

时间: 2024-08-02 21:14:51

高分辨率图像建筑物提取数据集制作的相关文章

图像处理之图像切割---提取信封上的邮编

1.题目: 分割图像,提取信封上的邮编. 2.算法原理: 原创:梁毅军(西安交大图像所,[email protected]) (1) 线框提取: 输入f(x,y)为彩色图像,输出g(x,y)为灰色图像. g(x,y) = T[f(x,y).R, f(x,y).B, f(x,y).R]    T为变换函数 T(R, G, B) = max{R- (G+B)/2 , 0}; 经过T函数变换后,红色的线框被提取出来,值为255,其余颜色的点灰度值变为0. (2)字符框位置的提取:投影算法 向x轴投影 

【Python图像特征的音乐序列生成】数据集制作的一些tricks

关于数据集的制作,我决定去掉很多不必要的东西,比如和弦,于是我选择了melody部分的旋律. 有了midi文件,我现在要abc序列,所以我要通过midi2abc转换一下文件. 批处理程序效果如下: 文件代码如下: 1 import os 2 3 filelist = os.listdir('C:\\Users\\zyx\\Desktop\\New\\melody') #遍历文件夹所有的文件 4 file_raw_list = list(filter(lambda filename:filenam

将普通的图像数据制作成类似于MNIST数据集的.gz文件(数据集制作)

做完MNIST数据集的训练之后,我们想把自己的数据也拿来做一下相关的训练,那么如果调用MNIST数据读取的接口就需要按照他的数据格式来存取数据,首先来看看这个接口(input_data.read_data_set())): #coding=utf-8 #input_data.py的详解 #学习读取数据文件的方法,以便读取自己需要的数据库文件(二进制文件) """Functions for downloading and reading MNIST data."&qu

OpenCV与EmguCV中的图像轮廓提取

轮廓是图像中表示边界的一系列点的集合. 虽然边缘检测算法可以根据像素间的差异检查出轮廓边界的像素,但是它并没有把轮廓做为一个整体表示出来.所以下一步工作是把这些边缘检测出来的像素组装成轮廓. openCV中可以用findContours()函数来从二值图像中提取轮廓. openCV中一般用序列来存储轮廓信息.序列中的每一个元素是曲线中一个点的位置. 函数findContours()从二值图像中寻找轮廓.findContours()处理的图像可以是Canny()后得到的有边缘像素的的图像,也可以是

GDAL库——读取图像并提取基本信息

GDAL库是一个跨平台的栅格地理数据格式库,包括读取.写入.转换.处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持).它使用了一个单一的抽象数据模型就支持了大多数的栅格数据.这里有GDAL库支持的格式:http://www.gdal.org/formats_list.html 注:本文在Qt开发环境下使用GDAL库. 在Qt中使用GDAL库时,除了要加gdal_priv.h头文件外,还需要在xxx.pro文件内加上LIBS += -lgdal ,文件用可编辑的文档打开. 使用GDAL

图像形态学提取边界和区域填充

1.二值图像边界提取.轮廓提取 如果一个点的8邻域都是1,则可以认为这个点是内部的点而不是边界上的点,可以删除这类点,剩下的就是边界上的点.根据腐蚀的特性,使用3*3的结构元素对图像进行腐蚀,可以得到内部的点,那么再用原图减去腐蚀图,就得到了图像的边界. imgPath = 'E:\opencv_pic\src_pic\pic1.bmp'; img = imread(imgPath); img=rgb2gray(img); img = 255-img; se = strel('square',

SAS:提取数据集观测,宏参数

方法一: DATA _NULL_; SET A NOBS=NOBS; CALL SYMPUTX('NUM1',NOBS); STOP; RUN; &NUM1.就是观测数,局部宏参数,供调用 方法二: PROC SQL; SELECT COUNT(*) INTO: NUM2 FROM A; QUIT; &NUM2.:就是观测数,局部宏参数,供调用 一般情况下,两种方法都可以,但是当数据集的观测为零时,方法一就行不通了:

Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集

本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一.数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练.训练的数据集好坏决定了任务的上限.下面介绍两种常用的图像目标检测标注工具:Labelme和LabelImg. (1)Labelme Labelme适用于图像分割任务和目标检测任务的数据集制作,它来自该项目:https://github.com/wkentaro/labelme . 按照项目中的教程安装完毕后,应用界

SAR(遥感 卫星) 图像常用数据集

Brazilian Coffee Scenes数据集较小,5MB左右: UC Merced Land Use Dataset(数据集规模较大,300MB+) MSTAR public targets dataset(需要注册,注册较为简单) 除 MSTAR 数据集外,该站点有其他类型的更丰富的数据集,详见SDMS PUBLIC WEB SITE HOME PAGE 遥感图像场景分类数据集:NWPU-RESISC45 dataset 谷歌搜索这些数据集的名字,或者在数据集所在的官网说明中,还可找到