{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Connected Components Analysis" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Added new repo: scijava.public\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6993914a-6f53-4db4-a11d-c1e38cd919e8", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "net.imagej.ImageJ@16aac200" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "//load ImageJ\n", "%classpath config resolver scijava.public https://maven.scijava.org/content/groups/public\n", "%classpath add mvn net.imagej imagej 2.0.0-rc-67\n", "\n", "//create ImageJ object\n", "ij = new net.imagej.ImageJ()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This `Op` wraps the Connected Components Analysis (CCA), an algorithm that links all connected pieces of a binary `RandomAccessibleInterval`, given as an `ImgLabeling`. The `Op` is called as follows:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Available operations:\n", "\t(ImgLabeling out?) =\n", "\tnet.imagej.ops.labeling.cca.DefaultCCA(\n", "\t\tImgLabeling out?,\n", "\t\tRandomAccessibleInterval in,\n", "\t\tStructuringElement se,\n", "\t\tIterator labelGenerator?)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ij.op().help('cca')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "CCA can be extremely useful when quanitifying small regions within an image:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Verifying GIF format\n", "[INFO] Reading dimensions\n", "[INFO] Reading data blocks\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAD+CAYAAADVndu7AABqPklEQVR42sV9LbQlyVZ0OSQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUSORM636q61e8XERMSOzHObT9R6825331OnKjNy/8SOeP7rv/7r1//+7//+9X/+53++rl9++eXHf78/n2t+htf78/ff/+u//uuv//iP//jr3/zN3/z6F3/xF7/+6Z/+6a9/9Ed/9HX98R//8a9/8id/8vUzvP7sz/7sx/X+m7/+67/+9e///u9//Zd/+Zdf/+3f/u3X//zP//z63fx585nv9f4dvN5/98///M+//t3f/d2vf/mXf/n1e//8z//863//6q/+6jc/m8+eP58/wz9///f9+d/+7d9+fb/33v7jP/7D3td2f/Od5np/13vP//AP//D1/d/Pe5/V+9z+8A//8Mfzm2ue6ftnfKnn/X6X95380z/909dnvZ8/9/f+97//+79/ff77v++f4+XuG79nuv8/+IM/+M198TX3ie/gfUfzrN819f5+fp7pPvn+8H3gv32/L174e/D9zM/4M9W/w0t9zvZc8VL77d2X7/W///u/P/bovMP3/b7P7V2r7/PENaTWyTz393qaBc03ND+bL/tuunfz8iLAl602/7z499/hi3+/1C0AvJv0vZd3MSEAvA+HN/n89/z5bHy8z/fPGABmI81zwXtyG18trrnfAaz382ajKwBAEFAbai4EgPfZvhv0/ax517ghtgWqAGD+mwF37v+99xcABgQcWM19IgC8gPXeLwKA2sRq8zMAOOBw35k3YtrQCQDw36XnqzY/fw8GgPea7/b+XlzvfIDMO+B3Mc/+vZ7ZbG7jJwCYE+BFoHcRvDcxCISLFQEAN/+7aGbzvy/9XUy4UN3nuo32fpd34cyJhBt+AICviQwGAN57nIeDAPB+x1mUDgDSYuAN9P7s/X2D3hw54Sk5F4MB/zles7He7zeR1ft80gLfFiXf//s7XfSSAADBbe5z3gUDAL/3LTJx64RPcfd91fq6AYAtYlGftwHA/Deun4m8t82vQOC9nnQjLvyfvzsnwJz+s4h5sc6C5HDvvfEXOGbz8+nvwrkEAO89zUOZKIAvBoGJCHDz4wZ673HAyd1bui9+prMwZgPxC+RQXgEAp1UYucw1Gwvv351yzanE9z+n/wA/n/7bIuQ0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" }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imglib2.FinalInterval\n", "\n", "image = ij.scifio().datasetIO().open(\"http://imagej.net/images/blobs.gif\")\n", "\n", "w = image.dimension(0); h = image.dimension(1)\n", "slice = FinalInterval.createMinSize(0, 0, 0, w, h, 1)\n", "input = ij.op().run(\"crop\", image, slice, true)\n", "\n", "ij.notebook().display(input)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "CCA runs over binary images so that it can easily discern which data locations should be allocated into labels, so first we have to binarize the image. Any data location with a bright value (i.e. `1`) will be labeled. However because we want to label the blobs (and not the background) we have to invert it first:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imagej.ops.Ops\n", "import net.imagej.ops.OpService\n", "import net.imagej.ops.special.computer.Computers\n", "\n", "//make the blobs bright by using a invert op.\n", "inverted = ij.op().create().img(input)\n", "ij.op().image().invert(inverted, input)\n", "\n", "//binarize the image using the inverted input\n", "binary = ij.op().threshold().mean(inverted)\n", "\n", "ij.notebook().display(binary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have a binarized, inverted input we can use CCA to find all of the blobs. Note that CCA also takes a `StructuringElement`, an `enum` determining whether to consider diagonal pixels (`EIGHT_CONNECTED`) or only the pixels above, below, to the left, and to the right (`FOUR_CONNCTED`) as neighbors:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "net.imglib2.roi.labeling.ImgLabeling@5e562781" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imglib2.algorithm.labeling.ConnectedComponents.StructuringElement\n", "\n", "blobsLabeling = ij.op().labeling().cca(binary,StructuringElement.FOUR_CONNECTED)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our `ImgLabeling` output contains an `IndexImg`, an `Img` that assigns a grayscale value to each pixel in a region, unique in value compared to all the other regions:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "indexImg = blobsLabeling.getIndexImg()\n", "\n", "ij.notebook().display(indexImg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `ImgLabling` itself is comprised of `LabelRegion`s, and we can get a list of all of the `LabelRegion` objects by using `LabelRegions`. Then we can find the center of mass of each labeling by interrogating each `LabelRegion`:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "null" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imglib2.roi.labeling.LabelRegions\n", "import net.imglib2.RealLocalizable\n", "\n", "regions = new LabelRegions(blobsLabeling)\n", "centers = new ArrayList()\n", "for(region in regions)\n", " centers.add(region.getCenterOfMass())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can overlay the centers of mass onto the original image:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imglib2.view.Views\n", "\n", "//create an Img upon which to paint all of the centers of mass\n", "centerImg = ij.op().create().img(input)\n", "centerRA = centerImg.randomAccess()\n", "\n", "//get the maximum possible value allowed to store in the img\n", "maxValue = centerImg.firstElement().getMaxValue() as int\n", " \n", "//paint the centers onto the img as 3x3 squares\n", "for(center in centers){\n", " for(dx = -1; dx <= 1 ; dx++){\n", " for(dy = -1; dy <= 1 ; dy++){\n", " //current pixel to paint is center location + offset\n", " xPos = Math.round(center.getDoublePosition(0)) + dx\n", " yPos = Math.round(center.getDoublePosition(1)) + dy\n", " //if pixel + offset is outside the image bounds, don't attempt to paint\n", " if(xPos >= centerImg.dimension(0) || yPos >= centerImg.dimension(1)) continue\n", " centerRA.setPosition(xPos, 0)\n", " centerRA.setPosition(yPos, 1)\n", " //paint\n", " centerRA.get().set(maxValue)\n", " }\n", " }\n", "}\n", "\n", "//stack the centers on the input image\n", "stack = Views.stack(input, centerImg)\n", "\n", "//TODO place in table next to original\n", "ij.notebook().display(stack)\n" ] } ], "metadata": { "kernelspec": { "display_name": "Groovy", "language": "groovy", "name": "groovy" }, "language_info": { "codemirror_mode": "groovy", "file_extension": ".groovy", "mimetype": "", "name": "Groovy", "nbconverter_exporter": "", "version": "2.4.3" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": false, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": false, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }