Loading dataset.py +3 −3 Original line number Diff line number Diff line Loading @@ -216,7 +216,7 @@ class DataSet(object): Ngrid = len(self.grid) width, height, rotationvalue = self.imagedim_df p0, p1 = self.maxdim[:2], self.maxdim[2:] p0, p1 = self.lastpos[:2], self.maxdim[2:] for i in range(Ngrid): print(f"Processing image {i+1} of {Ngrid}") names = [] Loading Loading @@ -271,7 +271,7 @@ class DataSet(object): print('error in getZval:', self.zvalimg.shape, i, j) j = self.zvalimg.shape[1]-1 zp = self.zvalimg[i,j] z0, z1 = self.zpositions.min(), self.zpositions.max() z0, z1 = self.zpositions[0], self.zpositions[-1] return zp/255.*(z1-z0) + z0 def mapHeight(self, x, y): Loading @@ -296,7 +296,7 @@ class DataSet(object): elif mode == 'bf': p0[0] -= self.signx*self.imagedim_bf[0]/2 p0[1] += self.signy*self.imagedim_bf[1]/2 p0[1] -= self.signy*self.imagedim_bf[1]/2 x, y = self.signx*(p[0] - p0[0])/self.pixelscale_bf, self.signy*(p[1] - p0[1])/self.pixelscale_bf else: Loading zeissimporter.py +16 −9 Original line number Diff line number Diff line Loading @@ -164,7 +164,10 @@ class ZeissImporter(QtWidgets.QDialog): z0, zn = self.zrange.z0, self.zrange.zn if zn<z0: zn, z0 = z0, zn dataset.zpositions = np.linspace(z0, zn, N)-zpc[2] # zeiss z axis has large values at the surface and smaller for large particles # that is why we need to invert the zpositions: zimg black corresponds to zn # zimg white corresponds to z0 dataset.zpositions = np.linspace(z0, zn, N)[::-1]-zpc[2] dataset.heightmap = np.zeros(3) dataset.signy = 1. zimg = cv2imread_fix(self.zmapimgname, cv2.IMREAD_GRAYSCALE) Loading @@ -174,24 +177,28 @@ class ZeissImporter(QtWidgets.QDialog): pshift = self.ramanctrl.getRamanPositionShift() dataset.pshift = pshift pixelscale = self.region.width/zimg.shape[1] pixelscale = self.region.scalex*1.e6 # use input image as single image aquired in one shot dataset.imagedim_df = (self.region.width, self.region.height, 0.0) dataset.imagedim_df = (zimg.shape[1]*pixelscale, zimg.shape[0]*pixelscale, 0.0) dataset.pixelscale_df = pixelscale dataset.imagedim_bf = (self.region.width, self.region.height, 0.0) dataset.imagedim_bf = (zimg.shape[1]*pixelscale, zimg.shape[0]*pixelscale, 0.0) dataset.pixelscale_bf = pixelscale print('scale:', pixelscale) print('dim df:', dataset.imagedim_df) print('dim bf:', dataset.imagedim_bf) dataset.coordinatetransform = T, pc # set image center as reference point in data set (use Zeiss coordinates) # set image center as reference point (assume just one tile) # in data set (use Zeiss coordinates) p0center = np.array([self.region.centerx, self.region.centery]) - zpc[:2] p0 = p0center-.5*np.array((self.region.width, self.region.height)) p1 = p0center+.5*np.array((self.region.width, self.region.height)) dataset.readin = False dataset.lastpos = p0 dataset.maxdim = p0 + p1 dataset.lastpos = p0center dataset.maxdim = p0center zmin, zmax = dataset.zpositions.min(), dataset.zpositions.max() blur = (blur)*(255.) Loading zeissxml.py +14 −4 Original line number Diff line number Diff line Loading @@ -39,13 +39,15 @@ class Region: def __init__(self): self.centerx, self.centery = None, None self.width, self.height = None, None self.scalex, self.scaley = None, None def __repr__(self): return str(self) def __str__(self): return f'Region center: {self.centerx, self.centery} µm\n' + \ f'Region size: {self.width, self.height} µm' f'Region size: {self.width, self.height} µm\n' + \ f'Scale: {self.scalex, self.scaley} µm/pixel' class ZRange: def __init__(self): Loading @@ -65,6 +67,7 @@ class ZeissHandler(handler.ContentHandler): self.zrange = ZRange() self.intag = False self.subtag = '' self.scaledim = '' def characters(self, content): if self.intag: Loading @@ -75,20 +78,27 @@ class ZeissHandler(handler.ContentHandler): self.markers.append(Marker(attrs['Id'], attrs['StageXPosition'], attrs['StageYPosition'], attrs['FocusPosition'])) elif name == 'TileRegion' or name == 'ZStackSetup': elif name == 'TileRegion' or name == 'ZStackSetup' or name == 'Scaling': self.intag = True if self.intag: self.content = '' if name in ['First','Last','Interval']: if self.subtag == 'Items' and name == 'Distance': self.scaledim = attrs['Id'] if name in ['First','Last','Interval','Items']: self.subtag = name def endElement(self, name): if name == 'TileRegion' or name == 'ZStackSetup': if name == 'TileRegion' or name == 'ZStackSetup' or name == 'Scaling': self.intag = False if self.intag and name == 'CenterPosition': self.region.centerx, self.region.centery = map(float, self.content.split(',')) elif self.intag and name == 'ContourSize': self.region.width, self.region.height = map(float, self.content.split(',')) elif self.intag and self.subtag == 'Items' and name == 'Value': if self.scaledim == 'X': self.region.scalex = float(self.content) elif self.scaledim == 'Y': self.region.scaley = float(self.content) elif self.intag and name == 'Value' and \ self.subtag in ['First','Last','Interval']: attrmap = {'First':'z0','Last':'zn','Interval':'dz'} Loading Loading
dataset.py +3 −3 Original line number Diff line number Diff line Loading @@ -216,7 +216,7 @@ class DataSet(object): Ngrid = len(self.grid) width, height, rotationvalue = self.imagedim_df p0, p1 = self.maxdim[:2], self.maxdim[2:] p0, p1 = self.lastpos[:2], self.maxdim[2:] for i in range(Ngrid): print(f"Processing image {i+1} of {Ngrid}") names = [] Loading Loading @@ -271,7 +271,7 @@ class DataSet(object): print('error in getZval:', self.zvalimg.shape, i, j) j = self.zvalimg.shape[1]-1 zp = self.zvalimg[i,j] z0, z1 = self.zpositions.min(), self.zpositions.max() z0, z1 = self.zpositions[0], self.zpositions[-1] return zp/255.*(z1-z0) + z0 def mapHeight(self, x, y): Loading @@ -296,7 +296,7 @@ class DataSet(object): elif mode == 'bf': p0[0] -= self.signx*self.imagedim_bf[0]/2 p0[1] += self.signy*self.imagedim_bf[1]/2 p0[1] -= self.signy*self.imagedim_bf[1]/2 x, y = self.signx*(p[0] - p0[0])/self.pixelscale_bf, self.signy*(p[1] - p0[1])/self.pixelscale_bf else: Loading
zeissimporter.py +16 −9 Original line number Diff line number Diff line Loading @@ -164,7 +164,10 @@ class ZeissImporter(QtWidgets.QDialog): z0, zn = self.zrange.z0, self.zrange.zn if zn<z0: zn, z0 = z0, zn dataset.zpositions = np.linspace(z0, zn, N)-zpc[2] # zeiss z axis has large values at the surface and smaller for large particles # that is why we need to invert the zpositions: zimg black corresponds to zn # zimg white corresponds to z0 dataset.zpositions = np.linspace(z0, zn, N)[::-1]-zpc[2] dataset.heightmap = np.zeros(3) dataset.signy = 1. zimg = cv2imread_fix(self.zmapimgname, cv2.IMREAD_GRAYSCALE) Loading @@ -174,24 +177,28 @@ class ZeissImporter(QtWidgets.QDialog): pshift = self.ramanctrl.getRamanPositionShift() dataset.pshift = pshift pixelscale = self.region.width/zimg.shape[1] pixelscale = self.region.scalex*1.e6 # use input image as single image aquired in one shot dataset.imagedim_df = (self.region.width, self.region.height, 0.0) dataset.imagedim_df = (zimg.shape[1]*pixelscale, zimg.shape[0]*pixelscale, 0.0) dataset.pixelscale_df = pixelscale dataset.imagedim_bf = (self.region.width, self.region.height, 0.0) dataset.imagedim_bf = (zimg.shape[1]*pixelscale, zimg.shape[0]*pixelscale, 0.0) dataset.pixelscale_bf = pixelscale print('scale:', pixelscale) print('dim df:', dataset.imagedim_df) print('dim bf:', dataset.imagedim_bf) dataset.coordinatetransform = T, pc # set image center as reference point in data set (use Zeiss coordinates) # set image center as reference point (assume just one tile) # in data set (use Zeiss coordinates) p0center = np.array([self.region.centerx, self.region.centery]) - zpc[:2] p0 = p0center-.5*np.array((self.region.width, self.region.height)) p1 = p0center+.5*np.array((self.region.width, self.region.height)) dataset.readin = False dataset.lastpos = p0 dataset.maxdim = p0 + p1 dataset.lastpos = p0center dataset.maxdim = p0center zmin, zmax = dataset.zpositions.min(), dataset.zpositions.max() blur = (blur)*(255.) Loading
zeissxml.py +14 −4 Original line number Diff line number Diff line Loading @@ -39,13 +39,15 @@ class Region: def __init__(self): self.centerx, self.centery = None, None self.width, self.height = None, None self.scalex, self.scaley = None, None def __repr__(self): return str(self) def __str__(self): return f'Region center: {self.centerx, self.centery} µm\n' + \ f'Region size: {self.width, self.height} µm' f'Region size: {self.width, self.height} µm\n' + \ f'Scale: {self.scalex, self.scaley} µm/pixel' class ZRange: def __init__(self): Loading @@ -65,6 +67,7 @@ class ZeissHandler(handler.ContentHandler): self.zrange = ZRange() self.intag = False self.subtag = '' self.scaledim = '' def characters(self, content): if self.intag: Loading @@ -75,20 +78,27 @@ class ZeissHandler(handler.ContentHandler): self.markers.append(Marker(attrs['Id'], attrs['StageXPosition'], attrs['StageYPosition'], attrs['FocusPosition'])) elif name == 'TileRegion' or name == 'ZStackSetup': elif name == 'TileRegion' or name == 'ZStackSetup' or name == 'Scaling': self.intag = True if self.intag: self.content = '' if name in ['First','Last','Interval']: if self.subtag == 'Items' and name == 'Distance': self.scaledim = attrs['Id'] if name in ['First','Last','Interval','Items']: self.subtag = name def endElement(self, name): if name == 'TileRegion' or name == 'ZStackSetup': if name == 'TileRegion' or name == 'ZStackSetup' or name == 'Scaling': self.intag = False if self.intag and name == 'CenterPosition': self.region.centerx, self.region.centery = map(float, self.content.split(',')) elif self.intag and name == 'ContourSize': self.region.width, self.region.height = map(float, self.content.split(',')) elif self.intag and self.subtag == 'Items' and name == 'Value': if self.scaledim == 'X': self.region.scalex = float(self.content) elif self.scaledim == 'Y': self.region.scaley = float(self.content) elif self.intag and name == 'Value' and \ self.subtag in ['First','Last','Interval']: attrmap = {'First':'z0','Last':'zn','Interval':'dz'} Loading