Some .mrxs slides shows white zigzag patches on corner of slides. How to remove them?

I open a .mrxs RGB slide image and found that the four corners are occupied by irregular pure grey patches (pixel int == 128). It seems that during the acquisition, the person crop a irregular ROI sorrounding the tissue to scan.

Inside the ROI is tissue with overall low intensity (0~50). Outside the ROI are white patches of intensity 128.

Is there a way to remoce the surrounding patches?

When opened in mrxs Slide viewer, however, the image sh

ows no white patches.

I presume the image is being read by OpenSlide (as I don’t know of any other open source software with .mrxs support). In that case, it must be interpreted as 8-bit RGB. This isn’t ideal for fluorescence images, but is sometimes ok.

The mrxs viewer has a considerable advantage as it ‘knows’ the details of the file format, and so can choose more appropriate ways to display. That’s not the case for open software with this particular proprietary format, e.g.

As such, some things are more of a ‘best guess’.

I don’t know where exactly this background color was chosen whenever black would seem more appopriate. I would guess that probably OpenSlide has applied the color, but it’s possible it arises from QuPath not supporting the alpha channel returned by OpenSlide - I don’t have any files like this to test, so am not able to adapt QuPath to do any better.

In any case, you can run the following script in QuPath v0.2.0-m2 to see what metadata QuPath has access to (via OpenSlide):

// Print what OpenSlide sees as the background color
print 'Background color: ' + getCurrentImageData().getServer().osr.getProperties().get('openslide.background-color')

// Print any other metadata that are available
print getCurrentImageData().getServer().dumpMetadata()
INFO: Background color: 808080
INFO: {
  "openslide.level[1].downsample": "2",
  "mirax.NONHIERLAYER_3_SECTION.VIMSLIDE_HISTOGRAM_DATA_CHANNEL_NUM": "3",
  "openslide.level[2].downsample": "4",
  "mirax.LAYER_0_LEVEL_6_SECTION.DIGITIZER_WIDTH": "306",
  "openslide.level[3].downsample": "8",
  "mirax.LAYER_0_LEVEL_1_SECTION.DIGITIZER_WIDTH": "306",
  "openslide.level[4].downsample": "16",
  "mirax.LAYER_0_LEVEL_1_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.LAYER_0_LEVEL_0_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.LAYER_0_LEVEL_0_SECTION.IMAGE_CONCAT_FACTOR": "0",
  "mirax.GENERAL.FOCUS_MAP_CREATING_STEP": "3",
  "mirax.LAYER_1_LEVEL_2_SECTION.ZSTACK_STEP_COUNT": "0",
  "openslide.level[0].downsample": "1",
  "openslide.level[5].height": "5766",
  "mirax.LAYER_0_LEVEL_2_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_8_IMAGENUMBER_Y": "1",
  "openslide.level[2].width": "20340",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_1_SECTION": "NONHIERLAYER_0_LEVEL_1_SECTION",
  "mirax.HIERARCHICAL.HIER_2_SECTION": "LAYER_2_SECTION",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_8_IMAGENUMBER_X": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.OPTIMAL_HISTOGRAM_MINVAL": "0",
  "mirax.LAYER_0_LEVEL_6_SECTION.MICROMETER_PER_PIXEL_X": "17.5227532814617",
  "mirax.LAYER_0_LEVEL_6_SECTION.MICROMETER_PER_PIXEL_Y": "17.5156140007327",
  "mirax.LAYER_0_LEVEL_5_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.HIERARCHICAL.PAGELENGTH": "2048",
  "mirax.LAYER_1_LEVEL_2_SECTION.USE_BLUE_CHANNEL": "False",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSSED_STITCHING_VERSION": "1",
  "openslide.level-count": "9",
  "mirax.LAYER_0_LEVEL_7_SECTION.MICROMETER_PER_PIXEL_X": "35.0311905880203",
  "mirax.LAYER_0_LEVEL_7_SECTION.MICROMETER_PER_PIXEL_Y": "35.0141229096678",
  "mirax.LAYER_0_LEVEL_2_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.HIERARCHICAL.HIER_1_VAL_2_SECTION": "LAYER_1_LEVEL_2_SECTION",
  "mirax.LAYER_0_LEVEL_7_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.LAYER_1_LEVEL_1_SECTION.FILTER_NAME": "SpGreen",
  "mirax.GENERAL.ADAPTER_SIZE": "0.63",
  "mirax.LAYER_0_LEVEL_3_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.LAYER_1_LEVEL_0_SECTION.DIGITALGAIN": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXTENDED_STEP_COUNT": "1",
  "mirax.HIERARCHICAL.HIER_1_COUNT": "3",
  "mirax.HIERARCHICAL.HIER_3_NAME": "Scan info layer",
  "mirax.LAYER_2_LEVEL_0_SECTION.OFFSET_IN_MICROMETERS": "0",
  "mirax.NONHIERLAYER_0_SECTION.AVEGARE_IMAGE_OVERLAP_X_IN_PIXELS": "126.218086956522",
  "mirax.LAYER_1_LEVEL_2_SECTION.OPTIMAL_HISTOGRAM_MAXVAL": "1",
  "mirax.GENERAL.CURRENT_SLIDE_VERSION": "2.2",
  "mirax.LAYER_1_LEVEL_0_SECTION.USE_RED_CHANNEL": "True",
  "mirax.LAYER_1_LEVEL_2_SECTION.COLOR_G": "0",
  "mirax.LAYER_1_LEVEL_2_SECTION.COLOR_B": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.MODIFIED_COLOR_B": "255",
  "mirax.HIERARCHICAL.NONHIER_1_SECTION": "NONHIERLAYER_1_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.MODIFIED_COLOR_G": "0",
  "openslide.level[8].height": "720",
  "mirax.GENERAL.SLIDE_NAME": "24",
  "mirax.LAYER_1_LEVEL_0_SECTION.FILTER_REAL_POSITION": "0",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_4_SECTION": "NONHIERLAYER_0_LEVEL_4_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.MODIFIED_COLOR_R": "0",
  "mirax.HIERARCHICAL.HIER_COUNT": "4",
  "mirax.LAYER_0_LEVEL_5_SECTION.MICROMETER_PER_PIXEL_Y": "8.7620895465768",
  "mirax.LAYER_0_LEVEL_8_SECTION.MICROMETER_PER_PIXEL_Y": "70.0282458193356",
  "mirax.LAYER_0_LEVEL_8_SECTION.MICROMETER_PER_PIXEL_X": "70.0623811760407",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXTENDED_STEP_SIZE": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.ACTIVE": "ON",
  "mirax.LAYER_1_LEVEL_0_SECTION.CONTRAST": "31",
  "mirax.HIERARCHICAL.HIER_0_NAME": "Slide zoom level",
  "mirax.LAYER_1_LEVEL_2_SECTION.CONTRAST": "28",
  "mirax.LAYER_1_LEVEL_2_SECTION.COLOR_R": "255",
  "mirax.LAYER_0_LEVEL_5_SECTION.MICROMETER_PER_PIXEL_X": "8.76496002586",
  "mirax.LAYER_0_LEVEL_5_SECTION.IMAGE_FORMAT": "JPEG",
  "openslide.quickhash-1": "56c059d0c0d36d992d4c645bec3a985a0a9cf05a6e6bde35f215e89e276600b3",
  "mirax.LAYER_1_LEVEL_2_SECTION.IS_STITCHING_FILTER": "False",
  "mirax.NONHIERLAYER_0_LEVEL_0_SECTION.SCANMAP_IMAGE_TYPE": "PNG",
  "mirax.LAYER_0_LEVEL_5_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.DATAFILE.FILE_1": "Data0001.dat",
  "mirax.DATAFILE.FILE_0": "Data0000.dat",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_0_IMAGENUMBER_Y": "1",
  "mirax.DATAFILE.FILE_3": "Data0003.dat",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_0_IMAGENUMBER_X": "1",
  "mirax.DATAFILE.FILE_2": "Data0002.dat",
  "mirax.DATAFILE.FILE_9": "Data0009.dat",
  "mirax.DATAFILE.FILE_8": "Data0008.dat",
  "mirax.NONHIERLAYER_0_SECTION.SCANNER_HARDWARE_ID": "PMIDI-047509",
  "mirax.DATAFILE.FILE_5": "Data0005.dat",
  "mirax.DATAFILE.FILE_4": "Data0004.dat",
  "mirax.DATAFILE.FILE_7": "Data0007.dat",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXPOSURE_TIME": "25000",
  "mirax.DATAFILE.FILE_6": "Data0006.dat",
  "mirax.HIERARCHICAL.NONHIER_1_COUNT": "1",
  "mirax.HIERARCHICAL.HIER_1_VAL_1": "FilterLevel_1",
  "mirax.LAYER_0_LEVEL_3_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.HIERARCHICAL.HIER_1_VAL_2": "FilterLevel_2",
  "mirax.NONHIERLAYER_0_LEVEL_5_SECTION.STAGEPOSMAP_IMAGE_HEIGHT": "96",
  "mirax.HIERARCHICAL.HIER_1_VAL_0": "FilterLevel_0",
  "mirax.LAYER_0_LEVEL_4_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.LAYER_1_LEVEL_2_SECTION.XDIFF": "0",
  "mirax.GENERAL.VIMSLIDE_SLIDE_BITDEPTH": "8",
  "mirax.NONHIERLAYER_0_LEVEL_0_SECTION.SCANMAP_IMAGE_HEIGHT": "96",
  "mirax.GENERAL.FOCUS_LIMIT_LO": "1690",
  "mirax.LAYER_0_LEVEL_4_SECTION.MICROMETER_PER_PIXEL_X": "4.38427537549163",
  "openslide.level[6].width": "1271",
  "mirax.LAYER_0_LEVEL_4_SECTION.MICROMETER_PER_PIXEL_Y": "4.38319129204062",
  "mirax.LAYER_2_SECTION.ZERO_FOCUS_LEVEL": "0",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXCITATION_BANDWIDTH": "22",
  "mirax.LAYER_1_LEVEL_1_SECTION.EMISSION_BANDWIDTH": "20",
  "mirax.LAYER_1_LEVEL_0_SECTION.ZSTACK_FIRST_LEVEL": "0",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXCITATION_BANDWIDTH": "20",
  "openslide.bounds-height": "51406",
  "mirax.LAYER_0_LEVEL_1_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.LAYER_0_LEVEL_6_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.LAYER_1_LEVEL_0_SECTION.EMISSION_WAVELENGTH": "447",
  "openslide.level[3].width": "10170",
  "mirax.HIERARCHICAL.NONHIER_3_VAL_0_IMAGENUMBER_X": "1",
  "mirax.LAYER_0_SECTION.SHARPENED": "16",
  "mirax.LAYER_1_LEVEL_2_SECTION.GAMMA": "1",
  "mirax.HIERARCHICAL.NONHIER_3_VAL_0_IMAGENUMBER_Y": "1",
  "openslide.level[2].height": "46135",
  "mirax.HIERARCHICAL.HIER_3_COUNT": "2",
  "mirax.LAYER_1_LEVEL_1_SECTION.IS_MASTER_FILTER": "False",
  "openslide.level[6].downsample": "64",
  "mirax.HIERARCHICAL.HIER_3_DEFAULT": "0",
  "openslide.level[8].downsample": "256",
  "mirax.LAYER_1_LEVEL_1_SECTION.GAMMA": "1",
  "mirax.LAYER_0_LEVEL_3_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.NONHIERLAYER_0_LEVEL_3_SECTION.BARCODE_IMAGE_HEIGHT": "1321",
  "openslide.level[1].height": "92271",
  "mirax.HIERARCHICAL.NONHIER_2_VAL_0": "StitchingIntensityLevel",
  "mirax.LAYER_1_LEVEL_2_SECTION.STORING_CHANNEL_NUMBER": "2",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXPOSUREPERCENTAGE": "100",
  "mirax.GENERAL.FLAT_FIELD_CORRECTION": "ENABLED",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_1_IMAGENUMBER_X": "1",
  "mirax.GENERAL.FOCUS_MAP": "AUTO",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_1_IMAGENUMBER_Y": "1",
  "mirax.LAYER_0_LEVEL_5_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.GENERAL.FUCUSING_TYPE": "2",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXCITATION_WAVELENGTH": "543",
  "mirax.NONHIERLAYER_0_LEVEL_2_SECTION.THUMBNAIL_IMAGE_WIDTH": "1454",
  "mirax.HIERARCHICAL.HIER_2_VAL_0_SECTION": "LAYER_2_LEVEL_0_SECTION",
  "mirax.LAYER_1_LEVEL_1_SECTION.BRIGHTNESS": "68",
  "mirax.LAYER_0_LEVEL_3_SECTION.OVERLAP_X": "15.7772608695652",
  "mirax.LAYER_0_LEVEL_3_SECTION.OVERLAP_Y": "15.7772608695652",
  "mirax.HIERARCHICAL.HIER_0_VAL_6_SECTION": "LAYER_0_LEVEL_6_SECTION",
  "mirax.LAYER_0_LEVEL_2_SECTION.DIGITIZER_WIDTH": "306",
  "mirax.LAYER_0_LEVEL_3_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.NONHIERLAYER_0_LEVEL_3_SECTION.BARCODE_IMAGE_TYPE": "JPEG",
  "mirax.HIERARCHICAL.NONHIER_1_VAL_0": "DataLevel_V1.0",
  "mirax.LAYER_1_LEVEL_0_SECTION.ZSTACK_STEP_COUNT": "0",
  "mirax.HIERARCHICAL.HIER_1_VAL_0_SECTION": "LAYER_1_LEVEL_0_SECTION",
  "mirax.LAYER_0_LEVEL_8_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_8_SECTION": "NONHIERLAYER_0_LEVEL_8_SECTION",
  "mirax.LAYER_1_LEVEL_1_SECTION.DATA_IN_THIS_FILTER_LEVEL": "FilterLevel_0",
  "mirax.LAYER_0_LEVEL_2_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.HIERARCHICAL.NONHIER_0_NAME": "Scan data layer",
  "mirax.LAYER_0_LEVEL_5_SECTION.DIGITIZER_WIDTH": "306",
  "openslide.level[5].width": "2542",
  "mirax.LAYER_1_LEVEL_1_SECTION.ACTIVE": "ON",
  "mirax.LAYER_1_LEVEL_2_SECTION.FILTER_NAME": "SpOrange",
  "mirax.LAYER_1_LEVEL_1_SECTION.MODIFY": "ON",
  "mirax.NONHIERLAYER_0_LEVEL_4_SECTION.PREVIEW_IMAGE_TYPE": "JPEG",
  "mirax.LAYER_0_LEVEL_7_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.NONHIERLAYER_0_SECTION.SCANNER_SOFTWARE_VERSION": "1.23.2.80386",
  "mirax.LAYER_0_LEVEL_1_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.LAYER_0_LEVEL_5_SECTION.OVERLAP_Y": "3.94431521739131",
  "mirax.LAYER_1_LEVEL_0_SECTION.FILTER_NAME": "DAPI",
  "mirax.LAYER_1_LEVEL_1_SECTION.STORING_CHANNEL_NUMBER": "1",
  "mirax.GENERAL.COMPENSATION_ALGORITHM": "Intensity statistics",
  "mirax.GENERAL.CameraImageDivisionsPerSide": "8",
  "mirax.LAYER_0_LEVEL_5_SECTION.OVERLAP_X": "3.94431521739131",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXCITATION_BANDWIDTH": "50",
  "mirax.GENERAL.OBJECTIVE_NAME": "Plan-Apochromat",
  "openslide.bounds-x": "22978",
  "mirax.NONHIERLAYER_3_SECTION.VIMSLIDE_HISTOGRAM_DATA_FORMAT_VERSION": "257",
  "openslide.bounds-y": "34093",
  "mirax.LAYER_1_LEVEL_0_SECTION.THRESHOLD": "0",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXTENDED_STEP_COUNT": "1",
  "mirax.NONHIERLAYER_0_LEVEL_5_SECTION.STAGEPOSMAP_IMAGE_TYPE": "PNG",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__LEFT": "22978",
  "mirax.HIERARCHICAL.HIER_3_VAL_0_SECTION": "LAYER_3_LEVEL_0_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXPOSURE_TIME": "13263",
  "mirax.NONHIERLAYER_0_SECTION.OBJECT_GUIDE_HYSTERESIS_Y": "62",
  "mirax.GENERAL.SLIDE_POSITION_Y": "0",
  "mirax.NONHIERLAYER_0_SECTION.OBJECT_GUIDE_HYSTERESIS_X": "62",
  "openslide.background-color": "808080",
  "mirax.GENERAL.SLIDE_POSITION_X": "0",
  "mirax.GENERAL.FOCUS_PLANE_FINDING_STEP": "3",
  "mirax.LAYER_0_LEVEL_6_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.NONHIERLAYER_0_SECTION.SCANNED_FOV_COUNT": "1287",
  "mirax.GENERAL.FOCUS_LIMIT_UP": "1720",
  "mirax.NONHIERLAYER_0_SECTION.SCANNER_CAMERA_TYPE": "Point Grey GS3-U3-51S5M-C",
  "mirax.HIERARCHICAL.NONHIER_3_VAL_0": "default",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXPOSUREPERCENTAGE": "80",
  "mirax.LAYER_0_LEVEL_2_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.HIERARCHICAL.HIER_2_DEFAULT": "0",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_7_SECTION": "NONHIERLAYER_0_LEVEL_7_SECTION",
  "mirax.LAYER_1_LEVEL_1_SECTION.VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE": "256",
  "mirax.LAYER_1_LEVEL_2_SECTION.DIGITALGAIN": "0",
  "mirax.GENERAL.DISK_POSITION": "0",
  "mirax.LAYER_1_LEVEL_1_SECTION.FILTER_REAL_POSITION": "1",
  "mirax.LAYER_0_LEVEL_4_SECTION.OVERLAP_X": "7.88863043478262",
  "mirax.LAYER_0_LEVEL_4_SECTION.OVERLAP_Y": "7.88863043478262",
  "mirax.LAYER_0_LEVEL_8_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.LAYER_0_LEVEL_7_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.LAYER_0_LEVEL_5_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.HIERARCHICAL.NONHIER_0_SECTION": "NONHIERLAYER_0_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.IS_MASTER_FILTER": "True",
  "mirax.GENERAL.SLIDE_CREATIONDATETIME": "05/06/2019 22:00:48",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__BOTTOM": "85499",
  "openslide.level[6].height": "2883",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSSED_STITCHING_ORIG_CAMERA_TILE_WIDTH": "2448",
  "mirax.LAYER_0_LEVEL_8_SECTION.DIGITIZER_WIDTH": "306",
  "mirax.LAYER_1_LEVEL_2_SECTION.FILTER_REAL_POSITION": "2",
  "mirax.LAYER_1_LEVEL_2_SECTION.ACTIVE": "ON",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_2_SECTION": "NONHIERLAYER_0_LEVEL_2_SECTION",
  "mirax.LAYER_1_LEVEL_2_SECTION.USE_GREEN_CHANNEL": "False",
  "openslide.level[5].downsample": "32",
  "mirax.HIERARCHICAL.HIER_0_VAL_5_SECTION": "LAYER_0_LEVEL_5_SECTION",
  "mirax.GENERAL.IMAGENUMBER_Y": "768",
  "mirax.GENERAL.IMAGENUMBER_X": "280",
  "mirax.HIERARCHICAL.NONHIER_2_NAME": "StitchingIntensityLayer",
  "mirax.LAYER_1_LEVEL_0_SECTION.MODIFY": "ON",
  "mirax.LAYER_0_LEVEL_4_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.LAYER_1_LEVEL_1_SECTION.CONTRAST": "74",
  "mirax.LAYER_1_LEVEL_2_SECTION.USE_RED_CHANNEL": "True",
  "mirax.NONHIERLAYER_0_LEVEL_3_SECTION.BARCODE_IMAGE_FLIP": "True",
  "mirax.LAYER_0_LEVEL_4_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_9_SECTION": "NONHIERLAYER_0_LEVEL_9_SECTION",
  "mirax.GENERAL.SCANNING_ALGORITM": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXTENDED_STEP_SIZE": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.YDIFF": "0",
  "mirax.LAYER_0_LEVEL_0_SECTION.MICROMETER_PER_PIXEL_Y": "0.274358240290104",
  "mirax.LAYER_0_LEVEL_0_SECTION.MICROMETER_PER_PIXEL_X": "0.274358240290104",
  "mirax.LAYER_0_LEVEL_7_SECTION.DIGITIZER_HEIGHT": "256",
  "openslide.level[0].width": "81362",
  "mirax.LAYER_0_LEVEL_4_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXCITATIONPERCENTAGE": "100",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXTENDED_STEP_COUNT": "1",
  "mirax.HIERARCHICAL.HIER_2_COUNT": "1",
  "mirax.LAYER_1_LEVEL_0_SECTION.OPTIMAL_HISTOGRAM_MINVAL": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.BRIGHTNESS": "52",
  "mirax.HIERARCHICAL.NONHIER_0_COUNT": "10",
  "mirax.GENERAL.CAMERA_TYPE": "Point Grey GS3-U3-51S5M-C",
  "mirax.LAYER_1_LEVEL_0_SECTION.USE_GREEN_CHANNEL": "False",
  "mirax.GENERAL.SLIDE_VERSION": "01.03",
  "mirax.LAYER_0_LEVEL_8_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSED_STITCHING_ORIG_CAMERA_TILE_OVERLAP_Y": "124",
  "mirax.HIERARCHICAL.PAGEELEMENTCOUNT": "128",
  "mirax.LAYER_1_LEVEL_0_SECTION.COLOR_R": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE": "256",
  "openslide.level[8].width": "317",
  "openslide.level[0].height": "184543",
  "mirax.HIERARCHICAL.NONHIER_2_VAL_0_SECTION": "NONHIERLAYER_2_LEVEL_0_SECTION",
  "openslide.level[4].width": "5085",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSED_STITCHING_ORIG_CAMERA_TILE_OVERLAP_X": "124",
  "openslide.bounds-width": "50729",
  "mirax.HIERARCHICAL.HIER_0_VAL_0_SECTION": "LAYER_0_LEVEL_0_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXPOSUREPERCENTAGE": "100",
  "mirax.HIERARCHICAL.HIER_1_DEFAULT": "0",
  "mirax.NONHIERLAYER_0_LEVEL_3_SECTION.BARCODE_IMAGE_WIDTH": "1681",
  "mirax.NONHIERLAYER_0_SECTION.SCANNING_TIME_IN_SEC": "359",
  "mirax.GENERAL.FOCUS_LIMIT": "ENABLED",
  "mirax.LAYER_2_SECTION.EXTENDED_FOCUS_LEVEL": "-1",
  "mirax.HIERARCHICAL.NONHIER_1_VAL_0_SECTION": "NONHIERLAYER_1_LEVEL_0_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.STORING_CHANNEL_NUMBER": "0",
  "mirax.HIERARCHICAL.HIER_0_VAL_7_SECTION": "LAYER_0_LEVEL_7_SECTION",
  "mirax.HIERARCHICAL.HIER_1_VAL_1_SECTION": "LAYER_1_LEVEL_1_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.XDIFF": "0",
  "mirax.HIERARCHICAL.NONHIER_2_VAL_0_IMAGENUMBER_Y": "1",
  "mirax.NONHIERLAYER_0_LEVEL_4_SECTION.PREVIEW_IMAGE_WIDTH": "636",
  "mirax.HIERARCHICAL.NONHIER_2_VAL_0_IMAGENUMBER_X": "2",
  "mirax.DATAFILE.FILE_COUNT": "21",
  "mirax.LAYER_1_LEVEL_1_SECTION.THRESHOLD": "0",
  "mirax.LAYER_0_LEVEL_3_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.EMISSION_WAVELENGTH": "586",
  "mirax.LAYER_1_LEVEL_2_SECTION.MODIFIED_COLOR_R": "255",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSSED_STITCHING_ORIG_CAMERA_TILE_HEIGHT": "2048",
  "mirax.GENERAL.CONFOCAL": "NO",
  "mirax.LAYER_1_LEVEL_1_SECTION.IS_STITCHING_FILTER": "False",
  "mirax.HIERARCHICAL.HIER_0_VAL_3_SECTION": "LAYER_0_LEVEL_3_SECTION",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_6": "ScanDataLayer_Empty",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_5": "ScanDataLayer_StagePositionMap",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_8": "ProfileXML",
  "mirax.HIERARCHICAL.NONHIER_2_COUNT": "1",
  "mirax.LAYER_0_LEVEL_4_SECTION.DIGITIZER_WIDTH": "306",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_7": "ProfileXMLHeader",
  "mirax.HIERARCHICAL.HIER_2_VAL_0": "ExtFocusLevel",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXCITATION_WAVELENGTH": "494",
  "mirax.NONHIERLAYER_0_LEVEL_0_SECTION.SCANMAP_IMAGE_WIDTH": "35",
  "mirax.GENERAL.MAXIMUM_EXPOSURE_TIME": "2000000",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_9": "ScannedFOVsMap",
  "mirax.LAYER_1_LEVEL_2_SECTION.MODIFIED_COLOR_G": "0",
  "mirax.LAYER_1_LEVEL_2_SECTION.VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE": "256",
  "mirax.HIERARCHICAL.NONHIER_1_VAL_0_IMAGENUMBER_X": "1",
  "mirax.NONHIERLAYER_0_SECTION.CAMERA_ROTATION": "0",
  "mirax.HIERARCHICAL.NONHIER_1_VAL_0_IMAGENUMBER_Y": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.MODIFIED_COLOR_B": "0",
  "mirax.LAYER_1_LEVEL_1_SECTION.EXPOSURE_TIME": "80000",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_0": "ScanDataLayer_ScanMap",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_2": "ScanDataLayer_SlideThumbnail",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_1": "ScanDataLayer_XMLInfoHeader",
  "mirax.NONHIERLAYER_0_LEVEL_2_SECTION.THUMBNAIL_IMAGE_HEIGHT": "3301",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_4": "ScanDataLayer_SlidePreview",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_3": "ScanDataLayer_SlideBarcode",
  "openslide.mpp-x": "0.27435824029010403",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_3_SECTION": "NONHIERLAYER_0_LEVEL_3_SECTION",
  "openslide.level[7].height": "1441",
  "mirax.HIERARCHICAL.HIER_0_SECTION": "LAYER_0_SECTION",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_5_IMAGENUMBER_X": "1",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_5_IMAGENUMBER_Y": "1",
  "mirax.LAYER_1_LEVEL_0_SECTION.GAMMA": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.DATA_IN_THIS_FILTER_LEVEL": "FilterLevel_0",
  "openslide.mpp-y": "0.27435824029010403",
  "mirax.HIERARCHICAL.HIER_0_VAL_4_SECTION": "LAYER_0_LEVEL_4_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.COLOR_G": "0",
  "mirax.DATAFILE.FILE_10": "Data0010.dat",
  "mirax.LAYER_0_LEVEL_2_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.DATAFILE.FILE_13": "Data0013.dat",
  "mirax.HIERARCHICAL.HIER_3_VAL_1_SECTION": "LAYER_3_LEVEL_1_SECTION",
  "mirax.DATAFILE.FILE_14": "Data0014.dat",
  "mirax.DATAFILE.FILE_11": "Data0011.dat",
  "mirax.DATAFILE.FILE_12": "Data0012.dat",
  "mirax.HIERARCHICAL.HIER_2_NAME": "Microscope focus level",
  "mirax.LAYER_1_LEVEL_1_SECTION.EMISSION_WAVELENGTH": "527",
  "mirax.LAYER_1_LEVEL_0_SECTION.COLOR_B": "255",
  "mirax.LAYER_0_LEVEL_1_SECTION.MICROMETER_PER_PIXEL_X": "0.548716480580208",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_4_IMAGENUMBER_X": "1",
  "mirax.LAYER_1_LEVEL_0_SECTION.IS_STITCHING_FILTER": "True",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_4_IMAGENUMBER_Y": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.EMISSION_BANDWIDTH": "20",
  "mirax.LAYER_0_LEVEL_1_SECTION.MICROMETER_PER_PIXEL_Y": "0.548716480580208",
  "mirax.DATAFILE.FILE_17": "Data0017.dat",
  "mirax.LAYER_0_LEVEL_1_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.LAYER_0_LEVEL_1_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.DATAFILE.FILE_18": "Data0018.dat",
  "mirax.DATAFILE.FILE_15": "Data0015.dat",
  "mirax.DATAFILE.FILE_16": "Data0016.dat",
  "mirax.DATAFILE.FILE_19": "Data0019.dat",
  "mirax.DATAFILE.FILE_20": "Data0020.dat",
  "mirax.LAYER_0_LEVEL_0_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.LAYER_1_LEVEL_2_SECTION.MODIFY": "ON",
  "mirax.LAYER_1_LEVEL_1_SECTION.ZSTACK_FIRST_LEVEL": "0",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSSED_STITCHING_TABLE_WIDTH": "35",
  "mirax.LAYER_1_LEVEL_0_SECTION.OPTIMAL_HISTOGRAM_MAXVAL": "1",
  "mirax.GENERAL.IMAGE_OVERLAP_MICROMETERS_Y": "0",
  "mirax.GENERAL.IMAGE_OVERLAP_MICROMETERS_X": "0",
  "mirax.NONHIERLAYER_0_LEVEL_4_SECTION.PREVIEW_IMAGE_HEIGHT": "1442",
  "mirax.HIERARCHICAL.HIER_0_VAL_2": "ZoomLevel_2",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_3_IMAGENUMBER_Y": "1",
  "mirax.HIERARCHICAL.HIER_0_VAL_3": "ZoomLevel_3",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_3_IMAGENUMBER_X": "1",
  "mirax.HIERARCHICAL.HIER_0_VAL_4": "ZoomLevel_4",
  "mirax.HIERARCHICAL.HIER_0_VAL_5": "ZoomLevel_5",
  "mirax.HIERARCHICAL.HIER_0_VAL_6": "ZoomLevel_6",
  "mirax.HIERARCHICAL.HIER_0_VAL_7": "ZoomLevel_7",
  "mirax.LAYER_0_LEVEL_3_SECTION.MICROMETER_PER_PIXEL_X": "2.19303868967255",
  "mirax.HIERARCHICAL.HIER_0_VAL_8": "ZoomLevel_8",
  "mirax.LAYER_0_LEVEL_3_SECTION.MICROMETER_PER_PIXEL_Y": "2.19267365666764",
  "mirax.LAYER_1_LEVEL_1_SECTION.OPTIMAL_HISTOGRAM_MINVAL": "0",
  "mirax.HIERARCHICAL.HIER_1_NAME": "Slide filter level",
  "openslide.vendor": "mirax",
  "mirax.HIERARCHICAL.HIER_0_VAL_0": "ZoomLevel_0",
  "mirax.HIERARCHICAL.HIER_0_VAL_1": "ZoomLevel_1",
  "mirax.LAYER_0_LEVEL_2_SECTION.MICROMETER_PER_PIXEL_Y": "1.09688037658783",
  "mirax.LAYER_0_LEVEL_6_SECTION.OVERLAP_X": "1.97215760869566",
  "mirax.LAYER_0_LEVEL_2_SECTION.MICROMETER_PER_PIXEL_X": "1.09697301440385",
  "mirax.LAYER_0_LEVEL_6_SECTION.OVERLAP_Y": "1.97215760869566",
  "mirax.NONHIERLAYER_0_SECTION.AVEGARE_IMAGE_OVERLAP_Y_IN_PIXELS": "126.218086956522",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_2_IMAGENUMBER_X": "1",
  "mirax.HIERARCHICAL.HIER_3_SECTION": "LAYER_3_SECTION",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_6_SECTION": "NONHIERLAYER_0_LEVEL_6_SECTION",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_2_IMAGENUMBER_Y": "1",
  "mirax.LAYER_0_LEVEL_1_SECTION.OVERLAP_X": "63.109043478261",
  "mirax.LAYER_1_LEVEL_1_SECTION.COLOR_B": "0",
  "mirax.LAYER_0_LEVEL_1_SECTION.OVERLAP_Y": "63.109043478261",
  "mirax.GENERAL.PROJECT_NAME": "ProjectName",
  "mirax.LAYER_0_LEVEL_0_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.LAYER_1_LEVEL_1_SECTION.COLOR_G": "255",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_6_IMAGENUMBER_X": "1",
  "mirax.LAYER_1_LEVEL_1_SECTION.MODIFIED_COLOR_B": "0",
  "mirax.GENERAL.SLIDE_TYPE": "SLIDE_TYPE_FLUORESCENCE",
  "mirax.HIERARCHICAL.HIER_0_VAL_1_SECTION": "LAYER_0_LEVEL_1_SECTION",
  "mirax.HIERARCHICAL.NONHIER_COUNT": "4",
  "mirax.HIERARCHICAL.HIER_0_DEFAULT": "0",
  "mirax.LAYER_1_LEVEL_2_SECTION.ZSTACK_FIRST_LEVEL": "0",
  "mirax.LAYER_1_LEVEL_1_SECTION.XDIFF": "0",
  "mirax.GENERAL.OBJECTIVE_MAGNIFICATION": "20",
  "mirax.LAYER_0_LEVEL_2_SECTION.OVERLAP_X": "31.5545217391305",
  "mirax.LAYER_0_LEVEL_2_SECTION.OVERLAP_Y": "31.5545217391305",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_5_SECTION": "NONHIERLAYER_0_LEVEL_5_SECTION",
  "mirax.LAYER_0_LEVEL_7_SECTION.IMAGE_FILL_COLOR_BGR": "8421504",
  "mirax.LAYER_1_LEVEL_1_SECTION.USE_BLUE_CHANNEL": "False",
  "mirax.HIERARCHICAL.NONHIER_2_SECTION": "NONHIERLAYER_2_SECTION",
  "mirax.LAYER_0_LEVEL_7_SECTION.DIGITIZER_WIDTH": "306",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXTENDED_STEP_SIZE": "0",
  "mirax.GENERAL.OPTOVAR_SIZE": "1",
  "mirax.HIERARCHICAL.NONHIER_3_COUNT": "1",
  "mirax.GENERAL.SLIDE_ID": "5BC7F79080044BA396AADB5F2D280FD1",
  "mirax.LAYER_1_LEVEL_2_SECTION.YDIFF": "0",
  "mirax.GENERAL.VIMSLIDE_CAMERA_REAL_BITDEPTH": "16",
  "mirax.LAYER_0_LEVEL_6_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.GENERAL.SLIDE_CREATION_FINISHED": "True",
  "mirax.LAYER_0_LEVEL_8_SECTION.DIGITIZER_HEIGHT": "256",
  "mirax.LAYER_1_LEVEL_1_SECTION.USE_RED_CHANNEL": "True",
  "mirax.LAYER_1_LEVEL_1_SECTION.OPTIMAL_HISTOGRAM_MAXVAL": "1",
  "mirax.LAYER_1_LEVEL_0_SECTION.EMISSION_BANDWIDTH": "60",
  "mirax.LAYER_0_LEVEL_4_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.LAYER_0_LEVEL_0_SECTION.DIGITIZER_WIDTH": "306",
  "mirax.NONHIERLAYER_0_SECTION.SCANNER_HARDWARE_VERSION": "Pannoramic MIDI",
  "mirax.HIERARCHICAL.HIER_0_COUNT": "9",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_0_SECTION": "NONHIERLAYER_0_LEVEL_0_SECTION",
  "mirax.LAYER_1_LEVEL_1_SECTION.MODIFIED_COLOR_G": "255",
  "openslide.level[1].width": "40681",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSSED_STITCHING_TABLE_HEIGHT": "96",
  "openslide.level[4].height": "11533",
  "mirax.LAYER_0_LEVEL_0_SECTION.OVERLAP_X": "126.218086956522",
  "mirax.LAYER_1_LEVEL_1_SECTION.MODIFIED_COLOR_R": "0",
  "mirax.HIERARCHICAL.HIER_1_SECTION": "LAYER_1_SECTION",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_6_IMAGENUMBER_Y": "1",
  "mirax.HIERARCHICAL.HIER_3_VAL_1": "ScanInfoLayer_XMLInfoLevel",
  "mirax.HIERARCHICAL.HIER_3_VAL_0": "ScanInfoLayer_DefaultLevel",
  "mirax.LAYER_1_LEVEL_2_SECTION.EXCITATIONPERCENTAGE": "100",
  "mirax.LAYER_0_LEVEL_0_SECTION.OVERLAP_Y": "126.218086956522",
  "mirax.HIERARCHICAL.INDEXFILE": "Index.dat",
  "mirax.LAYER_0_LEVEL_6_SECTION.IMAGE_FORMAT": "JPEG",
  "mirax.LAYER_0_LEVEL_7_SECTION.OVERLAP_X": "0.986078804347828",
  "mirax.LAYER_0_LEVEL_7_SECTION.OVERLAP_Y": "0.986078804347828",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_7_IMAGENUMBER_Y": "1",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_7_IMAGENUMBER_X": "1",
  "mirax.LAYER_1_LEVEL_2_SECTION.BRIGHTNESS": "37",
  "mirax.LAYER_0_LEVEL_8_SECTION.IMAGE_CONCAT_FACTOR": "1",
  "mirax.LAYER_2_SECTION.LAST_Z_STACKED_ZOOM_LEVEL": "9",
  "openslide.objective-power": "20",
  "mirax.LAYER_0_LEVEL_8_SECTION.OVERLAP_Y": "0.493039402173914",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__RIGHT": "73707",
  "mirax.HIERARCHICAL.NONHIER_1_NAME": "StitchingLayer",
  "mirax.LAYER_1_LEVEL_0_SECTION.ZDIFF": "2.19",
  "mirax.LAYER_1_LEVEL_2_SECTION.THRESHOLD": "0",
  "openslide.level[3].height": "23067",
  "mirax.LAYER_0_LEVEL_8_SECTION.OVERLAP_X": "0.493039402173914",
  "mirax.LAYER_1_LEVEL_1_SECTION.DIGITALGAIN": "1",
  "mirax.HIERARCHICAL.NONHIER_3_NAME": "VIMSLIDE_HISTOGRAM_DATA",
  "mirax.LAYER_1_LEVEL_1_SECTION.ZSTACK_STEP_COUNT": "0",
  "mirax.HIERARCHICAL.NONHIER_3_VAL_0_SECTION": "NONHIERLAYER_3_LEVEL_0_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.USE_BLUE_CHANNEL": "False",
  "mirax.LAYER_1_LEVEL_1_SECTION.YDIFF": "0",
  "mirax.NONHIERLAYER_3_SECTION.VIMSLIDE_HISTOGRAM_DATA_CHANNEL_SIZE": "256",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_9_IMAGENUMBER_X": "1",
  "mirax.HIERARCHICAL.NONHIER_0_VAL_9_IMAGENUMBER_Y": "1",
  "mirax.HIERARCHICAL.HIER_0_VAL_8_SECTION": "LAYER_0_LEVEL_8_SECTION",
  "mirax.LAYER_0_LEVEL_0_SECTION.IMAGE_COMPRESSION_FACTOR": "80",
  "mirax.GENERAL.SLIDE_CONTENT": "DIGITAL_SLIDE",
  "mirax.LAYER_1_LEVEL_1_SECTION.ZDIFF": "0.339999999999998",
  "mirax.NONHIERLAYER_0_LEVEL_2_SECTION.THUMBNAIL_IMAGE_TYPE": "JPEG",
  "openslide.level[7].width": "635",
  "mirax.HIERARCHICAL.HIER_0_VAL_2_SECTION": "LAYER_0_LEVEL_2_SECTION",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXCITATIONPERCENTAGE": "100",
  "mirax.NONHIERLAYER_2_LEVEL_0_SECTION.COMPRESSED_STITCHING_ORIG_SLIDE_SCANNED_AREA_IN_PIXELS__TOP": "34093",
  "mirax.LAYER_1_LEVEL_1_SECTION.USE_GREEN_CHANNEL": "False",
  "mirax.NONHIERLAYER_0_LEVEL_5_SECTION.STAGEPOSMAP_IMAGE_WIDTH": "35",
  "mirax.NONHIERLAYER_1_SECTION.DATA_FORMAT_VERSION": "258",
  "mirax.LAYER_1_LEVEL_0_SECTION.DATA_IN_THIS_FILTER_LEVEL": "FilterLevel_0",
  "mirax.LAYER_0_LEVEL_3_SECTION.DIGITIZER_WIDTH": "306",
  "openslide.level[7].downsample": "128",
  "mirax.LAYER_1_LEVEL_2_SECTION.ZDIFF": "0.339999999999998",
  "mirax.LAYER_1_LEVEL_1_SECTION.COLOR_R": "0",
  "mirax.LAYER_1_LEVEL_0_SECTION.EXCITATION_WAVELENGTH": "377",
  "mirax.GENERAL.EXTENDED_FOCUS_ALGORITHM": "FL Image",
  "mirax.HIERARCHICAL.NONHIER_3_SECTION": "NONHIERLAYER_3_SECTION",
  "mirax.LAYER_1_LEVEL_2_SECTION.IS_MASTER_FILTER": "False",
  "mirax.LAYER_0_LEVEL_6_SECTION.IMAGE_CONCAT_FACTOR": "1"
}

