From bgilbert+openslide at cs.cmu.edu Mon Sep 2 04:30:15 2024 From: bgilbert+openslide at cs.cmu.edu (Benjamin Gilbert) Date: Mon, 2 Sep 2024 01:30:15 -0700 Subject: OpenSlide binary build 4.0.0.4 released Message-ID: Hi all, OpenSlide binary build 4.0.0.4 has been released, updating various dependencies. It also fixes a failure to build OpenSlide from source with binutils 2.43 in the latest Windows builder container image. openslide-bin 4.0.0.4 is available for download under the terms of the GNU Lesser General Public License, version 2.1: https://openslide.org/download/#binaries Thanks, --Benjamin Gilbert From m.weihrauch at smartinmedia.com Mon Sep 2 05:51:05 2024 From: m.weihrauch at smartinmedia.com (Martin Weihrauch) Date: Mon, 2 Sep 2024 09:51:05 +0000 Subject: FW: MRXS question In-Reply-To: References: <84bfaffbc1c14e6784247ffde1621cb6@nki.nl> Message-ID: Dear community, I had asked this question in July, but no one replied. Does anyone know about this? If not, of course I will not ask again ? Thank you Martin -----Original Message----- From: Martin Weihrauch Sent: Dienstag, 30. Juli 2024 21:54 To: Martin Weihrauch ; openslide-users at lists.andrew.cmu.edu Subject: RE: MRXS question There is another confusion I have about getting the size of largest zoom level in an mrxs slide. Using the MRXS SDK from 3DHistech, I get WIDTH x HEIGHT 65,280 x 77,312 With ImageScope (Leica), I get for the same image: 76,032 x 78,080 From OpenSlide, I get: 53,587 x 75,273 I know about all this weird overlapping, etc. But how can I ultimately get (calculate?) the "real" resolution? Below I paste all the information, which I could extract from the file (slideini.dat, etc). Thanks Martin --- Group: GENERAL ================================ SLIDE_VERSION = 01.03 SLIDE_NAME = slide-2019-05-07T16-09-13-R1-S10 PROJECT_NAME = Pannoramic Slide Scanner SLIDE_ID = DB2FA4C030AA445EBCEB361FB15F63F1 IMAGENUMBER_X = 272 IMAGENUMBER_Y = 760 SLIDE_CREATION_FINISHED = True CURRENT_SLIDE_VERSION = 2.2 IMAGE_OVERLAP_MICROMETERS_X = 0 IMAGE_OVERLAP_MICROMETERS_Y = 0 SLIDE_POSITION_X = 3600 SLIDE_POSITION_Y = 22642 SLIDE_CONTENT = DIGITAL_SLIDE SLIDE_CREATIONDATETIME = 07/05/2019 16:09:36 VIMSLIDE_CAMERA_REAL_BITDEPTH = 24 CONFOCAL = NO DISK_POSITION = 0 FOCUS_MAP = AUTO FOCUS_LIMIT = DISABLED FLAT_FIELD_CORRECTION = DISABLED EXTENDED_FOCUS_ALGORITHM = FL Image VIMSLIDE_SLIDE_BITDEPTH = 8 CAMERA_TYPE = Point Grey GS3-U3-51S5M-C ADAPTER_SIZE = 0.63 OPTOVAR_SIZE = 1 OBJECTIVE_MAGNIFICATION = 20 OBJECTIVE_NAME = Plan-Apochromat SLIDE_TYPE = SLIDE_TYPE_BRIGHTFIELD CameraImageDivisionsPerSide = 8 Group: HIERARCHICAL ================================ INDEXFILE = Index.dat PAGEELEMENTCOUNT = 128 PAGELENGTH = 2048 HIER_COUNT = 4 NONHIER_COUNT = 4 HIER_0_NAME = Slide zoom level HIER_0_COUNT = 9 HIER_0_DEFAULT = 0 HIER_0_SECTION = LAYER_0_SECTION HIER_0_VAL_0 = ZoomLevel_0 HIER_0_VAL_0_SECTION = LAYER_0_LEVEL_0_SECTION HIER_0_VAL_1 = ZoomLevel_1 HIER_0_VAL_1_SECTION = LAYER_0_LEVEL_1_SECTION HIER_0_VAL_2 = ZoomLevel_2 HIER_0_VAL_2_SECTION = LAYER_0_LEVEL_2_SECTION HIER_0_VAL_3 = ZoomLevel_3 HIER_0_VAL_3_SECTION = LAYER_0_LEVEL_3_SECTION HIER_0_VAL_4 = ZoomLevel_4 HIER_0_VAL_4_SECTION = LAYER_0_LEVEL_4_SECTION HIER_0_VAL_5 = ZoomLevel_5 HIER_0_VAL_5_SECTION = LAYER_0_LEVEL_5_SECTION HIER_0_VAL_6 = ZoomLevel_6 HIER_0_VAL_6_SECTION = LAYER_0_LEVEL_6_SECTION HIER_0_VAL_7 = ZoomLevel_7 HIER_0_VAL_7_SECTION = LAYER_0_LEVEL_7_SECTION HIER_0_VAL_8 = ZoomLevel_8 HIER_0_VAL_8_SECTION = LAYER_0_LEVEL_8_SECTION HIER_1_NAME = Slide filter level HIER_1_COUNT = 3 HIER_1_DEFAULT = 0 HIER_1_SECTION = LAYER_1_SECTION HIER_1_VAL_0 = FilterLevel_0 HIER_1_VAL_0_SECTION = LAYER_1_LEVEL_0_SECTION HIER_1_VAL_1 = FilterLevel_1 HIER_1_VAL_1_SECTION = LAYER_1_LEVEL_1_SECTION HIER_1_VAL_2 = FilterLevel_2 HIER_1_VAL_2_SECTION = LAYER_1_LEVEL_2_SECTION HIER_2_NAME = Microscope focus level HIER_2_COUNT = 1 HIER_2_DEFAULT = 0 HIER_2_SECTION = LAYER_2_SECTION HIER_2_VAL_0 = ExtFocusLevel HIER_2_VAL_0_SECTION = LAYER_2_LEVEL_0_SECTION HIER_3_NAME = Scan info layer HIER_3_COUNT = 2 HIER_3_DEFAULT = 0 HIER_3_SECTION = LAYER_3_SECTION HIER_3_VAL_0 = ScanInfoLayer_DefaultLevel HIER_3_VAL_0_SECTION = LAYER_3_LEVEL_0_SECTION HIER_3_VAL_1 = ScanInfoLayer_XMLInfoLevel HIER_3_VAL_1_SECTION = LAYER_3_LEVEL_1_SECTION NONHIER_0_NAME = Scan data layer NONHIER_0_COUNT = 10 NONHIER_0_SECTION = NONHIERLAYER_0_SECTION NONHIER_0_VAL_0 = ScanDataLayer_ScanMap NONHIER_0_VAL_0_SECTION = NONHIERLAYER_0_LEVEL_0_SECTION NONHIER_0_VAL_0_IMAGENUMBER_X = 1 NONHIER_0_VAL_0_IMAGENUMBER_Y = 1 NONHIER_0_VAL_1 = ScanDataLayer_XMLInfoHeader NONHIER_0_VAL_1_SECTION = NONHIERLAYER_0_LEVEL_1_SECTION NONHIER_0_VAL_1_IMAGENUMBER_X = 1 NONHIER_0_VAL_1_IMAGENUMBER_Y = 1 NONHIER_0_VAL_2 = ScanDataLayer_SlideThumbnail NONHIER_0_VAL_2_SECTION = NONHIERLAYER_0_LEVEL_2_SECTION NONHIER_0_VAL_2_IMAGENUMBER_X = 1 NONHIER_0_VAL_2_IMAGENUMBER_Y = 1 NONHIER_0_VAL_3 = ScanDataLayer_SlideBarcode NONHIER_0_VAL_3_SECTION = NONHIERLAYER_0_LEVEL_3_SECTION NONHIER_0_VAL_3_IMAGENUMBER_X = 1 NONHIER_0_VAL_3_IMAGENUMBER_Y = 1 NONHIER_0_VAL_4 = ScanDataLayer_SlidePreview NONHIER_0_VAL_4_SECTION = NONHIERLAYER_0_LEVEL_4_SECTION NONHIER_0_VAL_4_IMAGENUMBER_X = 1 NONHIER_0_VAL_4_IMAGENUMBER_Y = 1 NONHIER_0_VAL_5 = ScanDataLayer_StagePositionMap NONHIER_0_VAL_5_SECTION = NONHIERLAYER_0_LEVEL_5_SECTION NONHIER_0_VAL_5_IMAGENUMBER_X = 1 NONHIER_0_VAL_5_IMAGENUMBER_Y = 1 NONHIER_0_VAL_6 = ScanDataLayer_Empty NONHIER_0_VAL_6_SECTION = NONHIERLAYER_0_LEVEL_6_SECTION NONHIER_0_VAL_6_IMAGENUMBER_X = 1 NONHIER_0_VAL_6_IMAGENUMBER_Y = 1 NONHIER_0_VAL_7 = ProfileXMLHeader NONHIER_0_VAL_7_SECTION = NONHIERLAYER_0_LEVEL_7_SECTION NONHIER_0_VAL_7_IMAGENUMBER_X = 1 NONHIER_0_VAL_7_IMAGENUMBER_Y = 1 NONHIER_0_VAL_8 = ProfileXML NONHIER_0_VAL_8_SECTION = NONHIERLAYER_0_LEVEL_8_SECTION NONHIER_0_VAL_8_IMAGENUMBER_X = 1 NONHIER_0_VAL_8_IMAGENUMBER_Y = 1 NONHIER_0_VAL_9 = ScannedFOVsMap NONHIER_0_VAL_9_SECTION = NONHIERLAYER_0_LEVEL_9_SECTION NONHIER_0_VAL_9_IMAGENUMBER_X = 1 NONHIER_0_VAL_9_IMAGENUMBER_Y = 1 NONHIER_1_NAME = StitchingLayer NONHIER_1_COUNT = 1 NONHIER_1_SECTION = NONHIERLAYER_1_SECTION NONHIER_1_VAL_0 = DataLevel_V1.0 NONHIER_1_VAL_0_SECTION = NONHIERLAYER_1_LEVEL_0_SECTION NONHIER_1_VAL_0_IMAGENUMBER_X = 1 NONHIER_1_VAL_0_IMAGENUMBER_Y = 1 NONHIER_2_NAME = StitchingIntensityLayer NONHIER_2_COUNT = 1 NONHIER_2_SECTION = NONHIERLAYER_2_SECTION NONHIER_2_VAL_0 = StitchingIntensityLevel NONHIER_2_VAL_0_SECTION = NONHIERLAYER_2_LEVEL_0_SECTION NONHIER_2_VAL_0_IMAGENUMBER_X = 2 NONHIER_2_VAL_0_IMAGENUMBER_Y = 1 NONHIER_3_NAME = VIMSLIDE_HISTOGRAM_DATA NONHIER_3_COUNT = 1 NONHIER_3_SECTION = NONHIERLAYER_3_SECTION NONHIER_3_VAL_0 = default NONHIER_3_VAL_0_SECTION = NONHIERLAYER_3_LEVEL_0_SECTION NONHIER_3_VAL_0_IMAGENUMBER_X = 1 NONHIER_3_VAL_0_IMAGENUMBER_Y = 1 Group: DATAFILE ================================ FILE_COUNT = 21 FILE_0 = Data0000.dat FILE_1 = Data0001.dat FILE_2 = Data0002.dat FILE_3 = Data0003.dat FILE_4 = Data0004.dat FILE_5 = Data0005.dat FILE_6 = Data0006.dat FILE_7 = Data0007.dat FILE_8 = Data0008.dat FILE_9 = Data0009.dat FILE_10 = Data0010.dat FILE_11 = Data0011.dat FILE_12 = Data0012.dat FILE_13 = Data0013.dat FILE_14 = Data0014.dat FILE_15 = Data0015.dat FILE_16 = Data0016.dat FILE_17 = Data0017.dat FILE_18 = Data0018.dat FILE_19 = Data0019.dat FILE_20 = Data0020.dat Group: LAYER_0_LEVEL_0_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 0.275739701721575 MICROMETER_PER_PIXEL_Y = 0.275739701721575 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 110.223652173913 OVERLAP_Y = 110.223652173913 IMAGE_CONCAT_FACTOR = 0 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_1_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 0.55147940344315 MICROMETER_PER_PIXEL_Y = 0.55147940344315 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 55.1118260869565 OVERLAP_Y = 55.1118260869565 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_2_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 1.10249342342348 MICROMETER_PER_PIXEL_Y = 1.10239892931935 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 27.5559130434783 OVERLAP_Y = 27.5559130434783 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_3_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 2.20406733606845 MICROMETER_PER_PIXEL_Y = 2.20369435620695 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 13.7779565217391 OVERLAP_Y = 13.7779565217391 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_4_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 4.40630708728113 MICROMETER_PER_PIXEL_Y = 4.405198161364 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 6.88897826086957 OVERLAP_Y = 6.88897826086957 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_5_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 8.81261417456226 MICROMETER_PER_PIXEL_Y = 8.810396322728 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 3.44448913043478 OVERLAP_Y = 3.44448913043478 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_6_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 17.6179512110778 MICROMETER_PER_PIXEL_Y = 17.6120781090339 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 1.72224456521739 OVERLAP_Y = 1.72224456521739 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_7_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 35.2213661587802 MICROMETER_PER_PIXEL_Y = 35.2067529788296 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 0.861122282608696 OVERLAP_Y = 0.861122282608696 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_0_LEVEL_8_SECTION ================================ IMAGE_FILL_COLOR_BGR = 16777215 MICROMETER_PER_PIXEL_X = 70.4427323175603 MICROMETER_PER_PIXEL_Y = 70.4135059576593 DIGITIZER_WIDTH = 303 DIGITIZER_HEIGHT = 253 OVERLAP_X = 0.430561141304348 OVERLAP_Y = 0.430561141304348 IMAGE_CONCAT_FACTOR = 1 IMAGE_FORMAT = JPEG IMAGE_COMPRESSION_FACTOR = 80 Group: LAYER_1_LEVEL_0_SECTION ================================ ZSTACK_STEP_COUNT = 0 ZSTACK_FIRST_LEVEL = 0 FILTER_NAME = ZDIFF = -1 XDIFF = 0 YDIFF = 0 COLOR_R = 0 COLOR_G = 0 COLOR_B = 0 USE_RED_CHANNEL = False USE_GREEN_CHANNEL = False USE_BLUE_CHANNEL = False FILTER_REAL_POSITION = 0 IS_MASTER_FILTER = True STORING_CHANNEL_NUMBER = 0 IS_STITCHING_FILTER = True ACTIVE = ON MODIFY = ON THRESHOLD = 0 DATA_IN_THIS_FILTER_LEVEL = FilterLevel_0 EXPOSUREPERCENTAGE = 0 DIGITALGAIN = 0 EXTENDED_STEP_SIZE = 0 EXTENDED_STEP_COUNT = 1 VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE = 256 EXCITATION_WAVELENGTH = 0 EXCITATION_BANDWIDTH = 0 EMISSION_WAVELENGTH = 0 EMISSION_BANDWIDTH = 0 Group: LAYER_1_LEVEL_1_SECTION ================================ ZSTACK_STEP_COUNT = 0 ZSTACK_FIRST_LEVEL = 0 FILTER_NAME = ZDIFF = -1 XDIFF = 0 YDIFF = 0 COLOR_R = 0 COLOR_G = 0 COLOR_B = 0 USE_RED_CHANNEL = False USE_GREEN_CHANNEL = False USE_BLUE_CHANNEL = False FILTER_REAL_POSITION = 0 IS_MASTER_FILTER = False STORING_CHANNEL_NUMBER = 1 IS_STITCHING_FILTER = False ACTIVE = ON MODIFY = ON THRESHOLD = 0 DATA_IN_THIS_FILTER_LEVEL = FilterLevel_0 EXPOSUREPERCENTAGE = 0 DIGITALGAIN = 0 EXTENDED_STEP_SIZE = 0 EXTENDED_STEP_COUNT = 1 VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE = 256 EXCITATION_WAVELENGTH = 0 EXCITATION_BANDWIDTH = 0 EMISSION_WAVELENGTH = 0 EMISSION_BANDWIDTH = 0 Group: LAYER_1_LEVEL_2_SECTION ================================ ZSTACK_STEP_COUNT = 0 ZSTACK_FIRST_LEVEL = 0 FILTER_NAME = ZDIFF = -1 XDIFF = 0 YDIFF = 0 COLOR_R = 0 COLOR_G = 0 COLOR_B = 0 USE_RED_CHANNEL = False USE_GREEN_CHANNEL = False USE_BLUE_CHANNEL = False FILTER_REAL_POSITION = 0 IS_MASTER_FILTER = False STORING_CHANNEL_NUMBER = 2 IS_STITCHING_FILTER = False ACTIVE = ON MODIFY = ON THRESHOLD = 0 DATA_IN_THIS_FILTER_LEVEL = FilterLevel_0 EXPOSUREPERCENTAGE = 0 DIGITALGAIN = 0 EXTENDED_STEP_SIZE = 0 EXTENDED_STEP_COUNT = 1 VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE = 256 EXCITATION_WAVELENGTH = 0 EXCITATION_BANDWIDTH = 0 EMISSION_WAVELENGTH = 0 EMISSION_BANDWIDTH = 0 Group: LAYER_2_SECTION ================================ EXTENDED_FOCUS_LEVEL = -1 ZERO_FOCUS_LEVEL = 0 LAST_Z_STACKED_ZOOM_LEVEL = 9 Group: LAYER_2_LEVEL_0_SECTION ================================ OFFSET_IN_MICROMETERS = 0 Group: LAYER_0_SECTION ================================ SHARPENED = 16 Group: NONHIERLAYER_0_LEVEL_0_SECTION ================================ SCANMAP_IMAGE_TYPE = PNG SCANMAP_IMAGE_WIDTH = 34 SCANMAP_IMAGE_HEIGHT = 95 Group: NONHIERLAYER_0_LEVEL_5_SECTION ================================ STAGEPOSMAP_IMAGE_TYPE = PNG STAGEPOSMAP_IMAGE_WIDTH = 34 STAGEPOSMAP_IMAGE_HEIGHT = 95 Group: NONHIERLAYER_0_LEVEL_2_SECTION ================================ THUMBNAIL_IMAGE_TYPE = JPEG THUMBNAIL_IMAGE_WIDTH = 1453 THUMBNAIL_IMAGE_HEIGHT = 3305 Group: NONHIERLAYER_0_LEVEL_3_SECTION ================================ BARCODE_IMAGE_TYPE = JPEG BARCODE_IMAGE_WIDTH = 1776 BARCODE_IMAGE_HEIGHT = 1406 BARCODE_IMAGE_FLIP = True Group: NONHIERLAYER_0_SECTION ================================ SCANNER_HARDWARE_VERSION = Pannoramic SCAN 150 SCANNER_SOFTWARE_VERSION = 2.0.5.93613 SCANNER_CAMERA_TYPE = Point Grey GS3-U3-51S5M-C SCANNER_HARDWARE_ID = SC150-214805 OBJECT_GUIDE_HYSTERESIS_X = 54 OBJECT_GUIDE_HYSTERESIS_Y = 54 AVEGARE_IMAGE_OVERLAP_X_IN_PIXELS = 110.223652173913 AVEGARE_IMAGE_OVERLAP_Y_IN_PIXELS = 110.223652173913 CAMERA_ROTATION = 0 IccProfileColorScheme = 0 IccProfileWhitePoint = 0 IccProfileGamma = 2 SCANNING_TIME_IN_SEC = 93 SCANNED_FOV_COUNT = 440 Group: NONHIERLAYER_1_SECTION ================================ DATA_FORMAT_VERSION = 258 Group: NONHIERLAYER_2_LEVEL_0_SECTION ================================ COMPRESSSED_STITCHING_VERSION = 1 COMPRESSSED_STITCHING_TABLE_WIDTH = 34 COMPRESSSED_STITCHING_TABLE_HEIGHT = 95 COMPRESSSED_STITCHING_ORIG_CAMERA_TILE_WIDTH = 2424 COMPRESSSED_STITCHING_ORIG_CAMERA_TILE_HEIGHT = 2024 COMPRESSED_STITCHING_ORIG_CAMERA_TILE_OVERLAP_X = 108 COMPRESSED_STITCHING_ORIG_CAMERA_TILE_OVERLAP_Y = 108 COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__LEFT = 11636 COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__TOP = 67344 COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__RIGHT = 65223 COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__BOTTOM = 142617 Group: NONHIERLAYER_3_SECTION ================================ VIMSLIDE_HISTOGRAM_DATA_CHANNEL_NUM = 3 VIMSLIDE_HISTOGRAM_DATA_FORMAT_VERSION = 257 VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE = 256 Group: NONHIERLAYER_0_LEVEL_4_SECTION ================================ PREVIEW_IMAGE_TYPE = JPEG PREVIEW_IMAGE_WIDTH = 616 PREVIEW_IMAGE_HEIGHT = 1422 From bgilbert+openslide at cs.cmu.edu Mon Sep 2 17:20:21 2024 From: bgilbert+openslide at cs.cmu.edu (Benjamin Gilbert) Date: Mon, 2 Sep 2024 14:20:21 -0700 Subject: FW: MRXS question In-Reply-To: References: <84bfaffbc1c14e6784247ffde1621cb6@nki.nl> Message-ID: On Mon, Sep 2, 2024 at 2:51?AM Martin Weihrauch wrote: > I had asked this question in July, but no one replied. Does anyone know about this? If not, of course I will not ask again ? Hi Martin, I don't think your question is answerable as written. Your own evidence shows that there is no consensus about how to calculate the size of level 0. :-) Best, --Benjamin Gilbert From angelos at smartcode.gr Tue Sep 3 05:19:01 2024 From: angelos at smartcode.gr (Angelos Pappas) Date: Tue, 3 Sep 2024 09:19:01 +0000 Subject: FW: MRXS question In-Reply-To: References: <84bfaffbc1c14e6784247ffde1621cb6@nki.nl> Message-ID: Hello, Even though I am not an OpenSlide user, here's how I calculate the width and the height of MRXS images so that it matches the Pannoramic Viewer: First of all, calculate the bounds of image (i.e. min & max X & Y) by finding the left/right/top/bottom most tile that actually exists in the file. This means you have to loop through all the camera infos and check each tile if it exists and if it does, compare it against your current min / max x or y. Then for max x & y add the tile width & height: this.level0MaxX += level0.Info.TileWidth; this.level0MaxY += level0.Info.TileHeight; Finally do this rounding - I don't know it's purpose, I don't use it for any other calculation, it just matches what the Pannoramic viewer shows: // this kind of rounding has been observed in the 3DHistech Pannoramic Viewer this.level0MinX = Convert.ToInt32(Math.Floor(this.level0MinX / 256.0) * 256); this.level0MinY = Convert.ToInt32(Math.Floor(this.level0MinY / 256.0) * 256); this.level0MaxX = Convert.ToInt32(Math.Ceiling(this.level0MaxX / 256.0) * 256); this.level0MaxY = Convert.ToInt32(Math.Ceiling(this.level0MaxY / 256.0) * 256); level0.Width = this.level0MaxX - this.level0MinX; level0.Height = this.level0MaxY - this.level0MinY; Cheers Angelos > -----Original Message----- > From: openslide-users bounces+angelos=smartcode.gr at lists.andrew.cmu.edu> On Behalf Of > Benjamin Gilbert > Sent: Tuesday, September 3, 2024 12:20 AM > To: openslide-users at lists.andrew.cmu.edu > Subject: Re: FW: MRXS question > > On Mon, Sep 2, 2024 at 2:51?AM Martin Weihrauch > wrote: > > I had asked this question in July, but no one replied. Does anyone > > know about this? If not, of course I will not ask again ? > > Hi Martin, > > I don't think your question is answerable as written. Your own evidence > shows that there is no consensus about how to calculate the size of level 0. :-) > > Best, > --Benjamin Gilbert > _______________________________________________ > openslide-users mailing list > openslide-users at lists.andrew.cmu.edu > https://lists.andrew.cmu.edu/mailman/listinfo/openslide-users From m.weihrauch at smartinmedia.com Tue Sep 3 11:26:26 2024 From: m.weihrauch at smartinmedia.com (Martin Weihrauch) Date: Tue, 3 Sep 2024 15:26:26 +0000 Subject: AW: FW: MRXS question In-Reply-To: References: <84bfaffbc1c14e6784247ffde1621cb6@nki.nl> Message-ID: Awesome, Angelos. Thank you very much, I'll give it a try! Best Martin -----Urspr?ngliche Nachricht----- Von: openslide-users Im Auftrag von Angelos Pappas Gesendet: Dienstag, 3. September 2024 11:19 An: openslide-users at lists.andrew.cmu.edu Betreff: RE: FW: MRXS question Hello, Even though I am not an OpenSlide user, here's how I calculate the width and the height of MRXS images so that it matches the Pannoramic Viewer: First of all, calculate the bounds of image (i.e. min & max X & Y) by finding the left/right/top/bottom most tile that actually exists in the file. This means you have to loop through all the camera infos and check each tile if it exists and if it does, compare it against your current min / max x or y. Then for max x & y add the tile width & height: this.level0MaxX += level0.Info.TileWidth; this.level0MaxY += level0.Info.TileHeight; Finally do this rounding - I don't know it's purpose, I don't use it for any other calculation, it just matches what the Pannoramic viewer shows: // this kind of rounding has been observed in the 3DHistech Pannoramic Viewer this.level0MinX = Convert.ToInt32(Math.Floor(this.level0MinX / 256.0) * 256); this.level0MinY = Convert.ToInt32(Math.Floor(this.level0MinY / 256.0) * 256); this.level0MaxX = Convert.ToInt32(Math.Ceiling(this.level0MaxX / 256.0) * 256); this.level0MaxY = Convert.ToInt32(Math.Ceiling(this.level0MaxY / 256.0) * 256); level0.Width = this.level0MaxX - this.level0MinX; level0.Height = this.level0MaxY - this.level0MinY; Cheers Angelos > -----Original Message----- > From: openslide-users bounces+angelos=smartcode.gr at lists.andrew.cmu.edu> On Behalf Of > Benjamin Gilbert > Sent: Tuesday, September 3, 2024 12:20 AM > To: openslide-users at lists.andrew.cmu.edu > Subject: Re: FW: MRXS question > > On Mon, Sep 2, 2024 at 2:51?AM Martin Weihrauch > wrote: > > I had asked this question in July, but no one replied. Does anyone > > know about this? If not, of course I will not ask again ? > > Hi Martin, > > I don't think your question is answerable as written. Your own > evidence shows that there is no consensus about how to calculate the > size of level 0. :-) > > Best, > --Benjamin Gilbert > _______________________________________________ > openslide-users mailing list > openslide-users at lists.andrew.cmu.edu > https://lists.andrew.cmu.edu/mailman/listinfo/openslide-users _______________________________________________ openslide-users mailing list openslide-users at lists.andrew.cmu.edu https://lists.andrew.cmu.edu/mailman/listinfo/openslide-users From bgilbert+openslide at cs.cmu.edu Tue Sep 10 07:37:34 2024 From: bgilbert+openslide at cs.cmu.edu (Benjamin Gilbert) Date: Tue, 10 Sep 2024 04:37:34 -0700 Subject: OpenSlide binary build 4.0.0.5 released Message-ID: Hi all, OpenSlide binary build 4.0.0.5 has been released, adding an aarch64 (ARM64) build for Linux. openslide-bin 4.0.0.5 is available for download under the terms of the GNU Lesser General Public License, version 2.1: https://openslide.org/download/#binaries Thanks, --Benjamin Gilbert From bgilbert+openslide at cs.cmu.edu Mon Sep 30 12:59:01 2024 From: bgilbert+openslide at cs.cmu.edu (Benjamin Gilbert) Date: Mon, 30 Sep 2024 09:59:01 -0700 Subject: OpenSlide binary build 4.0.0.6 released Message-ID: Hi all, OpenSlide binary build 4.0.0.6 has been released, switching from zlib to zlib-ng and updating various dependencies. For the full changelog, see below. openslide-bin 4.0.0.6 is available for download under the terms of the GNU Lesser General Public License, version 2.1: https://openslide.org/download/#binaries Thanks, --Benjamin Gilbert === * Switch from zlib to zlib-ng * Export type hints from Python package * Reduce size of source archive * Update various dependencies