{ "cells": [ { "cell_type": "markdown", "id": "500b07b7-5f43-40c0-ba80-bc6cd759f9f4", "metadata": {}, "source": [ "# Gekachelte Bildverarbeitung, ein schneller Durchlauf\n", "\n", "In diesem Notebook werden wir einen gro\u00dfen Datensatz verarbeiten, der im zarr-Format gespeichert wurde, um Zellen in einzelnen Kacheln mit Hilfe von [dask](https://docs.dask.org/en/stable/) und [zarr](https://zarr.readthedocs.io/en/stable/) zu z\u00e4hlen. Die zugrunde liegenden Prinzipien werden in den n\u00e4chsten Abschnitten erkl\u00e4rt." ] }, { "cell_type": "code", "execution_count": 1, "id": "e6a9300d-1f11-4a3b-94bb-a136ba69f09d", "metadata": {}, "outputs": [], "source": [ "import zarr\n", "import dask.array as da\n", "import numpy as np\n", "from skimage.io import imread\n", "import pyclesperanto_prototype as cle\n", "from pyclesperanto_prototype import imshow\n", "from numcodecs import Blosc" ] }, { "cell_type": "markdown", "id": "8959f8d4-a6d6-4a2d-b4b7-9378d2ceec01", "metadata": {}, "source": [ "Zu Demonstrationszwecken verwenden wir einen Datensatz, der von Theresa Suckert, OncoRay, Universit\u00e4tsklinikum Carl Gustav Carus, TU Dresden, zur Verf\u00fcgung gestellt wurde. Der Datensatz ist unter der [Lizenz: CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/) lizenziert. Wir verwenden hier eine zugeschnittene Version, die als 8-Bit-Bild neu gespeichert wurde, um sie mit dem Notebook bereitstellen zu k\u00f6nnen. Das vollst\u00e4ndige 16-Bit-Bild im CZI-Dateiformat finden Sie [online](https://zenodo.org/record/4276076#.YX1F-55BxaQ). Der biologische Hintergrund wird in [Suckert et al. 2020](https://www.sciencedirect.com/science/article/abs/pii/S0167814020301043) erkl\u00e4rt, wo wir auch einen \u00e4hnlichen Workflow angewendet haben. \n", "\n", "Wenn Sie mit gro\u00dfen Datenmengen arbeiten, werden Sie wahrscheinlich bereits ein Bild im richtigen Format vorliegen haben. Zu Demonstrationszwecken speichern wir hier ein Testbild im zarr-Format, das h\u00e4ufig zur Verarbeitung gro\u00dfer Bilddaten verwendet wird." ] }, { "cell_type": "code", "execution_count": 2, "id": "cc2eeeb8-eb5e-49fc-8569-cdff5e143e5e", "metadata": {}, "outputs": [], "source": [ "# Resave a test image into tiled zarr format\n", "input_filename = '../../data/P1_H_C3H_M004_17-cropped.tif'\n", "zarr_filename = '../../data/P1_H_C3H_M004_17-cropped.zarr'\n", "image = imread(input_filename)[1]\n", "compressor = Blosc(cname='zstd', clevel=3, shuffle=Blosc.BITSHUFFLE)\n", "zarray = zarr.array(image, chunks=(100, 100), compressor=compressor)\n", "zarr.convenience.save(zarr_filename, zarray)" ] }, { "cell_type": "markdown", "id": "d76246fe-7358-4e0c-8112-1f1fd0af4108", "metadata": {}, "source": [ "## Laden des zarr-gest\u00fctzten Bildes\n", "Dask bietet integrierte Unterst\u00fctzung f\u00fcr das zarr-Dateiformat. Wir k\u00f6nnen dask-Arrays direkt aus einer zarr-Datei erstellen." ] }, { "cell_type": "code", "execution_count": 3, "id": "2132d10e-1ec5-43eb-9c3c-a4d9358919cc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Array Chunk
Bytes 9.54 MiB 9.77 kiB
Shape (2000, 5000) (100, 100)
Count 1001 Tasks 1000 Chunks
Type uint8 numpy.ndarray
\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", "\n", " \n", " 5000\n", " 2000\n", "\n", "
" ], "text/plain": [ "dask.array" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zarr_image = da.from_zarr(zarr_filename)\n", "zarr_image" ] }, { "cell_type": "markdown", "id": "c2721aa7-947e-4855-9325-c3e2b4746226", "metadata": {}, "source": [ "Wir k\u00f6nnen die Bildverarbeitung direkt auf diesen gekachelten Datensatz anwenden." ] }, { "cell_type": "markdown", "id": "84fd34c2-68fe-4eeb-8f2b-d213226086e0", "metadata": {}, "source": [ "## Z\u00e4hlen von Zellkernen\n", "Zum Z\u00e4hlen der Zellkerne erstellen wir einen einfachen Bildverarbeitungsworkflow. Er gibt ein Bild zur\u00fcck, das einen einzelnen Pixel enth\u00e4lt, der die Anzahl der Zellkerne im gegebenen Eingabebild angibt. Diese einzelnen Pixel werden zu einer Pixelz\u00e4hlkarte zusammengesetzt; ein Bild mit viel weniger Pixeln als das Originalbild, aber mit dem Vorteil, dass wir es anschauen k\u00f6nnen - es sind keine gro\u00dfen Daten mehr.cle.exclude_labels_with_map_values_within_range" ] }, { "cell_type": "code", "execution_count": 4, "id": "713fcb46-9e8c-4090-a73e-a4d3b60dae24", "metadata": {}, "outputs": [], "source": [ "def count_nuclei(image):\n", " \"\"\"\n", " Label objects in a binary image and produce a pixel-count-map image.\n", " \"\"\"\n", " # Count nuclei including those which touch the image border\n", " labels = cle.voronoi_otsu_labeling(image, spot_sigma=3.5)\n", " label_intensity_map = cle.mean_intensity_map(image, labels)\n", " \n", " high_intensity_labels = cle.exclude_labels_with_map_values_within_range(label_intensity_map, labels, maximum_value_range=20)\n", " nuclei_count = high_intensity_labels.max()\n", " \n", " # Count nuclei including those which touch the image border\n", " labels_without_borders = cle.exclude_labels_on_edges(high_intensity_labels)\n", " nuclei_count_excluding_borders = labels_without_borders.max()\n", " \n", " # Both nuclei-count including and excluding nuclei at image borders \n", " # are no good approximation. We should exclude the nuclei only on \n", " # half of the borders to get a good estimate.\n", " # Alternatively, we just take the average of both counts.\n", " result = np.asarray([[(nuclei_count + nuclei_count_excluding_borders) / 2]])\n", " \n", " return result" ] }, { "cell_type": "markdown", "id": "6b5420e4-f405-4ab9-b385-87be0b0750ce", "metadata": {}, "source": [ "Bevor wir mit der Berechnung beginnen k\u00f6nnen, m\u00fcssen wir die asynchrone Ausf\u00fchrung von Operationen in pyclesperanto deaktivieren. [Siehe auch zugeh\u00f6riges Problem](https://github.com/clEsperanto/pyclesperanto_prototype/issues/163)." ] }, { "cell_type": "code", "execution_count": 5, "id": "00cf9b77-0baa-492a-bc63-edf5e798c636", "metadata": {}, "outputs": [], "source": [ "cle.set_wait_for_kernel_finish(True)" ] }, { "cell_type": "markdown", "id": "251e38da-f93f-4e1b-85bc-d4fb9181c680", "metadata": {}, "source": [ "F\u00fcr die Verarbeitung von Kacheln mit dask richten wir Verarbeitungsbl\u00f6cke ohne \u00dcberlappung ein." ] }, { "cell_type": "code", "execution_count": 6, "id": "eeba9ded-3fb3-4dba-81f3-6212c1251cbc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Array Chunk
Bytes 76.29 MiB 78.12 kiB
Shape (2000, 5000) (100, 100)
Count 2001 Tasks 1000 Chunks
Type float64 numpy.ndarray
\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", "\n", " \n", " 5000\n", " 2000\n", "\n", "
" ], "text/plain": [ "dask.array" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tile_map = da.map_blocks(count_nuclei, zarr_image)\n", "\n", "tile_map" ] }, { "cell_type": "markdown", "id": "08cbf9c0-7fe7-4eb7-b104-907cc62cb03b", "metadata": {}, "source": [ "Da das Ergebnisbild viel kleiner ist als das Original, k\u00f6nnen wir die gesamte Ergebniskarte berechnen." ] }, { "cell_type": "code", "execution_count": 7, "id": "c32f321d-90a0-4f3e-90fe-0f876761ea89", "metadata": {}, "outputs": [], "source": [ "result = tile_map.compute()" ] }, { "cell_type": "code", "execution_count": 8, "id": "d49be008-f92f-4eef-891a-d9a9a883eb21", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(20, 50)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.shape" ] }, { "cell_type": "markdown", "id": "b51ff80c-79f6-497c-a8df-3dfe4fee89ce", "metadata": {}, "source": [ "Da die Ergebniskarte klein ist, k\u00f6nnen wir sie einfach visualisieren." ] }, { "cell_type": "code", "execution_count": 9, "id": "64dbfdf3-6663-4949-9446-eb393ecdc288", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cle.imshow(result, colorbar=True)" ] }, { "cell_type": "markdown", "id": "58e69505-e192-4256-b8d7-a2267ba03ce9", "metadata": {}, "source": [ "Mit einer schnellen visuellen \u00dcberpr\u00fcfung im Originalbild k\u00f6nnen wir sehen, dass in der oberen linken Ecke des Bildes tats\u00e4chlich viel weniger Zellen sind als in der unteren rechten Ecke." ] }, { "cell_type": "code", "execution_count": 10, "id": "47821e67-f35a-431e-a1bc-1800f63b0010", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAACpCAYAAADHoe3cAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA8VklEQVR4nO2ddVgU2xvHv2MHoojYgf0zrt2FHRhgt9jdomJjd2MX1rW724t5LcyrGBioXDEw8Hqviuf3xyzsDhM7Mzu7s7DnfZ7Pw8ypOXN2eXfmnPe8L0MIARUqVKhQcQxJpHcHqFChQoWK7YQqfSpUqFBxIKFKnwoVKlQcSKjSp0KFChUHEqr0qVChQsWBhCp9KlSoUHEgsbnSZximPsMwIQzDPGYYxs/W16dChQoVRxbGlnb6DMMkBvAQQB0ALwFcBdCWEPKXzTpBhQoVKg4stn7SLwfgMSEklBDyHcBWAF427gMVKlSoOKzYWulnAxBmcv7SkEaFChUqVGwgSWx8PUYgjTe/xDBMTwA9DaelrdojKlSoUEmY8o4Q4hY30dZP+i8B5DA5zw7gddxChJCVhJAyhJAyNusZFSpUqJhIx4zsc+fhjTy9GV/kuWAqIcRmgH2zCAWQG0AyALcAFDFTh1AoFIo1WZjsMQFASo8It6ida9PmiebVytLT1vd1TVCn2lLpG5S4J1gLnicAxsgor/sXgkKhJBz2n6ulaXuNXA7rfk8i2IfSV/EjoffAUSgUCnH932rN2np3u6Ki8sFvq6u5jqDSpztyqVChkqBk65vckvmNvp9S1e77B91V1QOAsSk/c84zFLukqH5Jt7Oqrx1XqNKnQoVKvJcXI4vGHrfJ9FSy7MFktazdHZ5M+eZscRvbmwzUoCc23pGrRhiGse8OUqFCxeHFs6gfDt+doXc34sp1IQtIqvSpUKFCJYHJqc+hqOWcR1Dp0+kdKlSoJAh51r+n+UJ2IltHt7BKu5lPdQMA1HLOI15Ib+scar1DoTg4BbMTAOR2dF79+2JDFgaXEkw/3Ge/VtcQtN6h0ztUqFChYgVZfyY7fGq8xP5K+dHk4iM9ukCnd6hQoaK/PNxVXu8u2ER8arwEAFGF3zZc2oooYHq0rOswrQIV9Uv36Rs6vUOhJAxcw/pr3uaLpVFW6euIjM10Hy9Tjm8tJJjeMe1lWfWnpu0ilE535FIoFMv5x6u4Ltf97cNiXa67aIabZm0N/3hU077VbntSKp8qfQqFoh5nj6pk8UybOw2zOourTdK9D1aCKn0KhSIPz1Hjde+Drdn85bXsspdb9Na9vy/Ot+WlRUR1NT2nvneoUKEiTw5Pn6R3F2wu7dNklV22ws7lAIAjXWdaqzuxUjWptgvfVOlToeKAkqFZODI0C8fX+1f17opiCfk+26rt57p6RHbZBmtHKm7/1LKGnPN8xbdIlk93QHijVc4q/Hqv/jfVfAf0nr6h0zsUim2YU3aDYPrp4DQ268OTjcIbkizh4oiyFtXPHXVc0/6MHplV98/aAJ3Tp1AcjbLVZ+veB1M+bkxntkz5wicE09vPm27RtYt2nCaYvmH7Wt3Go/GGPtZsnyp9CsVR6NL5MMn7/Zfu/VDCyEkDdO+Dc4t/BdOvHzine99Mab+uKGm/rmjs+YJ19YTKUaVPoTgC99+11r0PjkD1jLb9Uf0x+rzSOtR6hwqVhC5F+7iiUIZtiusNGnELANA9STatu5Rg5WyEbdVn0mlVsC+X8GfbvNNi+Q3p/SRPn/QpFNvR/ZngNIBdEvHhnmT+ymJLde9jDF+/ddO9DwLQJ30qVBxdVrsf07sLHHletY1oXsb0RSTrHqpdXTRv5a7jartkVspXvsxLS51yjWj5t97f8db7u9X6o1j0fpKnT/oUinIKvesnu2zHBb/r3t/4TtXh5a3Wdv2gs6rqBRUobq4MXcilUOILPiP2SuY/6rKcPOqyXPd+UrRhVpce1miXKn0KJaHh2SiTTa5zKdxXVb3cbodklXs2qJaq9r3Ct/PSVoW+Ey3vn2O1bp/V82WppO+l1Qytr0mVPoViL0Steap7HyhcPPKllsx3ap+SACD+7YVt+S2he3vpncr+Kd0JAJI1aTYl7Wqv9AE8A3AHwM2YCwBID+AEgEeGvy4m5UcBeAwgBEA9qvQpjkSBqo80b3Ora/zagCWH+TtnyS4b9uW2zfsnR+mnDfhNMv/R1aSieS9uarYGYzWlnyFO2iwAfoZjPwAzDceFAdwCkBxAbgBPACSmSp9CodiKtu0EI0wRAMSzbwvNr9eU2SyaN7CR8cfjY/QlTl6BNINkX2Pv5u9ieTZT+iEAshiOswAIMXnKH2VS7hiAilTpUxyNZk4VuefjXujeJ4p6pt1QHnvgDKrILrujJH9vxYigO7HHuQJKiNW1itJ/CuAGgOsAehrSPsYpE2n4GwCgg0n6GgAtRNrtCeCaAd0/VAqFYoZUwhG1UmS/arbuhR4t9e+/TrTP0ZgMTP9Ds/YaT5hoem4VpZ/V8Dcj2KmbahBX+kvAV/rN6ZM+RS+65zcqqoA5H3XvT0Jl2UxXTdrZs0p7t8y2ZEGQcDzb9jkakwoX+B5Ao1qWtPSa1rXeAeAPwBd0eodiZ4Re6EhejuW+Tk/JknA2LDXvsED3PgAgSR4N0b0P9kDGr9VlletUyklWuS/Zx6rti7ZKH0BqAGlMji8CqA9gNrgLubMMx0XAXcgNBV3IpWjA5FojyY3gW7r3I77xpq22u0yP3DqsaXuBb6T3Bvwo9lB2W3dyMRb3p19+T8n8kk6dY4/ztyyg6hrbB3gJj23lf9S0p7nSzwNWid8CcA/AGEO6K4BTYE02TwFIb1JnDFirnRAADWReR9MvEoViDXrVLqPbtUt8X6n7/dsj83vJd1VhS5Lk+6So/LJ/E6m9Ft2cRbFP6o5LoXsf9GD33c+yylXdfVT3vsph75IlpGPej7z0ZGmDLW77eGbhhWIhNvxVSbcxWJH1P7NllCr9iRc2mS2zdskSoXSq9Cn2QZ7gurpdu2UT6U0zcum5SjjebELkxX/uscfHnqaNPU6SJFD3vsmhYB9jRK4Z9+QtjlYpnEwy/2DkNsn8vj12K+rjslXR1rh3qvQptqWKWw7d+yCXf182V1yncGdjuLrLV0N0v4eERrVabha3kTipcFzcGJItNT51X8rJ/wyT1Uyn+JqB3vwflm6nxTdpWYM/GjQkoEqfYi1+hk/VvQ/2QLY0oeSAS3+bXKtiuZlWbf/FuI02uY+qu7UN7Vhw+RaL26ibKzfnPLVTWsFybdyVPShEVvBQ3af1LqrcTVClT9GGv7oH6t4He+WAS3+y98382PNsiVQvwsXyOhH7BLqj20hZ5Xcvb6r7OAgx+0ExznmKTR1071NcxlY/pf6zj5qsqPwpF3YKacvXwZLlbv6vGQnszvVWem/kS7I46LW5a1ClT6HYAlOlb47X2UoQAOTfqQctuiaTQZ3nx9Z+zawyBudOsf7hnT1WadZm7o2tBNOLu36LPZ7Zf5ns9tokm6BZ33Y1GKio/NlB92OPzSl9C6BKn6KOTJO36t6H+IL785rE/XlN0fzWZ23j/94eGFLaXXbZuiv537EAd/lWOEvaa+PKoX7IUfJnlDYb95rMXCiZf3Ki9HpD1P7/WdoHqvQp8ujyopHufbAGo7pVt7iN7W+1deWb8kQewfSbzc/rOlaL3lTU7dpre/GV3egN8qa2bE3JO1k1bzPX0Z2xxz0DzlrSFlX6FGHGb1e120+UFg3G6H5PcjmWuZhmbU3aUM7iNvxX+quq537O9n7lLeF0vwOxx2Pa7ok93hD1OlbpX10i37zWKeUi1X1pu4h9+xq4mf/53bgVzEurubNw7PHmieN0H0sJqNKngLTNspwMWEjNC23NgQYDJPPLF7VsTh8A+fhA2x9vrbmeZKjqulJP+i8vviQAyJfGf5Fli+SvbRzZ9YYAIPnSpdR9bKwEVfqOTH3fc7r3QW8OuLy3yXVe9ttDxv8pPG2jhEc1We+UP0YJ+xVK9TSxVe/jv/zzZJXzYI7o/tmKce7FU875tnG2+Q6o5Unq7pq0E1jqHgFV+o5HaVxUXCdk6DiSd3dn3ftuCWtL7ZFdNkMh8Z2QnS58UXTdlkWSkpZF2DB4SpX+h+uRuo9bDCU6fBXNaxCdnpe2K6eLrHYXBXD9E3X3VG4e2WnfOpuNQ7T3B+J1RTqYuRzepxgWe3xqSpAtP0uq9CkUNSQdlE8y/59ySznn+b61J2+q86MdWZtRXefILvvgPTsVlPtxFqv3q2Ab/gasZX+6q2pr/ZkmJOmlm4J5vbod1/27YmdQpU+xPfO6s0/LmSeadxplT6ze5B97XLiN9C7PuEp/acfOVutX9JB7mrYnR+m3jn5BApepix/bb4CzzT6zxB/kmXjmKBZFchSLkt3ugyD+20XRu8fM1hu19LLqe/nvcgMtxoQqfTkUD5Z2tESJPzgPD9D1+ouCLikqn2tBb93HTG9ur+xDABDXTdI27BSWp2VySuVTpR+fWbxcmw0jweXFNw5pwejefpq2t2TgME3bU0vYC+kdlxGPFvPSQj0Lxh43fSle37PAGgIIK33XtxPN9k1r0uRW5k4gPvBbX/ULuN1rW7xJikOZab0U16lYaQbn/FGo0VFctRGrxepRpU/RhtndH9vsWlPrFLTZteyFxxVfqapX5x9lzsucH3e0uK9N6n+3yZhENHgumvfx+QSbf0bB/0lbLI2ppF2w9x9ZRyiuszPyJwFV+gmPHosL694He2dU0euKyv89vqHF1xzeyegBc3Yn+Xbje0/LsxZq4HLIbJmS3rabS9eDH8dmcc5bl57PKzMn/XLd+2kNLi74GXv89XOwVFmq9O2dNCXEn2ZMif5k+bUSZXIcHzDWZFG2q1ZtP+BQJ93uLUeEdXebprnNdd98cbb0GszQ2ds1vX6RNd9E8x708dJt3M1RyumE3LJU6dsradu90L0P9kQ67z8F09O0/Fv3vslhw4OPmrTTpVlf3e/FlPpzKojm5divfJ7amvhWdrf6Ndq84/rdeVVUeSAerUl697TpOVX69katWbV074MoIZZvSjHHxZcf9L9PgDw/OEGzttr5GRd0h1YtpPu9yaH3jJ+C6UVGvJOs5+KvzDopIbDy1OHY4+39lN9/5xs1yf6R3Di69c4NEiy7LJCdoju4O4wAIEHDXyq9HlX6CZW6bsJfGop+bJsxjmybwZ0emeHBTmeUeM23xEr90DZeLX+auHTosUnbKF/fKzyzev/LZTHar+/NM5YcnqrMj30MDf4tL5p3/Ym4y5KN58qoup4YGe8pX6RVAFX69kTgSvVeARMaF0Kt6xfoRvNeZNlwdcpBLf3zHohF7/G1lKef/rC4jf1P5PvGl0O7MXOtdr+mSj9bHu511Cj9GWXUR+MCQI48ma+2LlX6FNty4EpGTdp5fqe07vdiyrZr3Ndsz4I3Rcv2z3uAlE02xGybJYYeVt2fN+2E3/QCTk1X1M73XKx5bOP/yd8kttndOmO87j/hdR2tqDaI67Ihw3p+nOdsH7R3zhbYb7yscqMOehEA5O9nFu3PoUrf3nhWN365JqCo51CSbZzz79OMpqFjoqoQAKRi8JXYtJHRRXhtZLtqG5t4S3hdTPqtbe9+eUovoZI1cRNN2nlyVZYbCXVKH8BaABEA7pqkpQdwAsAjw18Xk7xRAB4DCAFQzyS9NIA7hrxFABhHV/rWZmTlPrr3QQsa+Vu+iUiKl97Vrdb2Umft5oCtpfTrREjvog6dy5htI4VXBsn8jX3bWtTHkbXkmWsuzBhqtc9SC/b91MZ1skxUK/1qAEqBq/RnAfAzHPsBmGk4LgzgFoDkAHIDeAIgsSHvCoCKABgARwA0SChKn9mejhx25s79jRyRRHb9zV6i26gpMvjo7Rl7HHb5tG79iIt/f22Dc5Seu0PT9jr8jLTq/V8vxp/eexRZSrCsd7WZnPNuBQfzyrSuYtkPhzmiPnGDvPxeroDFbU7dJ3+BPuML/j3HsLKzqgVf9dM7ANzBVfohALIYjrMACDF5yh9lUu4YWEWfBcADk/S2AFYkFKWvBu+oFYrrPLso6VzJoeiYJLPVrzG3lv7O99y7xY+FYP/t+u81Cc/vpNu1Twz0JScG+pJU48UNNBbeMG/i2fCM/B/23A3MRiLTVOl/jJMfafgbAKCDSfoaAC0AlAFw0iS9KoCDjqz09WRei/o2v2aJVfJd2SZE1rR9JLtsqcvmg5JERs7W7V6u/M73W/+zuL6B3OMyLYs6x38pslgv5KQcpS/ELW9XXtqZpdwgPV2rVRGqaxOlvwR8pd8cQFnwlf4Biev1BHDNgO5fIFP8nOaQvM8X8tLznPmTLOk20+b9sTVD+zfVvQ/pFwYqruOxb78ufZ00TfxtofW/yQkAsn6FeeserekYwfWkeWKcPG+eyV2ErWo+RuWyep+92irbzLj9jvH/cWx0Is36kaToJMV1foz0FEz/WJP/ZH/dWTM9Qqd3tORCT+VWCG9ax88djOPTW7aJZ/7Xarrfg55MmpaM7JirndIBQBZ+M+6W9fcK1+W+kpwRf5q+X4fdFzEzVRvdx9+UB7Xlxf2NYWfbT4Lpo4u3IgDI32//MttG/fzKAsLXmuXLS1vvxN01nWvwd/Jg+DpzbWmq9GeDu5A7y3BcBNyF3FAYF3KvAqgA40KuZ3xW+vGJhedvWqXdqEC+D3l7pfbIYM3aSv73a3Iv81LV9Zu/NMYI+LSGVZyZqvnEpm2pqc3+hhi2BixRXfeuE3/n6qg9LHp/pua445xDVrl3Ka+ovsbzn9LxKXrU8Dfbxoew0bHHe6OK8vKT1WDX/64NEI9dLIJq650tAMIB/ADwEkA3AK4AToE12TwFIL1J+TFgrXZCYGKhA3Ze/64hLwB2bLI5u6x6x15Tqv4nnF5wj83vgxK/aN7HfAi+uATM42/Ayhc0QXE7S8N/E82Lq/hT/Wb7wC4Jma3ze6qqNzmD2ehidHOWOS7ft77pZJ/S+kzxuBxS9lrrKKz6zXpTT3MTtbdKu64BQfLLNzrDS2v0907Oeaacyn9sbEXgbjfFddwm9SZuk6R3FQ+/q/yH0ZSer+WtbdV4v4CXdvEZ15FdlWDWe2mKln+SFC2ldyLvbq/ISooqfYrtWNyjsS7X7ZfRQ/d7FyJzc+Eg2cUasg8Bbj1+ELceP2S1FdpMeFFQjLId+R5T/VfwF5jPL1BmYbU5rbpg6aacdr3NOX9xT7wPrcKFvYGaI+X6rKrq2YoYpR/Dve25tWqbKn17xW1nF1nlShyzfLOIvVPNqarufVCK0+/iUyNqWVRIfsSttz/UTQ+oIcW1Ory0PVXekxGedyTrVQqVb7IaXzj691ECgFzbMVpW+ScruOcLXY2O2OokUxYFb0ENrjXaEFfuA0P/OaMIqNJn6VKGHdywDb+R0z41RMul9rqg+5fKkQhorm1UJHN8bzLI4jYORI3SpC9Jg5Vv1ANATjcca7ZM910pyZ73xifHFZEtyYpI8fitYdFnRPP6JhK2ZLEFLjW4QVqGL7OvgDp7s1/UvQ8x/PnqXswxVfoU6/DXlBDd+3Cgk3m3FyeDpN0ibK3zUZe+Z1ryVvfx04odQSl074MUTYaJ73CO2MH9UfvxXbsF696+xljNZ9cZYiH77OKUuehZXLPrZbtUnIAqfRa/pII71+yKyvXS694HW/Nw8yrd+2AJ65t81vX6IXPVBXT3vJ9G876UaaXtdFfh5zd1/3xj6PYxTHGd3r7XOUo/hlWhHSTrDb8UofharXNwXFFQpa8XM4/EH3t2e6NBo8qyyvWpJM/K4361gry0O4OiCQASFHlNVR9bzk9utkxQch+LxqHto1majGfIQOFFTbd8tnXb3MB5i6xyGZaLT8FqxasJH63W9osLdWWVG1yAuwGyqrvwHoPf15p/OLr9PPZ/hir9+MzzxPN174OeNGmrfgONXOIqfa9obrCUos0DZbfVv5ZxYS1rCf5THgDSOoWHxX0+2Ja74DtrVGdemY2vjd4p3bqcJ6cnBlh1HCMSexEAZEfyQYrrLsxzUPV1x46aYfXviCmpOjQhIdttP7U5aqdsR4BU6VPiF/d2WfZ0bCmJrgqbWcrBVOlrzWZv9sfpjKc2T/+W4nPeGBik7/yrsus18dE+PqyWij8o1HwcAUu51tBZUfmioxXtrk7YSj+s40gCgHgkdyYeyeUN5P3m95QMYLwk97/Pde+DPbGizAfN2poz2lsy/8od9m+3DKx/liODpF3/+qYzOkH7csTyuLSv9gtvBNw8w7Zj/vU518roayXzduibq73S/btiKXVc1Vll7b1wiAAgP9bskV0npI475/zh+P4ECV3pxyBX4VO0IfEAbmzX+n7q1i883/BjlMZl9P86KWv3FhuwY3rTwSTtBPPtx1Ck3RTRvLm9Wms6fms6ZuKldRqmPl6uFMEv+I68LCXJXY/Y49Bd8sxueyRJLJrXOJNyM9jnDdg4su8qsvsVvncXnk4DQIK2sAveX96o//G/sOeEZP6vauo9ut5bJ9/DZlRq1pFbjW4bxco4htK3Jv/cUL6aHvsBJS5NKmRSHvavSaT8yDv2TPgmhqzPxfcT//WUtoFhNl0yzlcHFT+kqO6XG7lI6W0DNetL+krs92V+F3br/Ow2rIVP3rDqBADx9Zd+4n111rjjNXU646ao9MXkTTt9WF9b989div2MyHx4HnlPyCvuDLZpfys9Xiua90+DfeSfBvsIYJnSt5Ta1znhGKnS14svUeo9MlqTFH9bz0zy4jL+zk2lFB+SX3GdTZcCyIJzkZy04J/im5FE24lgp2LuJ35PAJC0baX96JxtJs/KCADpXoxVaoED9xAAZG4Z6QAkpgrfHvhcuoRgevoe0kHRYwhcrs5KSikd+jaSzPfx0fatTYjZN+W9YRapL/xA6fuLv1v/9XEvUt1ghXbtUUmpdqnS14O5bcV36nUN2at7/+TQqmq72ON2C0JJqVniPsSZHeZN1I7l0d42XAlHV0lveZ/Uz3JXEE2Ob1NV7zYsWwDe+T6tVcas90DjBjKvYtJB0PWgntd1ktP1Dtk41fKocD+LnhLN65qFGw5xRbdNitsvWp91kZzKlw3GdGjVGrN1grfLmzY92G+B6TlV+npxq5D6J+o2D3/JLuu2je/7XC3l6xUiAMiTFeUU163y2ui5Ml3wYFl1yqRQPvX1rOZJyfxiC4YTAORBHXHfNMOyBVrlM29yfBsZXeOl4nqzpuzkpS31eq24nWpPH1rlvuyFDuHauMCwlPbrbRsbuMM5Z9LhnOx1S6r0HZ0+4C8axlC4Hj/uqdZc/8+dc96qmvwfNCm23Lsrmd9ToYK4GXaGACA7X/EX1bqESTsWA0Aa/SwRe/wl23vBMh5FuKaN686xzvQGlDKuKTz/5iV6jfXvxeeXrcn7A3fI+wN3SIeB1jdnjEuxAZ0tbqNhC20jmDUryJ9+uec3n/1Ma480ft43c0m2k2SJ0X3F+Zp5zF4380JZ7rUTjtLv8Ure3KEcvubObPMvr1I2bLpPNmy6r3s/LKXI5u6q6rV8MYlU2vRF8/6sLNWPc160T1rZdXsNdgxT2ELNpeek627urOn1tvfjK7PMf2nmathiZpznW1a5fhd+2m/ZnHsvDT+UlX2dtdENCADSZou0f30xmr9tQZCQlH4MtTsqD1AcXzj+jm/pooQgp2Ga9MOUD4N62HQM/m7D7qOYWN++/aHrRatsxrWR9IsWk82l+ihuw3dEV9G8843na9pf5w/GB6zI2Ud1Hz9T3tc1vsGFtshucXuB1aSDuK8+wH2LPLHrgeJrTB++iUwfvonc2yG6BhE/lX6G7OZfdSjyyeMWabbMzh1cu9+c+a0TAWrCZttPEdiCP74qtxaSS6qrwkFG0i+K3/6d3NoqX/+wJoPGyQ82vz5RZRK9n2/3X/7IeMXXfV7wtJb3ET+VvulNVH4v7hTqYERn3b8oWuC0JKlF9UdsSC2YXmUq69Dpc9eWpGjGUpr0dXAi7V0COx3Mp7puQJBxwfa4h3X9y8jBxV/ek3Jgl3E271ve7ZUIAPLhk2NMU5kj1aX+ZPGrSorqvKksvq6yba62+0+E+FKdjY88ogzrlO5iKDvzkW3oKjLAJwlBQlD6F453JheOd9b9C6Il11uqd0Ob/7b5+K7fqjfgnB9cLbywaM9cCvPinG+ZJr5Fv0p0cVIlurjN+tYmh3mXyl89XMhXD+503aL85qcQHlZaZlHfsmb0sqg+xUj5lEYnZ1OSFeLl/1PA6PLig+saUnLxJ1JyMdc/f+XbtzjnY/aIB8HpvZW/+zxroq9K+x3/lT4FpPkIy94E5PCpvvEVs0vuOZJlB7fUJqj26FXy7J1v33cX70tkOjI4Mp3NPosFB+SZ4sZV+Erp/li7abDldydr1pY1KTD+jeZtlmx6RlH5k+WlA/OsO3lLVjvl5jUlmRZOV93vDN7KPHkW31kz5pgq/YTImNzZJPPT/XPWbBuLMvA3kOXuulL3e3M0PnXkulfwbPO7ovoNJ+t/D3rzcl1g7PHHIU2sfr36B6Sd6ElxpqWwQzwpRpxVNDVLlX58oUoa+9h4cslDeNFQilvd2DWFYzvlm5je3DFN93sFQCJXVLBa2/XSWuY1c8qmAaJ5y9/2jT1+kF/YWVvAzl8kYCe7L6J7/Waa3lsNkzgDGzY1lSzrur1b7HGKLHwXAh9yzxWtW/YPeXFx04Xbxs2DUh63Fb+3uNRNtJqXdrc+a745/PEKcjgR3//SoJG8z54qfT14e8m8f+8aN0Jlt7ejhHEzyOjxXJ8+f23yV9S3ESXak3ddH+k+Rkookcl6T29TdsWvMJWnItkdyaZKXyv+l7+0qnoZmlnvh9OUifm02auzP9K4ByDZrQaatGlKWl/zLhYAkB3dnnLOy+/nvsHX9Rb3TCoBVfpqqLhRXcSmu5/s82lDiF6btHfl+267dlYhZT8d0X2MrEnuny00a6uYq3gM6Cm/txLNK31K3SYgU5pd13Y/xZcu5t0NHDnE37SXPVp6HSqG9x1sG5d5xs3/CaanussP4QmAnH24m4yoLd/p4IuU7NpPkSITYtLUKX0AawFEALhrkuYP4BWAmwY8TfJGAXgMIARAPZP00gDuGPIWAWDsUemPjRb30xLfKJ/L+vFF4/L8KV+BtXNZTgCQD+OG6zYW1f8aKpg+e15iMnue9FNUipTK7K0P3ua6NH5YkeuErtN0ccudacUWkXQbJsae7xs/T7Tsne+WWfeYo3CK1mTGcvv4fyj7RVhhakGeVOrdl+euuYVsTccqbf9I4Qed9L6s4v4wjD89VfGBcodtpsz/bLQei1H6JqhW+tUAlAJf6fsKlC0M4BaA5AByA3gCILEh7wqAigAYAEcANLC10l/dXP6GCyGiH9jf4uaqLWdklZvarIyu/Xy2o6FmbQXV1XaKp/Kf0q6NlTLrutGfesUtrHnpzjzyp/C0ZM8o+S6fxdiSUtJ9ryjzFvvILjvyp7w1j9+/riCd/dqq6g8Akq+veIAVAGRirUJkbGdxL5txGbZ2veyyQkpfDnUPXSNR+bim1p8vcH32jwneKlRX/fQOAHfIU/qjAIwyOT8GVtFnAfDAJL0tgBVKlf6P+368G7u5jN3a3fXlDYu/3GpoUaw2aXvA+KRwIp9twrwtmXlbUXmtlH6zk/LdO+TtoC5cnBD73nopKv/xv0Cbfg8WjZWvKIQID1N2f/ZE06PceesnvfMqbuPODMtdItszyVtnlFXuZTpN15U0V/rPANwGO/3jYkgPANDBpNwaAC0AlAFw0iS9KoCDEtfrCeCaAckbi1H68Z32HsotWDx+KFvMqjKQPz/YpsJs3e8dAClTl30LK/ujqNmys/5l3RxcXM33Gvpjpry56VoF35kts+uw+p2ytR/Ks+GWy48J4tvze/kI+7df2Uq5TX7y/HtE8yL3iIeRtBYt7/BDMDrXkjaTrF9GvifNzU3GcM6D7hndk9dp6CGrjRHZSnDOL7cvIFl+z2P5YT+LBwq/mSypzI0K51O0AOm1l/cGrKnSzwQgMYBEAKYCWGtIXwK+0m8OoCz4Sv+APc7pK+Hqbukpi7QV+5CrD8Xng3ft09Y0s2kueU8TcplRTd1rfXwi8K30PgctORalygJDNXGV/oJmXI+ZRXZLbz7Si+85LpPvOS6TFet7knxfn/Dyzxbi/xC8P5FLsK2gq//Juma+aO3eSqUYP3OvRfVfj5Q3tfmrQwUCLZW+WB6sPL0jRquhrcnv5YRNxS70sv2XtlL+5Ta/ZtQL8WhWUrwHN1h2RNXHNu+7LWn703yIvOwjInXvpxBpLz4jAMi0JGkF8wOh7dqEXFb8NpKX5pxCnrK1FUNHKgs5ea/DLt36uq64PAeHe/fF7rwlTvcEnfxp+qSfxeR4CICthuMi4C7khsK4kHsVQAUYF3I9lSj9wDTyLCh29eRvWX80+aqsurak53nzr96/T9LGxYEY+1q66j4OWvGgunY+hQILqHd1Ub+/dSIp/boof8HQWuRafIKX1rOs+Bz0zmvi7gPK/JLexGUPjBwl39qsdnAOq/cnzSTFb/KqrXe2AAgH8APASwDdAGwEa355G8B+cH8ExoC12gmBiYUO2Hn9u4a8AGhospkpTL3TMltTvPIC0byy2dSZx937IPzkZ212PbQsnqsanvZVF3t29JMUonmZHpl/u8n/StA6QhaRY8R30yq6h1yDRPMGz1du0jiuvDqLqiw9+fP+G54esPpnX/jf1qTwv9YLZr6tzcHY45oXzhKAVfzpz8m7t3ILxB2omaPLbxN4aQ8e8L14njjC/R5+S8Q3bjGBbs4yR8WmPry0RA3E3QlEtuQrkqg+kh+CLAKnscEwMq1Utlu2zSvpBSQtaDIrueq6l1x/iubV3OemSf/GXGYXt3d1Y2Pu+pbQ1sy2+mjlrp8XzuVPfyghvSt/HrdWWX6YPmuQPId8a5KC3vIsmA4O5O6Z8OrCPa9Ua4vF/S7yzryTspLF2CA0fV88Jn1fiP/wD3BnYxSfGGf8f3+dTnhDlTnFP+Noytjj7XWfkaR50pjtpxhpKnMNOTbUNF47zXAL5/Tji9I/WkDaBjeG2wttZ/HT/9A3crYA3+ohbz75odNiuNxOPw+JoQP5P3DvWorH1a2zSJ59+IbU7AYjKaW/+xN/amNnL/bJts5G1mnVpIVVVd9brm/qzGydixnXbvzfCbst8Nkr/p28sVf9P3wMWfMabdZrVpIXiGToxn8IABLkmkwwf9GVp6J1LwYZP/P3W5XHZYir8K1B1mBtNq0d9i1PDvuW56Wfbj9YVv3004w/zFNGNue2vWEo2V73Wez56gPSkcQ6SMxmJJ/rQXIfYh8sUl3mvPElfKUvl3TB6m2qX1dRH6IxTcGdisrXHiduUbB73F7Nx0XxOK6aaLbM18zCux17dY4fLn6FmN7SlXR0Yy1fhva2/RSXEpo0bBR7XM2da0b6bCbfemzH8iwEAEm5Kpx8zuhPAJCoWQsF25aj9KPGK/fFU/A379jjXZ+6kIHgx81NlIf7xtXhnfm4Bkpx+abcus7zWQnNrp80B/fN+NwH6XCY2VewC/nuJWP3SSR8pX+zaTfZZeUw/qIX53zhIa4tfetUxS2+xuTknpzzch/Y6GBO+Ztb3LYcArqZt9P32VNXMD3/QGNYxUMr2ONraavLvvaFD/dE8xaONT+1dSmFuIuCGLqk4s9bZy/Hfyuo3FjZD7IlJDsqzz9+qjrWC4F4f1oJzdqamPlm7HGOd9I/gvvLDSL7yw2S1W66B4vJ8+3SgdnF2HVCeuwKJt4tmD59g6fZtvM5j1A9Vh7PtduZLoOEr/S1Yl0zvttSNXT4+Uw0zy8v+4o9ObkncSnD9Zs+NpCviBdfMJpk+b77pun9ug3vT9yG9zdbbkIv/sapaSXFt5a77uW+slZyzyJYbmNevtMsrfh7G98B2cvG4tNSAEilh/I8I77rnE51v9JUVf/GuDgvVzFNNbFOe958QezxvcqW254XG648zuucCPu3zElReAXpeYC1zkmX2WjuvG6UsPWV6x9tdO9zDIucjYYBpUMkp4Wo0pdiQqZZisq3X9+ZACBpvbxJ+FVlwS7yV+ugef8/p5+vWVtP+2rvYtYSNr18Tja9fE5yPTcfYtDaXNxQTFW9mR3V+4sx5WPuIZxzX5QTLDf8lPxF/eU7IjTp288Vuc2WybkxPdkzp7DZcnNmsruhH39lP/OcfuqClfi0VW51VfGoBy9t8pgkJPSKcgul8Y0tW8SP4VFn4djXZqBKXwlFNj2TzF/lNkGza11f+0mztp5Ut95TsxzytO7KOe//SjyOb1TTdaqusbm/fMuVrmeEX+NjGPpU3L2BNXj9i/uU3u7oHbLpo/A/9J/n82h+/YmjpKexbjDWnVbs8V2Zn/77z4X3THjn4G9g+jMlu07UdMAt0nSAejcY0f8KO2ac9ngwL21OLWMozNPd3AkA0uYr+6N2JK+wwp9XM5BEexgX3d3GiFu1xeXJU9bNyKh8o+WUTxhK3/ObOkVhLa6fEZ6jW9KHb2O7PpRd/DtXS/weVgUrd1Yll2R9+JYItmb1G/kRtZSQ67CwJYrerJy116L6xX34T50x9K43RnY7FSG9CNhh5GDOebom/ODfbzpK/4Damp3ruP5nYpT+zQvy9u1E3lsUezz9IDtFliPtIJ7Sr1VV/MFFsF9jq3POC7Qz/k/XP1RJUVven7KTngZfPjmqGyOeZckoy1otYSh9Ic5U+VcwvVhr6Q0r7lnTmm178jDbulMuHj2RrK80UHb5TPfFfyTuNOG6WKg1wrwzs9V/cRfOyiaW7xJ4SRP72/mshPLrqxMAJPNmZRuAKg6Wb7qYqLv0tEvyhiV4abdP8UPnxaVQU/MLkLUWGKemzhcyfhecC30izoWUv232PpqPfPAXXtSsvIyvlGpkjpZsb0JQcdG81H8cJbcKH5LdN7W0yORHWmSyfK8NAHLmE/etasYYfmCld92EQ1du+VyDbPlscTyMhKv05VK+z03J/I4dlUWsr9W1hNkyKVdx51xDTue06pf2fN07pLDTjtjzLr7a7JTsP5x9Khrx3vx87JTF2r6t+I3W5p/Qnin1obpF9ScVlZ47njeTr9RHrzX6x9k9QP5u8LROv8yWEVL6MdScwb5F9NrHbjrrnV2bHcvmSLZaudXN6lS9Y4//HNObk1cncI/Nvh89rquKI02VvlqelVDmbfJWC3mmdrnOmTff+rFTXbjGxW5dVdWLof3awNjjJmnkWbPEkO+C5T7B7/feaHEb1iRJA+nNdb3yaucaZGxbYedlvv0tX4/IM9GH/GyrapGQACAF/5hGCv6hX2D7Xq7yN+UNLtvIrOJ3CZtEXMLMW1Y13M0d+1bzxf/nU0WzAU9qfVe+IdNCqNJ/2W6QaN7CJMY4rLmS7NDsmloxp4l1Yu5GtxKPqWqOq43UOyYDQJJ8FrY8kcOZX+q8impBopP8LfgL63LNIx+kEJ5ytBYBN9i3VP8+xh9L50PsbuCTZgK+Dwh3I0UKCtvDB2027n25ElVbdf/siZ2v+5ktUzHLpdjjcn2V+8SqX2+w6v4NiPiNNJ/QmqQvWYQAIC6/izvbKxzO38+SOtFb0rLbNQKq9NXTcz/fp7cUJ0ve1a2vzTqbn7dXy56+trV0ESPr+ZsW1e+RQ5mJYspFyj5/Mb6v186ffsvF7NunS2r+gqtSGCtYCVlCykzmp4+sSdFWUbHH22az3jP/m1GQDLhxiAy4IbyusPcB93++3uo1pN5q7hvy1GT8XcOVb2QmlW/w3cJ45NXk/zjhK/32fTuqGpzQyfUIAPJvM67FTYTPRV2/fLZmak5501hVvyuzQDDH2ofGp8wcQ4zupOvdEfQRzmHk6R6qrjnl3V4y/pYXJ+14+EfF7fiVlo5ettnbRXZbQ2ca3Q2MqRRCBi/dTgYv3U6GD/QnAMj5qpbFeLaEzEsf8NJc2m4lPg/5P4hrTom/Ucvl0IBA2WUbDVf3o+WSnP3ueLxU7ovrapZGqq5pYxK+0hei8lttFgE/dzK6Xc3/Vdh3e/MNxqmSC8+kd31qwc7N7Jc21Id9MvG6zzcT1Yohydj7aTUzV2zamNfsvPXrEUv0/nJbTIY2XE+WRYcp23BnytDOtvGAKZcOx66TDseEHb9VnyC9EW9FqPGHqEvnzbHHAVk8iIvJxqf3v4z7Q5rm+Mei/j4+IuyXyTWXgIsHd2HLqcohvRRdM22FH2Tdwu+CebuXCqdrzZnjyvYwyMAxlX5cbkwtIpjeu4x6i5PaqXOTM/flmzZaC0uVvtN/yp1j2QNf31kW5zeuwjflXKi8mLvmSLJU2Mb9WZmPsccl55QlJ0dbPm8eFCy+C7VlbaOJYFAEuwt9cBi7d6KrZwnBOoXeaWu2PCf1H5zzGx7iQdGDwqQjXv3yEjdr9O2ynzypwDWbnHRtHwFA5kfvEa1X6Kg8D7Fxaejfh6ypJb0fQoqLrbmmwuHJjBvM6i/MpabNhK30N7VRHuYv7Mczyfz/LsqLITovXNvpDjl45WBf9S9GGp9oWuQTd2BmCV+Sl1Fcp8kH7V3oXh+mfNF5binL3/R+/TeQZEp6kwAgNXq1JaNLyAtnJ8UmT75f/je9jea1u3PU5OWnXZZKdvtPHxj9yWdccSP2+ODHOYr6GREwhEQEDBHMy5pc3GrHC72IF5Q9bWvBs4zqg93E8IfbebInzThFdc54KLNwi8vF1q15Sl8tqVwGxRwnPKXvd72vpl+YkYP5jtbWTeG/2p18Jm77Xm2+unUFNfxsqtwZVlwqbDbvaM0c2982Ij22Wd9Puq143GEHmXFrnWSZ1fmEN/5dfvg89jjbce2C2nR/IOw87aOzs2B6nj6qngwJAHJlmLDrcacWN1S3aQ0GVt8smtephXxnc4temV87kiLFRB+L76XzVav4u0p4St9aHBkqvTgXn6jip/51M4ach8Xd2969pZ9ztj+82TescqXNO7BrFMZOUXis8da8Hzc7Cv8AfB3Ct+J6dDerZFvd3sn34d7hG/t06dpD+Ek8hkTl+pFs94z7PY5uMjqua/7Dn1P2yrBTokpfimMTjcfX+ogrweAW5ncXn6+v7ClbKZ0ChH3vpwiznXvtuETl6W6NdqnSV8LpCn/ocl1LSH3bsrltW5BusrLpBQDE97R0VKGERqHP/ry0WxcmcM6LDed6+2x3b7Dq6/09d67qugeOc3eYJ04WKVgu1a9sFo3J3G/C3k3DOx9T1d4HH+HgPnFZE2k7NyyhweoiuElAlX56J8t3iopRa43yD6xydnlfPEspePmrzb64lvKpwH7yqcB+i9r41V+dG165/JnaGNrRrxDrO/6Zv+XuifNN0s7l9vgCxt2ffzkpX+/ijalfCwKAvLqlzkRWCVNyGn+EPO8lEi1XI2sDUiOr/DfN/qk7kv6p5U2/7h9k2811VoIq/dfduZYRvmFG07pib80vxNzurN3mGmvwv/8Jv+a/bnNBVv3DLdk3hY2v5LtwmFwpJWldhO8moFqVKNltaMlHv7Syyh3YKh78xaOntKOrqdP5UzRCSr9HLlbx7tgdINlex0ZnCAAy/K0/J73eyWyk3sls5MlW4c/Vp59xTvtDLfH74fHHbc554/nlyOaxbECRnlHGTUELxvLXzL536EQAkIi/uSat+1bOUPQ53WmsTXyBGD55i1s91Z8iPj3p9MH8rvCPG30V90cu1St8JGUHWW7yvGa14Ppe/Ff6XQrI3+giRFylr4QppeUFXY/hy2/qXQgP/cTfB5C8kNHkb1BWd6t9CeXQKpuwZ0AhKqTlO9PK6HmYZMrItYzKV5Sd0/xcx7xDtxHOC2KP9yxRvkXeEvI1FjcvlGLnVqOiDc7KKprcfR/q8xnGUfoAYpW+EH0vslY6R89v4uUNjrD87XnsSfVRxOLi6u5HXN3lWWy9/VO/zW4xlI5sSEpHNiS7o1hrqxbNpgiWG7baVVG73b/VJkgISt9S/u68R3bZjuU6W3QtIaW/wJ3vxbN3AflxUKd9FrdWsDZd0/GdRaXYpe8awp4lPXlKf1u+SNLqq3YL8Q8v880z8/7LneLYW/81AUDG+UhPS+U8EsY5Dyvvr7g/u++nVHUfFZpPJwGJlFtq1TjRKfY4zeot8r8vOYVDY5pj3GPz0bfUsHrMAzKlz1Aypc9Qcnb8HnJ2vHld0MOtBAm7brl5rhguY+RNCfe6q/yt+diqPQSOqPQPeVhvbne3k3yf90JEDDHWT99E+Nc9hmQTpfPtkfIblbmpNseQLilU1w3rqDy49rVt0k+Ld2sW1+zemkVMFEyvVNZLVXtp23GVRKHrzqRCc/bzSBQu7D8p6yY2CM3VqspccecNUr/zfO4f4nbp1f7eK5qXqpE20y3vai7npV0ob7un/yWz+I77fjsn32uoDBKe0i9RznIbcym69w2yavtiXKkpfl9Li78VTH/eTFsl+/SY5lvCdaPwSWWvxmLseWLeN9H14sbpjk6jhTdTlfPdR0av4G/OMiXclbs5a/UH836gri3l+tR/mPybaNnd++VFUfOd1ZcENRdfTJVL1hLqvKKOnats4dj/k7BDtBpPcmnyHdCKvb2fkL29n5DN806T34PFp9aU0ngU50c74Sl9uVS8fFhWuW9Dlbe9w2QXXXQ0/5fblMtXBpDLV6QDRuRdqMyP/MeRyjaDzb9snJd90WSD7Hr1f7I/gAOCJpgtu3DcMIs+r6BWYy3+zEXHd4S+b03nwoyff1qPzrHHSesIT5VdLreAl3ZoHbs/4e5f0o7GJlVmp5NWwJsAIPkjle+sVsuYCfKt2Y6FHpHMP17WnwAgFZY/IU9uCP+AH2/gR/yGia+RNHcTtmAKSX2VhKRmI75ddZJecLcG029u17zNvFVjXVc4htLPe35+7LFLdu4mjMDZ4sGS861iFVWXfPtkX2tWGzdZ5eYdCVT14XmXlX5CzdmF29etpZ+qus6ZcGWWF2I82GrZ20bU6wWieYH+3qRecXmL6bvqCS/4r9khbwfzygxcSy7fR+K+eZTSKqeXovLTX1i+6zxbZTZYT5f9xk1PE0OENyjJYUpq887o3vt78NJSnpM2btj+zmildKhTJgKAnLg2gJy4pn1krS3zzT+8WIva/T1Iy0PC+4BuFVC3Z2Jz5zsEAPmVKNI03TGUvkUfxvdQMrm39k7H1Cr9TyunE++v4tMAhyvI32qeUMheTPkO4+n9UpCxwewC6J0XfA+OqTKat7EvNt6bc57BifUwembgCU76l7GW2dpPXDmMHK8m/w1MjHZjjH5xjngbf7RSOMl7ULEFvQaa982zfqRxmjHFIuHve6++7HpPwSPCbz6dN5whe70HkVMFk+l+zwCr9OcVbayq7vZA7mzCYx+u0UKLV5xNbIJKnzEoVrsVhmG+AAjRux92IhkAvNO7E3YidCyMQsfCKHQsjJKLEOIWNzGJHj1RKCGEkDJ6d8IehGGYa3QsWKFjYRQ6FkahY2FeEundASpUqFChYjuhSp8KFSpUHEjig9JfqXcH7EjoWBiFjoVR6FgYhY6FGbH7hVwqVKhQoaKdxIcnfSpUqFChopHYrdJnGKY+wzAhDMM8ZhjGT+/+WEMYhlnLMEwEwzB3TdLSMwxzgmGYR4a/LiZ5owzjEcIwTD2T9NIMw9wx5C1iGIax9b1YKgzD5GAY5gzDMPcZhrnHMMwgQ7rDjQfDMCkYhrnCMMwtw1hMNKQ73FgAAMMwiRmGCWYY5qDh3CHHQTPRe/OVyIasxACeAMgDIBmAWwAK690vK9xnNQClANw1SZsFwM9w7AdgpuG4sGEckgPIbRifxIa8KwAqAmAAHAHQQO97UzEWWQCUMhynAfDQcM8ONx6GfjsZjpMC+BNABUccC8M9DAXwO4CDhnOHHAetsNcn/XIAHhNCQgkh3wFsBeClc580F0JIEIAPcZK9AKw3HK8H4G2SvpUQ8h8h5CmAxwDKMQyTBYAzIeQSYb/dG0zqxBshhIQTQm4Yjr8AuA8gGxxwPAgrUYbTpAYIHHAsGIbJDqAhgNUmyQ43DlqKvSr9bADCTM5fGtIcQTIRQsIBVhECyGhIFxuTbIbjuOnxVhiGcQdQEuwTrkOOh2FK4yaACAAnCCGOOhYLAIwA8MskzRHHQTOxV6UvNN/m6GZGYmOSoMaKYRgnALsADCaEfJYqKpCWYMaDEBJNCCkBIDvYp9WiEsUT5FgwDNMIQAQh5LrcKgJp8X4ctBZ7VfovAeQwOc8O4LVOfbG1vDG8jsLwN8KQLjYmLw3HcdPjnTAMkxSswt9MCNltSHbY8QAAQshHAGcB1IfjjUVlAE0YhnkGdoq3JsMwm+B446Cp2KvSvwogP8MwuRmGSQagDYD9OvfJVrIfgI/h2AfAPpP0NgzDJGcYJjeA/ACuGF5vvzAMU8FgkdDJpE68EUPf1wC4TwiZZ5LlcOPBMIwbwzDpDMcpAdQG8AAONhaEkFGEkOyEEHewOuA0IaQDHGwcNBe9V5LFAOAJ1oLjCYAxevfHSve4BUA4gB9gn0a6AXAFcArAI8Pf9CblxxjGIwQm1gcAygC4a8gLgGHTXXwCQBWwr9y3Adw04OmI4wGgGIBgw1jcBTDekO5wY2FyH9VhtN5x2HHQArojlwoVKlQcSOx1eocKFSpUqFhBqNKnQoUKFQcSqvSpUKFCxYGEKn0qVKhQcSChSp8KFSpUHEio0qdChQoVBxKq9KlQoULFgYQqfSpUqFBxIPk/VZipSKJ4fQMAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cle.imshow(cle.voronoi_otsu_labeling(image, spot_sigma=3.5), labels=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "b567b6ad-7307-42d2-924d-54caf1ec4396", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0" } }, "nbformat": 4, "nbformat_minor": 5 }