QuPath is acting as intended then. It uses the background color provided by OpenSlide, which here is specified as #808080 (which corresponds to 128 in the red, green & blue channels).

Hi,Peter,
Is there a way to update background color and update image using code?
Thanks

No, and that could actually be pretty complex to achieve. QuPath can’t/won’t change pixel values, and depends upon the information it receives from the image reader.

Since there is nothing to analyze in these regions, is it really problematic or just that the appearance is not very pleasant?

The goal is to registrate multiple slide of a tumor tissue. All slides are positio ned with varing angles and hand-draw free ROI for each slide.
The imageJ has registration tools that can be used.
The problem is that the sorounding patch(128) is much higher than middle fluorescence(0~54), so I need to remove these patch.
In the next there are 2 possible ways:
(1) find a way to walk along the border of patches, and get a polygon ROI for each patch. Then fill the imageplus in imagej in Groovy of QuPath.
(2) find how the raw file define the background value, and hard-modify the raw file.

At what resolution do you need to do the registration?

Related to what you say, I can think of two (possibly simpler) approaches:

  • In ImageJ, replace every pixel 128 in all three channels with whatever you want (assuming that the number of ‘true’ pixels with this value is low enough for it not to matter… could do something more sophisticated if need be)
  • Request the raw data from OpenSlide directly, possibly through QuPath. I think this may have an alpha channel that enables you to find out what is ‘missing’. But then you’ll lose out on all the work QuPath does to assemble tile requests into images and you’ll need to use OpenSlide’s simpler Java API (or Python if you prefer).

The reason I ask about resolution is because if you can simplify what you need to a single, low-resolution request from OpenSlide then that could help.

I suspect QuPath will eventually need to support returning ‘scanned masks’ to handle cases like this… but currently it doesn’t.

I will do the boundary walking on highest magnification because it is the very early step of the code that has versatile possibilities on downstream usages, including down-sampling to any level, save as many formats,…
So deal with this at highest resolution and early step is better.
Since walking is only along the border, so the time will not be very long.
Previously I have write the code to crop out the large-pure white boundaries. I found that scanning line by line is to slow, so I use (100 lines) jump-jump- jump-retrode-(10 lines) minor jump-minor jump-minor retrode- single line refine at the effective imaging content boundary…
This saves >90% of time used.

Hi ,Peter,

For downsampling of slide image, is there an option to not to interpolate pixels but just sampling the original pixels?
I found that after downsampling, the edge of the background patches was bleeding into the imaging content and making the border not sharp. This cause the walking algorithm produce many many tiny turns (the bleeding is local-specific and varing in depth such as 2,3,4…lines here and there.)

RegionRequest.createInstance(imgpath, downsample, xi, yi, wi, hi, z, t)

I found the code:

// Interpolate if downsampling
			if (request.getDownsample() > 1)
				g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
			for (TileRequest tileRequest : tiles) {
				BufferedImage imgTile = getTile(tileRequest);
				g2d.drawImage(imgTile, tileRequest.getImageX(), tileRequest.getImageY(), tileRequest.getImageWidth(), tileRequest.getImageHeight(), null);
			}

