Skip to content

Commit

Permalink
Crossfade fixes 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Sakharov committed Apr 11, 2024
1 parent 202bd56 commit 69d226f
Show file tree
Hide file tree
Showing 6 changed files with 434 additions and 106 deletions.
4 changes: 4 additions & 0 deletions aeronet_raster/aeronet_raster/dataadapters/abstractadapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ class AbstractArrayLike:
def shape(self):
raise NotImplementedError

@property
def dtype(self):
raise NotImplementedError

@property
def ndim(self):
raise NotImplementedError
Expand Down
4 changes: 4 additions & 0 deletions aeronet_raster/aeronet_raster/dataadapters/numpyadapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ def ndim(self):
def shape(self):
return self._data.shape

@property
def dtype(self):
return self._data.dtype

def __len__(self):
return self.shape[0]

Expand Down
10 changes: 9 additions & 1 deletion aeronet_raster/aeronet_raster/dataadapters/rasterioadapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,26 @@ def fetch(self, item):

@property
def profile(self):
if not self._descriptor:
raise ValueError(f'File {self._path} is not opened')
return self._descriptor.profile

@property
def crs(self):
if not self._descriptor:
raise ValueError(f'File {self._path} is not opened')
return self._descriptor.crs

@property
def res(self):
if not self._descriptor:
raise ValueError(f'File {self._path} is not opened')
return self._descriptor.res

@property
def count(self):
if not self._descriptor:
raise ValueError(f'File {self._path} is not opened')
return self._descriptor.count


Expand All @@ -45,7 +53,7 @@ def __init__(self, path, profile, padding_mode: str = 'constant', **kwargs):
self.write_profile = profile

def open(self):
self._descriptor = rasterio.open(self._path, 'w', **self.write_profile)
self._descriptor = rasterio.open(self._path, 'w+', **self.write_profile)
self._shape = self._descriptor.count, self._descriptor.shape[0], self._descriptor.shape[1]

def write(self, item, data):
Expand Down
6 changes: 5 additions & 1 deletion aeronet_raster/aeronet_raster/dataprocessor.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,13 @@ def process(src: ArrayLike,
dst_coords[i]+dst_sample_size[i],
1) for i in range(len(dst_coords)))] = res
elif mode == 'crossfade':
readen = dst[tuple(slice(dst_coords[i],
dst_coords[i] + dst_sample_size[i],
1) for i in range(len(dst_coords)))]

dst[tuple(slice(dst_coords[i],
dst_coords[i] + dst_sample_size[i],
1) for i in range(len(dst_coords)))] += res
1) for i in range(len(dst_coords)))] = readen + res


def get_blend_mask(shape: Sequence[int], margin: Sequence[int]) -> np.ndarray:
Expand Down
492 changes: 400 additions & 92 deletions aeronet_raster/test/CrossfadeTest.ipynb

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions aeronet_raster/test/unit/crossfade_test.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import numpy as np
from aeronet_raster.aeronet_raster import dataprocessor
from aeronet_raster.aeronet_raster.dataadapters import numpyadapter
from aeronet_raster.aeronet_raster.dataadapters import rasterioadapter

inp = numpyadapter.NumpyReader(np.zeros((1, 30, 30)))
out = numpyadapter.NumpyWriter(np.zeros((1, 30, 30)))
with rasterioadapter.RasterioReader('test_data/input.tif') as src:
profile = src.profile
profile['dtype'] = 'float32'
with rasterioadapter.RasterioWriter('test_data/output.tif', profile) as dst:
dataprocessor.process_image(src=src,
src_sample_size=512,
src_margin=64,
processor=lambda x: x,
dst=dst,
mode='crossfade',
verbose=False)

dataprocessor.process_image(src = inp,
src_sample_size = 10,
src_margin = 4,
processor = lambda x: x+np.random.rand(),
dst = out,
dst_sample_size = 10,
dst_margin = 4,
dst_margin_mode = 'crossfade')
#plt.imshow(out._data[0])

0 comments on commit 69d226f

Please sign in to comment.