Multi samples filtering

This commit is contained in:
Florent Guiotte 2018-03-23 19:02:37 +01:00
parent 94e01e240d
commit 4f8cb4b421

View File

@ -45,16 +45,23 @@ class Triskele:
def _read_outfile(self):
return read(self.outfile)
def _write_infile(self, raster, dtype):
def _write_infile(self, rasters, dtype):
## Scale to new dtype
rep = np.iinfo(dtype)
raster = raster.astype(np.float32)
raster -= raster.min() - rep.min
raster *= (rep.max - rep.min) / (raster.max() - raster.min())
raster = raster.astype(dtype)
## Expand if rasters is 2D
if len(rasters.shape) < 3:
rasters = np.expand_dims(rasters, 2)
write(self.infile, raster)
rasters = rasters.astype(np.float32)
## Channel independant scale
for i in range(rasters.shape[2]):
rasters[:,:,i] -= rasters[:,:,i].min() - rep.min
rasters[:,:,i] *= (rep.max - rep.min) / (rasters[:,:,i].max() - rasters[:,:,i].min())
rasters = rasters.astype(dtype)
write(self.infile, rasters)
def _setup(self, tree, area, standard_deviation, moment_of_inertia):
self.process = [self.triskele_bin,
@ -77,6 +84,8 @@ class Triskele:
def _run(self):
tryskele = subprocess.Popen(self.process, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
tryskele.wait()
if self.verbose:
print('STDOUT:\n' + tryskele.stdout.read().decode() + \
'\nSTDERR:\n' + tryskele.stderr.read().decode())