Is there a way to change VALUE_INTERPOLATION_BILINEAR to VALUE_INTERPOLATION_NEAREST_NEIGHBOR)?

Not without recompiling QuPath

1 Like

Recompiling isn’t that bad when using Gradle!

Yes, not like in the pre-gradle days :slight_smile:

But hard to maintain & not great if you want to work across QuPath installations. If I understand the problem correctly, I’d likely try:

  • Create a binary image to identify all pixels with the exist value 128
  • Median filter to remove isolated pixels
  • Maximum filter (dilation) to be ‘safely over’ any interpolated pixels
  • Set all ‘on’ pixels in the binary image to whatever you want the value to be

It doesn’t seem necessary to make sure possible non-128 pixel is retained.

I’m tring to avoid reading whole image matrix by code, because the raw image matrix if fully loaded would be 2GB. So I usually read a few lines or pixels on the raw image, or firstly downsample then read the image matrix.

Now I’m using the downsampled tif to do border walking test in Matlab. Eventually I will try to translate the code into groovy, then it will deal with raw image(highest resolution without interpolation).

By the way, if there is a need to re-compile, does it mean to recompile the jar file “qupath-core-0.2.0-m2.jar” only, and replace this file in the installation folder?

Probably… the file name will need to be identical. The actual reader isn’t in that file but the code that does the interpolation probably is.

It would likely be easier just to rebuild everything though.

Which jdk shoud I use?
I tried C:\Program Files\Java\jdk1.8.0_211\bin\javac.exe
but got some error:

D:\QMDownload\5\qupath\lib\classifiers\pixel\PixelClassifiers.java:4: 错误: 找不到符号
import com.google.gson.RuntimeTypeAdapterFactory;
^
符号: 类 RuntimeTypeAdapterFactory
位置: 程序包 com.google.gson
D:\QMDownload\5\qupath\lib\classifiers\pixel\PixelClassifiers.java:17: 错误: 找不到符号
private final static RuntimeTypeAdapterFactory pixelClassifierTypeAdapter =
^
符号: 类 RuntimeTypeAdapterFactory
位置: 类 PixelClassifierTypeAdapterFactory

See https://github.com/qupath/qupath#building-qupath-with-gradle

I use JDK 12.0.2 from AdoptOpenJDK and a separate JDK containing jpackage from the link above.

If you create a gradle.properties file you can simplify the command line side and store the path for jpackage there: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties

I also change:

    var fp = new FloatProcessor(w, h);
    fp.setInterpolationMethod(ImageProcessor.BILINEAR);

to

    var fp = new FloatProcessor(w, h);
    fp.setInterpolationMethod(ImageProcessor.NONE);

It seems that this deals with the non-RGB images.
The previous image only deals with RGB images.

An alternative is to match your requests to a downsample factor that doesn’t require any resizing.

def server = getCurrentImageData().getServer()
print server.getPreferredDownsamples()