├── Demo_show_training_testing.m ├── Pingan_test.mat ├── Pingan_train.mat ├── Qingyun_test.mat ├── Qingyun_train.mat ├── RC-3DSSA.zip ├── RC3DSSA_m_pa.tif ├── RC3DSSA_m_qy.tif ├── RC3DSSA_m_tdw.tif ├── RC3DSSA_n_pa.tif ├── RC3DSSA_n_qy.tif ├── RC3DSSA_n_tdw.tif ├── README.md ├── Tangdaowan_test.mat ├── Tangdaowan_train.mat └── label2color_new.m /Demo_show_training_testing.m: -------------------------------------------------------------------------------- 1 | close all;clear all;clc 2 | 3 | %QUH-Tangdaowan 4 | load('Tangdaowan_train.mat'); 5 | train_tdw = label2color_new(Tangdaowan_train,'tdw'); 6 | figure,imshow(train_tdw); 7 | 8 | load('Tangdaowan_test.mat'); 9 | test_tdw = label2color_new(Tangdaowan_test,'tdw'); 10 | figure,imshow(test_tdw); 11 | 12 | %QUH-Qingyun 13 | load('Qingyun_train.mat'); 14 | train_qy = label2color_new(Qingyun_train,'qy'); 15 | figure,imshow(train_qy); 16 | 17 | load('Qingyun_test.mat'); 18 | test_qy = label2color_new(Qingyun_test,'qy'); 19 | figure,imshow(test_qy); 20 | 21 | %QUH-Pingan 22 | load('Pingan_train.mat'); 23 | train_pa = label2color_new(Pingan_train,'pa'); 24 | figure,imshow(train_pa); 25 | 26 | load('Pingan_test.mat'); 27 | test_pa = label2color_new(Pingan_test,'pa'); 28 | figure,imshow(test_pa); -------------------------------------------------------------------------------- /Pingan_test.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/Pingan_test.mat -------------------------------------------------------------------------------- /Pingan_train.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/Pingan_train.mat -------------------------------------------------------------------------------- /Qingyun_test.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/Qingyun_test.mat -------------------------------------------------------------------------------- /Qingyun_train.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/Qingyun_train.mat -------------------------------------------------------------------------------- /RC-3DSSA.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC-3DSSA.zip -------------------------------------------------------------------------------- /RC3DSSA_m_pa.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC3DSSA_m_pa.tif -------------------------------------------------------------------------------- /RC3DSSA_m_qy.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC3DSSA_m_qy.tif -------------------------------------------------------------------------------- /RC3DSSA_m_tdw.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC3DSSA_m_tdw.tif -------------------------------------------------------------------------------- /RC3DSSA_n_pa.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC3DSSA_n_pa.tif -------------------------------------------------------------------------------- /RC3DSSA_n_qy.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC3DSSA_n_qy.tif -------------------------------------------------------------------------------- /RC3DSSA_n_tdw.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/RC3DSSA_n_tdw.tif -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | We give the disjoint training and test sets used, which can be viewed by running Demo_show_training_testing.m. We also give the classification result maps of the proposed RC-3DSSA. 2 | 3 | RC-3DSSA.zip contains the code for our method. The code uses disjoint IP as a data example, and you can run Demo_RC3DSSA.m directly to see the results. 4 | 5 | For detailed classification accuracy, please see: H. Fu, G. Sun, L. Zhang, A. Zhang, J. Ren, X. Jia, et al., "Three-dimensional singular spectrum analysis for precise land cover classification from UAV-borne hyperspectral benchmark datasets," ISPRS Journal of Photogrammetry and Remote Sensing, vol. 203, pp. 115-134, 2023. https://doi.org/10.1016/j.isprsjprs.2023.07.013. 6 | 7 | # Data Download 8 | BaiduCloud: https://pan.baidu.com/s/1uWKr2bcetF53_OLd08rovg (extraction code: 1234) 9 | 10 | Zenodo: https://zenodo.org/record/8223066 11 | 12 | # QUH-classification-dataset 13 | Qingdao UAV-borne HSI (QUH) dataset for precise land cover classification. 14 | Qingdao UAV-borne HSI (QUH) dataset consists of three sub-datasets: QUH-Tangdaowan, QUH-Qingyun, and QUH-Pingan, which are freely available as benchmarks for precise land cover classification. 15 | 16 | The QUH-Tangdaowan dataset: it contains a variety of irregular land covers with very similar spectral curves, such as four vegetation species: Coniferous pine, Buxus sinica, Populus, Ulmus pumila L, and three pavements: Flagging, Boardwalk, Gravel road, which undoubtedly poses a great challenge for precise classification. 17 | ![image](https://github.com/RsAI-lab/QUH-classification-dataset/assets/113403685/8d210bf6-23dc-4c3a-9a4c-adbabc87ea1f) 18 | ![image](https://github.com/RsAI-lab/QUH-classification-dataset/assets/113403685/1b58320c-dadf-410d-bad4-dd365d72db93) 19 | 20 | The QUH-Qingyun dataset: it has areas obscured by building shadows, including classes such as Trees, Car, and Asphalt road. The interference of shadows can significantly reduce the accuracy of identification and can be used to assess the robustness of the classification methods. 21 | ![image](https://github.com/RsAI-lab/QUH-classification-dataset/assets/113403685/f9010516-e18b-4ec2-b621-cd09dc918b3d) 22 | ![image](https://github.com/RsAI-lab/QUH-classification-dataset/assets/113403685/34707467-2a25-4760-a31d-3c73bfa77b6e) 23 | 24 | The QUH-Pingan dataset: it has a relatively regular distribution of land cover, but there are large differences in size: Seawater, Road at large scales, Trees, Floating pier, Brick houses, Steel houses at medium scales, and Ship, Car at small scales, which are the most difficult to identify. This dataset can be used to assess the ability of classification methods to portray targets at different scales. 25 | 26 | ![image](https://github.com/RsAI-lab/QUH-classification-dataset/assets/113403685/18cae831-b639-4785-bcab-818f19083d6d) 27 | ![image](https://github.com/RsAI-lab/QUH-classification-dataset/assets/113403685/10918670-60ae-47eb-a0aa-7cfe19c3167b) 28 | 29 | -------------------------------------------------------------------------------- /Tangdaowan_test.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/Tangdaowan_test.mat -------------------------------------------------------------------------------- /Tangdaowan_train.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RsAI-lab/QUH-classification-dataset/2219b87afa1605238153ac8658ccf3e3d82c0f37/Tangdaowan_train.mat -------------------------------------------------------------------------------- /label2color_new.m: -------------------------------------------------------------------------------- 1 | function classif=label2color_new(label,data_name) 2 | 3 | [w, h]=size(label); 4 | 5 | im=zeros(w,h,3); 6 | 7 | switch lower(data_name) 8 | case 'tdw' %QUH-Tangdaowan 9 | map=[140 67 46;153 153 153;255 100 0;0 255 123;164 75 155;101 174 255;118 254 172; 60 91 112;255 255 0;255 255 125;255 0 255;100 0 255;0 172 254;0 255 0;171 175 80;101 193 60;139 0 0;0 0 255]; 10 | for i=1:w 11 | for j=1:h 12 | switch(label(i,j)) 13 | case(1) 14 | im(i,j,:)=uint8(map(1,:)); 15 | case(2) 16 | im(i,j,:)=uint8(map(2,:)); 17 | case(3) 18 | im(i,j,:)=uint8(map(3,:)); 19 | case(4) 20 | im(i,j,:)=uint8(map(4,:)); 21 | case(5) 22 | im(i,j,:)=uint8(map(5,:)); 23 | case(6) 24 | im(i,j,:)=uint8(map(6,:)); 25 | case(7) 26 | im(i,j,:)=uint8(map(7,:)); 27 | case(8) 28 | im(i,j,:)=uint8(map(8,:)); 29 | case(9) 30 | im(i,j,:)=uint8(map(9,:)); 31 | case(10) 32 | im(i,j,:)=uint8(map(10,:)); 33 | case(11) 34 | im(i,j,:)=uint8(map(11,:)); 35 | case(12) 36 | im(i,j,:)=uint8(map(12,:)); 37 | case(13) 38 | im(i,j,:)=uint8(map(13,:)); 39 | case(14) 40 | im(i,j,:)=uint8(map(14,:)); 41 | case(15) 42 | im(i,j,:)=uint8(map(15,:)); 43 | case(16) 44 | im(i,j,:)=uint8(map(16,:)); 45 | case(17) 46 | im(i,j,:)=uint8(map(17,:)); 47 | case(18) 48 | im(i,j,:)=uint8(map(18,:)); 49 | end 50 | end 51 | end 52 | 53 | 54 | case 'qy' %QUH-Qingyun 55 | map=[0,255,0;153 153 153;255 100 0;164 75 155;101 174 255;140 67 46]; 56 | 57 | for i=1:w 58 | for j=1:h 59 | switch(label(i,j)) 60 | case(1) 61 | im(i,j,:)=uint8(map(1,:)); 62 | case(2) 63 | im(i,j,:)=uint8(map(2,:)); 64 | case(3) 65 | im(i,j,:)=uint8(map(3,:)); 66 | case(4) 67 | im(i,j,:)=uint8(map(4,:)); 68 | case(5) 69 | im(i,j,:)=uint8(map(5,:)); 70 | case(6) 71 | im(i,j,:)=uint8(map(6,:)); 72 | end 73 | end 74 | end 75 | 76 | case 'pa' %QUH-Pingan 77 | map=[140 67 46;0 0 255;0 200 0;101 174 255;164 75 155;192 80 70;60 91 112; 255 255 0;255 100 0;118 254 172]; 78 | 79 | for i=1:w 80 | for j=1:h 81 | switch(label(i,j)) 82 | case(1) 83 | im(i,j,:)=uint8(map(1,:)); 84 | case(2) 85 | im(i,j,:)=uint8(map(2,:)); 86 | case(3) 87 | im(i,j,:)=uint8(map(3,:)); 88 | case(4) 89 | im(i,j,:)=uint8(map(4,:)); 90 | case(5) 91 | im(i,j,:)=uint8(map(5,:)); 92 | case(6) 93 | im(i,j,:)=uint8(map(6,:)); 94 | case(7) 95 | im(i,j,:)=uint8(map(7,:)); 96 | case(8) 97 | im(i,j,:)=uint8(map(8,:)); 98 | case(9) 99 | im(i,j,:)=uint8(map(9,:)); 100 | case(10) 101 | im(i,j,:)=uint8(map(10,:)); 102 | end 103 | end 104 | end 105 | 106 | 107 | end 108 | 109 | name=sprintf('classif_%s.tif',data_name); 110 | im=uint8(im); 111 | classif=uint8(zeros(w,h,3)); 112 | classif(:,:,1)=im(:,:,1); 113 | classif(:,:,2)=im(:,:,2); 114 | classif(:,:,3)=im(:,:,3); 115 | %imwrite(classif,name); --------------------------------------------------------------------------------