{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Dilate Op" ] }, { "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": "f53d597f-a12d-4a96-b501-6ef015806dbc", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "net.imagej.ImageJ@465e45d7" ] }, "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 performs [morphological dilation](https://en.wikipedia.org/wiki/Dilation_(morphology)) on any binary image. Let's see how the `Op` is called:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Available operations:\n", "\t(IterableInterval out?) =\n", "\tnet.imagej.ops.morphology.dilate.DefaultDilate(\n", "\t\tIterableInterval out?,\n", "\t\tRandomAccessibleInterval in1,\n", "\t\tShape in2,\n", "\t\tboolean isFull?,\n", "\t\tOutOfBoundsFactory f?)\n", "\t(IterableInterval out?) =\n", "\tnet.imagej.ops.morphology.dilate.ListDilate(\n", "\t\tIterableInterval out?,\n", "\t\tRandomAccessibleInterval in1,\n", "\t\tList in2,\n", "\t\tboolean isFull?)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ij.op().help(\"dilate\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note the parameters here:\n", "\n", "* `IterableInterval out`: the output image\n", "* `RandomAccessibleInterval in1`: the input image\n", "* `Shape in2`: the [`Shape`](http://javadoc.scijava.org/ImgLib2/net/imglib2/algorithm/neighborhood/Shape.html) that the `Op` will use to dilate each edge point of a structure. Note that in the Wikipedia article linked in the previous cell a circle was used; there are many other options (such as a rectangle) that are also available in ImageJ-Ops.\n", "* `List in2`: this parameter, only used in `ListDilate`, contains a list of `Shape`s each used once in a series of erosions (i.e. for each `Shape` in the `List` call `DefaultDilate` using the input (from the last `dilate` if not the first) and that `Shape`)\n", "* `boolean isFull`: an **optional** parameter that the user can set to tell the `Op` if the **dimensions of the output** are bigger than the dimensions of the input **plus** the radius of the `Shape` parameter. This parameter should **never** be set to true if **no output is given**, since this will cause the output to be translated and therefore inaccurate.\n", "* `OutOfBoundsFactory f`: an **optional** parameter that tells the `Op` how to extend the input (so that the `Shape` can be applied outside each of the input's edge values without error). If no `OutOfBoundsFactory` is given all values outside the input `Interval` are set to the \"off\" value of the binary image.\n", "\n", "We need to get a binary image to perform any morphological operations. Let's get a grayscale image and then binarize it using [the Huang Threshold Op](../threshold/threshold.ipynb#Huang-Thresholding):" ] }, { "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": "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" }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "input_full = ij.scifio().datasetIO().open(\"http://imagej.net/images/blobs.gif\")\n", "\n", "//input_full has 3 channels. We only need one.\n", "input = ij.op().run(\"hyperSliceView\", input_full, 2, 0)\n", "\n", "//invert the image so that the blobs are \"on\" and the background \"off\"\n", "inverted = ij.op().run(\"create.img\", input)\n", "ij.op().run(\"invert\", inverted, input)\n", "\n", "binaryInput = ij.op().run(\"threshold.huang\", inverted)\n", "\n", "ij.notebook().display(binaryInput)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have our image, let's dilate it :" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAD+CAYAAADVndu7AAAPhElEQVR42u2d27IcuQpE9f8/7fM2MWfC2+6uErAyyY7wy4xdurKEAME55/x6+qfjR+nHk37R+nyr7939v9Fftz8X51Zb+BUBMP1Tg1cEvm7+LQCgtikJvwDgs/EFAALCHwD09V/52vJmXI7C/wgA1MWO8AcAHeNZDYBszABA3Xh5Yxwuwv8VAGKc0rf+BwDXLegBwDbXVAAQ9+UUBMYAsEW1c4GU6xWGOveqwm8JgEJSBgABANZLUQYARevuVg3FGQD0eQ8AxN07ytrJBhvABvvQkObiOWlUV486AFQjAQOAhQCgBXqQfk/7rAgAQj9vrkELAGgL+/Y7zpbcirlXhBURAPS1OPT7P80d4w4A4k8RACprciY3g1uopjoAHIV/AgBKYD5/alz5FAoAvADQpUVOCv84AG6oMaSBBgL6wj+ljnf2dXJ9TiXNpgcZAGgDgCaYqwDgYoAKBPYKvypkxgHgtAkDgADAAQBlB+SE6qT6UONmOwFAhH8lAJTeG1S2RxH+AIBpYwgABgHQ1aYTAN4CM8I/A+tD2IQUAEy0Oy38Fb7rb/+dqvBbeMpcjRsEQVR6q965rurXD4dAuQAAZoBUbd8pOvLb8SprbR8DoOtOrD6RNwREzfah7g5Vvrq2AqDjcY6j8E9CoFooHaIi37p21W03fwTArQapKvC04ZOqkt94fKNYJJVou6nUnP/5RqXgkDP5Tm62CkGpjlrc8iZCMdPwq29WUIeezVd1s6XEdQBwXWu7SR5Y2eN1FW4DgN0AePSHtkkdT/8AIADA7pVvLP8qG2NDddsAgLEWUx6KEgBQMuhG+AMApfWQHsffTv3JDU1xmQQAAYDxWJhFNG57HZw2HEFYlQUnQPsNABQ2Ni3OwBkClPiGqXVQ0zBfrEVfDn6Vq8RmAHSPjbYGC6+ap7RRgnAEAJwkKC45EWyuN1WN5n6mA4DpMU7P/8RVArPPbjcYC60WAChjVBN+sv1jDABEgQkAdKLYlISfrPHYAEDVyrwdADQI0PIuWAJgy2ZyAQB1vEqnfwAAF54Ivx4A1B6ErQcANbVWAMCYF/c3IdEAwIIU4dcGQFUWKnfttA0ACqm1AgDtdGif9lvN9Qmab+3c7HkEtAcA1LGLu2Gfh0KqCFWEPzkRt7iqW54Dqz14iOAHAAHABwBQqem2wfDl9jAqwo8tBrMnDVJO/wAgALgAAGXDmpq7KwDQfffQ6Zq8khJsk2VdsS8BAF/438JiYG6T0lkNQjEC8vztN+ZiaF6XpUEGlMUeVvly+g8K/y1t4GKZsACgux7CBmPoltO/cl5uCv4fvhMAbEq/pVgZmXr6E/bzhbYDgIShstbrxreqx0Sdowdtx5Kc9FuMNbv5TRXhf7KGl9sOAJJ+S0f4q6zpkwD4Zq4K2o0hST36Tr1ft9tQ/A1eIQOAram3CFcTgktOAQKFbR5LQ1IAwH+RVtGeovo/fKUJANQf3qjGJlTMgZsG0NCm5/12U9w9BVoErSMAaAYA/YXdhqq3iuHRlfPgAoCmNr1qzG0p/3Tjzt2djFMZABParhQAVJ/YKqi3b/tW/e9pGkDV+rup/9cBQImRpp20UwDoPkVdATAVzCULAFf1WwkAJEPWlIZG1yrsATDx9p2wwTcYj2hzVG0AdoX4UfGJqwXebBX+ifnp8GqoXOEsNYCbxiryiUM/pahr1RUDYg2AKqOc6qYKADTWqrO+oDoof9v+5ISr0ZLYF2rwC91bRLExyQGAcB8PANinf9fm3pLSDQeAaUOYgssrAPiFDNFWDDJDAmBaCLYDQOENPDktu9r7l7K2VFVhhaCXnP59adkdrgTd19xrAJi4l28GgEIKrK5swBQtQW2t//mmslAqhL26GkBvCn/XeneBoNrVefV7DgCg5yhUvB8S7/6T2gnRW3DlW8qnslKSUmWDo5Pwd4GAduD8+PcrOjqxgA5GLqKx0VX4KyEgBayqjk4snMrG2XyaOhgr1QrABADgxZjWLhRtIWTBktNYKjs5MREuRqTUH/CAObGv//c9RQA4LIJ79WG1cl1bq0Cd6k5OTMJG4SdnZt4AAFXj86nuqJuxaUs1ItUqSXTDbncf//q9jo5SB+8m/ISMzAGAltH1dHV0anE2CX93ea8AQKcITDsAbkJAKSuxMggcCqUGAN/153R3Vs0IRRDY6rE7VUrefgX4+ntTnaWfRK6ntMIYA4A+79ehTujEyatkrNtik4grMACw+xPPRABAEP4AYEEuuQCgdw4DgADA56FIjIAS4divvq2gTkX49SGwBQAKdQ+RAIhPnnuX3QAB5YhMaQDECr4LvlsA0BmRiQNAQnS5ZcuuJ5U0gQBl/dtBo2a0oELgpz5RN7SrtZy8f4guyKMu/NMQULzXkuZ6EwCI+/A4CP/UIqpZtSnz/dP3IvzCAFBJl3RzEygBgCA4k1oLVfWftgOcScHrXFCS5bUbANPCQ7m6dAOA6s25CgC6D9xhTKoAqGjDzep/s6+tAFAIglG/0tyYC7LGNWXLcH7rUQ4AlSAYF7tGAHBXG9jw1uPLbx4b4a9Qe5VdgFN2F2pbm957fAWAqpRULr+36bYCgNl12Bzu/RUANr4Br7wKTNtBVIyupFPcLdz7Axd4AHBb7aKoiAGAf0DYk77+579F+Ds3Xmc/u+dFaR2c9vvLjNMBQPfGU7+LBwBabxnabQCuP7XEoAHAnvcgKCNgAMBIGhEA7HkM9iL8PQAgbL6KfjgCgAQCewDcdDdE+PsLlbh5AGgwIO/RL/7N/Rp1AcDONOTb1sgOAEp3zwCAWalmo6ZmAQBFA9RP/YrwzwXkbII1/ZD6GABOG2Fr/T31IpWKELAAgNNpMFmcIdWHAgBFT8CZbJwOgAi/tiE4APig2tM0gah30gj/uzkJAETG6mAYmq7MUpkNV7nmYADAGmvpFWASAtQahE6n7IansisfA03eQ5ROJWJhSBUhCgC411/p0mDtVVRApaHVBCgQYNq+ztSEq6qklKrHAUAAcMXmpWgpnl6o6YIQqsLjCgBSUtCvv6N0Jycn4OhcaFXBcQaAqsv7ECa8YyGrxxkABACKbzAOacKVrNDuz24DAJ3yYK++6TDh0wsSAOgX0CCPs9TlHOF/N96JjawsNFsA0BUP8np+AoAAwBUAqm85WuNN3Cc7AOCt4yQAlEFR4tLO6a8HAEIdejoAJjxNinN3XIXfvUCpuspM1Za2Pfs+rsK/oTx5JwBu7wGyZ2aVJ8vZyBIA9GoYlOAsN622dG85W1jdAVCx2bsFh2ogXWPHcnavuECg42HVtC2h0sqvDAEcAJIimwmANw+rSAbFaW2ItNeb9tbzid+qRtGf5U57E26sfzUAO/ovBQBKnjul2GwqAFQKiKiAvgq+kGApdgYf2gbJoxzmuk/3nWLTKQEAZTNMW53zKi8A6Hjs02xfYqtVk4ayTotzpwARDZiKAKhqIwAotjWokDrPcbn3/8p2MACY2hSUe5tTVt4k5bzX7+q2EACY2BSUa4ZTUY4AgH8/xxkBJzaG0sZTFJ6pn1MaLmV5QAMgFvT6MQQAbJsPBgATmyNqdG3/J38u2XfVNWIsAKJGBwDUZCLTHp+mNmdPt6jRAYBC6LITAP7TjmcKLRchCgAYMRdT7Te0EwAEAHuFX8HlW9yGt/Df2owBgF/fyVmMGx/jBQA5QfeCS+3pdMF3A4ANPvQIP/ca0PV4LQCIBT0AAEKg6aRnAUBlUzoIv9r7Bep8d7Q9MPezE04WKJfTXy3ikjzndDkIAAIAdOos9TlX0ITxVwCVl3UBgOc1hQIBCJADgDyi0e9X97zTbWBfA8AlD4ADAIjPZ7cUcenoL+wRnD8AkkXn2Rg3VnHqAClsLDufWm5PopkybjXzTzF64wCg7J4KAAIA44AshqU4APiFE7qthVydxvcIABPlwOgLuf30CQAWAqC7IOhmAChny3Us5R4ADKiNWxdQUaACgMUAUKrguymMNrULAgB5ANDvqhH+unE4AwA8Dg+3ULSUpP8KAMwA4OqzdjSkxQugdQX41/+PMLtoKeqCEwDUj+M3fydCXLHAGyPpEgnIBsAPfyeCmzDaQOCbvr8ZM+n0DwACgADgi77fGDvp9A8AIvwxBl4S/qpvVZ7+AUAAkJiAIoElRWj+5e/3bMgIat3dMgCo6zPxu7eE/zoAaAE7Lif41gAaZeHvXrcXe2tmoSL0Girl9LqqCn+XYfDCgez9xtztvr7xEc3EU/Fp12IXWM70ohAEUM1QtxEAnYfO5JzcnNcAABKqWy1s2wCg5lUhj+EQT7TJRVRz0W2Jo1d2qZLHYgmAbe6sLRl1AwAIALb4j9V82QFAALAaALR+TQhghD/3f0kAkIVNPTw3AAgArAFA3OABQABAmBcpAJBP2wi/v/AHAIJFMogbPQAIBEjz8sc+EtVb9RTYEf4AgDY3fwQAcYMLF1qI8AcCyFyTHwHg04Y2C1oA4P+Qa3puuozT5+nHAwCt57kRfo1n7t1eqvP0w9tVbdX3+WqCP92nrvkZg/PTj24/aZ2y9BBPexqoiKf+lf5MnCQOJ+32SrcOCU4JxV/Gx/b0owFASl05ZTd2HKsFACbtEC4AUIDApnlCjYVgVXYFQLQAzchJ5/qAAUAAgMqhSP65lwh/BIAJCKjfGRU3coeAqPzUYWcLAKUEGK6w2gAAB9iVAMChegvtVFXVVDbkSwgAhrQAdcGiv16cSKSq+rPzcNz42DYAuAW6bDaObtJ2ygBAyBKU+yBn3txfS1qVb7/1sQBAM6lKALDruiMHAPXkoOS8itsMtwGAAQCmjZJORSgCgADgdAhnJ2CodQuIb8EDgNgAzs1JqOio8sLTc9AFAAHAuT0JEf5eEKgaIgMAYQB0RZRtE/7uTD0BgL6mhQTAjYSK24X/d/Op9jIt4cCssV59Dlyd3jjC75+RJgBYAIBP3XfV3oQIfoq7TB8KyH47GMJuaBhbct1viESkaoTSAFDfmNsEXKnK8xYAyGYEctiUt/sXAOwCgG1eQNrJqaa+BQJ+rrKuNUb0nbSxVY03AUAAILvnSZs5ANCfd7ccgfZrQNrAyv5b5cCg7UYyFy34YZv+RqnqPk3PEWXunWoFqMjDhXYCAJUrAPn0XVFEw/OPt1FKQfC6+hFDmabgF/c1AFBV/T/tj5PwbDrpm8bga5XuapuqAUTwPQX/8pgCAJoR7C0A3NTlLer+0Jg8fdOKfvC3XgBHQ9mWO//guPwCVBQj4d7GASQ4RhcCw+Paex/KKcmHnDsEAOPyMYq4hB4HAJ7XmQAA9CIvp2R8/9MQIIzrf84D9dvtPo9TAAAAAElFTkSuQmCC" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imglib2.algorithm.neighborhood.HyperSphereShape\n", "\n", "//create the shape that we are going to dilate the image with\n", "shape = new HyperSphereShape(4)\n", "\n", "output = ij.op().run(\"dilate\", null, binaryInput, shape, false)\n", "\n", "ij.notebook().display(output)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To show the difference, let's [stack](../transform/stackView.ipynb) the images to see the difference:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import net.imglib2.img.Img\n", "\n", "list = new ArrayList()\n", " \n", "list.add(binaryInput)\n", "list.add(output)\n", "\n", "stacked = ij.op().run(\"stackView\", list)\n", "\n", "ij.notebook().display(stacked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note the yellow regions, where the red original image and the green dilated image are the same, as well as the green borders that show where the dilation occurred." ] } ], "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 }