Beispiel #1
0
        public void VisualizeResults()
        {
            foreach (var path in Directory.GetFiles(Path.Combine(OutputPath, "predicted"), "*.npy"))
            {
                var info      = new FileInfo(path);
                var predicted = np.load(info.FullName).AsGeneric <float>();
                using (var stream = File.Create(Path.Combine(OutputPath, "Predicted", info.Name.Replace(".npy", ".png"))))
                {
                    new ImageConverter().ToPng(predicted, stream, HeightToGrayscale.Unit8());
                }

                var original = np.load(Path.Combine(OutputPath, "test_y", info.Name)).AsGeneric <float>();
            }
        }
Beispiel #2
0
        public void ExtractTrainingData()
        {
            int count = 0;

            foreach (var fullCode in TileCodes)
            {
                var full      = np.load(Path.Combine(OutputPath, $"{fullCode}.npy")).AsGeneric <float>();
                var fullRange = full.Range();
                foreach (var tile in GetYTiles(full))
                {
                    var tileRange = tile.Range();
                    if (count % 11 < 2 && tileRange.Delta > 1)
                    {
                        // Don't use tiles with a very small range
                        var set   = count % 7 == 0 ? "test" : "train";
                        var range = count % 2 == 0 ? fullRange : tileRange;

                        Normalize(tile, range);


                        np.save(Path.Combine(OutputPath, $"{set}_y", $"sample-{count:00000}.npy"), tile);
                        using (var stream = File.Create(Path.Combine(OutputPath, $"{set}_y", $"sample-{count:00000}.png")))
                        {
                            new ImageConverter().ToPng(tile, stream, HeightToGrayscale.Unit8());
                        }

                        var x =
                            tile
                            .Downscale(Scale);
                        if (count % 4 < 2)
                        {
                            Downsample(x, 255);
                        }
                        else
                        {
                            Downsample(x, 65535);
                        }

                        np.save(Path.Combine(OutputPath, $"{set}_x", $"sample-{count:00000}.npy"), x);
                        using (var stream = File.Create(Path.Combine(OutputPath, $"{set}_x", $"sample-{count:00000}.png")))
                        {
                            new ImageConverter().ToPng(x, stream, HeightToGrayscale.Unit8());
                        }
                    }
                    count++;
                }
            }
        }
Beispiel #3
0
        public void ExtractOriginals()
        {
            foreach (var tile in TileCodes)
            {
                var path = $@"D:\Data\DEM\NZ\{tile}.asc";
                var file = NzReader.Read(path);
                Assert.AreEqual(8192, file.Columns);
                Assert.AreEqual(8192, file.Rows);
                Assert.AreEqual(-999, file.NoDataValue);

                var list = new StatList();
                var arr  = file.Data;
                foreach (var index in arr.Indices())
                {
                    var value = arr[index];
                    if (value == file.NoDataValue)
                    {
                        foreach (var neighbour in arr.Neighbours(index))
                        {
                            var neighbourValue = arr[neighbour];
                            if (neighbourValue != file.NoDataValue)
                            {
                                list.Add(neighbourValue);
                            }
                        }
                    }
                }

                if (list.Any())
                {
                    file.ReplaceNoDataValue(list.Average());
                }

                var outputPath = Path.Combine(OutputPath, $"{tile}.npy");
                np.save(outputPath, file.Data);
                using (var stream = File.Create(Path.Combine(OutputPath, $"{tile}.png")))
                {
                    new ImageConverter().ToPng(file.Data, stream, HeightToGrayscale.FullRange8(file.Data));
                }
            }
        }
        public void LoadFile()
        {
            foreach (var tile in new[] { "BJ", "UB", "UC" })
            {
                var path = $@"D:\Data\DEM\NZ\{tile}.asc";
                var file = NzReader.Read(path);
                Assert.AreEqual(8192, file.Columns);
                Assert.AreEqual(8192, file.Rows);
                Assert.AreEqual(-999, file.NoDataValue);

                var list = new StatList();
                var arr  = file.Data;
                foreach (var index in arr.Indices())
                {
                    var value = arr[index];
                    if (value == file.NoDataValue)
                    {
                        foreach (var neighbour in arr.Neighbours(index))
                        {
                            var neighbourValue = arr[neighbour];
                            if (neighbourValue != file.NoDataValue)
                            {
                                list.Add(neighbourValue);
                            }
                        }
                    }
                }

                file.ReplaceNoDataValue(list.Average());


                using (var stream = File.Create($@"D:\Data\DEM\NZ\{tile}.png"))
                {
                    new ImageConverter().ToPng(file.Data, stream, HeightToGrayscale.FullRange8(file.Data));
                }
            }
        }