{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pyclesperanto_prototype as cle\n", "import numpy as np\n", "from skimage.io import imshow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define a label image, just for testing" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\rober\\miniconda3\\lib\\site-packages\\skimage\\io\\_plugins\\matplotlib_plugin.py:150: UserWarning: Float image out of standard range; displaying image with stretched contrast.\n", " lo, hi, cmap = _get_display_range(image)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "label_map = cle.push(np.asarray([\n", " [1, 1, 1, 1, 0, 2, 2, 2, 2],\n", " [1, 1, 1, 1, 0, 2, 2, 2, 2],\n", " [1, 1, 1, 1, 0, 2, 2, 2, 2],\n", " [1, 1, 1, 1, 0, 2, 2, 2, 2],\n", " [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", " [3, 3, 3, 3, 0, 4, 4, 4, 4],\n", " [3, 3, 3, 3, 0, 4, 4, 4, 4],\n", " [3, 3, 3, 3, 0, 4, 4, 4, 4],\n", " [3, 3, 3, 3, 0, 4, 4, 4, 4]\n", "]))\n", "\n", "imshow(cle.pull(label_map))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Determine centroid positions of the labels" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1.5 1.5 6.5 6.5]\n", " [1.5 6.5 1.5 6.5]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\rober\\miniconda3\\lib\\site-packages\\pyopencl\\__init__.py:252: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.\n", " warn(\"Non-empty compiler output encountered. Set the \"\n" ] } ], "source": [ "centroid_pointlist = cle.label_centroids_to_pointlist(label_map)\n", "print(centroid_pointlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Determine distance matrix" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0. 0. 0. ]\n", " [0. 0. 5. 5. 7.0710683]\n", " [0. 5. 0. 7.071068 5. ]\n", " [0. 5. 7.071068 0. 5. ]\n", " [0. 7.071068 5. 5. 0. ]]\n" ] } ], "source": [ "distance_matrix = cle.generate_distance_matrix(centroid_pointlist, centroid_pointlist)\n", "print(distance_matrix)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Draw mesh between centroids with distance == 5" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0. 0. 0.]\n", " [0. 0. 1. 1. 0.]\n", " [0. 1. 0. 0. 1.]\n", " [0. 1. 0. 0. 1.]\n", " [0. 0. 1. 1. 0.]]\n" ] } ], "source": [ "connection_matrix = cle.equal_constant(distance_matrix, constant=5)\n", "print(connection_matrix)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mesh = cle.create_like(label_map)\n", "cle.touch_matrix_to_mesh(centroid_pointlist, connection_matrix, mesh)\n", "imshow(cle.pull(mesh))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Draw mesh between centroids with distance >= 5" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0. 0. 0.]\n", " [0. 0. 1. 1. 1.]\n", " [0. 1. 0. 1. 1.]\n", " [0. 1. 1. 0. 1.]\n", " [0. 1. 1. 1. 0.]]\n" ] } ], "source": [ "connection_matrix = cle.greater_or_equal_constant(distance_matrix, constant=5)\n", "print(connection_matrix)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mesh = cle.create_like(label_map)\n", "cle.touch_matrix_to_mesh(centroid_pointlist, connection_matrix, mesh)\n", "imshow(cle.pull(mesh))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }