Pytorch【直播】2019 年縣域農業大腦AI挑戰賽---初級准備(一)切圖


比賽地址:https://tianchi.aliyun.com/competition/entrance/231717/introduction

這次比賽給的圖非常大5萬x5萬,在訓練之前必須要進行數據的切割。通常切割后的大小為512x512,或者1024x1024.

按照512x512切完后的結果如下:

切圖時需要注意的幾點是:

gdal的二進制安裝包wheels在:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 這里獲取

圖像是4個channel,前三個是RGB,第四個是alpha通道(透明)丟掉

圖像的區域很多事空白的需要濾掉,不處理。

切割的時候需要有冗余。

大小不能按照完全的512,1024等切割,切割的要大一點數據在后期需要增強:弱縮放,旋轉等。

上代碼:

from osgeo import gdal
from PIL import Image
import os




if __name__=='__main__':
    name=input("input the image number 1 or 2 you want clip:")
    imagepath='./data/image_{}.png'.format(name)
    n=os.path.basename(imagepath)[:-4]
    labelname='./data/'+n+'_label.png'
    dslb=gdal.Open(labelname)
    ds=gdal.Open(imagepath)
    wx=ds.RasterXSize
    wy=ds.RasterYSize
    stx=0
    sty=0
    step=900
    outsize=1500
    nullthresh=outsize*outsize*0.7
    cx=0
    cy=0
    while cy+outsize<wy:
        cx=0
        while cx+outsize<wx:
            img=ds.ReadAsArray(cx,cy,outsize,outsize)
            img2=img[:3,:,:].transpose(1,2,0)
            if (img2[:,:,0]==0).sum()>nullthresh:
                cx+=step
                print('kongbai...',cx,cy)
                continue
            
            img2=Image.fromarray(img2,'RGB')
            img2.save('./data/train/data1500/'+n+'_{}_{}.bmp'.format(cx,cy))
            #deal with label
            img=dslb.ReadAsArray(cx,cy,outsize,outsize)
            img=Image.fromarray(img).convert('L')
            img.save('./data/train/label1500/'+n+'_{}_{}.bmp'.format(cx,cy))

            cx+=step
        cy+=step
        
        
    

  

  路徑需要修改,就可使用。 

       這里我按照1500x1500大小切割的,打算用1024訓練。

       這樣的數據的切圖就算准備完了。如下圖:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM