{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ " Lab-BioRelate 8/26/2017 - Mauricio Cerda (mauriciocerda@med.uchile.cl)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello jupyter notebook world!\n" ] } ], "source": [ "print 'Hello jupyter notebook world!'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Open and show an image" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from matplotlib.pyplot import imshow\n", "from skimage import filters, morphology, io, img_as_uint\n", "%matplotlib notebook\n", "\n", "image=io.imread('chagas.png')\n", "imshow(image, cmap='gray')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A global manual threshold" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, img_as_uint\n", "%matplotlib notebook\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "plt.bar(range(0,256), h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Computing a threshold value with k-means (please correct me!)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting...\n", "Cluster 0=0\n", "Cluster 1=255\n", "Threshold=127\n", "\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, measure\n", "%matplotlib notebook\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "threshold = 40\n", "\n", "binary=image>threshold\n", "all_labels = measure.label(binary, background=0)\n", "properties = measure.regionprops(all_labels)\n", "print 'Number of objects=%s' % len(properties)\n", "for i in range(0,len(properties)):\n", " print 'Object %s, area=%s' % (i, properties[i].area)\n", "\n", "imshow(all_labels, cmap='rainbow')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each object compute PCA, and the eccentricity index using moments (please correct me!)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of objects=336\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:49: RuntimeWarning: invalid value encountered in double_scalars\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, measure\n", "from scipy.spatial import Voronoi, voronoi_plot_2d\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "#get set of points image moments\n", "def getmoments(x,y):\n", " meanx=np.mean(x)\n", " meany=np.mean(y)\n", " mu00=len(x)\n", " mu10=sum(x-meanx)\n", " mu01=sum(y-meany)\n", " mu11=sum((x-meanx)*(y-meany))\n", " mu20=sum((x-meanx)**2)\n", " mu02=sum((y-meany)**2)\n", " \n", " return mu00, mu10, mu01, mu11, mu20, mu02\n", " \n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "threshold = 40\n", "\n", "binary=image > threshold\n", "all_labels = measure.label(binary, background=0)\n", "properties = measure.regionprops(all_labels)\n", "print 'Number of objects=%s' % len(properties)\n", "\n", "centers=np.zeros((len(properties),2), 'float')\n", "\n", "for i in range(0,len(properties)):\n", " coords = properties[i].coords\n", " mu00, mu10, mu01, mu11, mu20, mu02 =getmoments(coords[:,1], coords[:,0])\n", " covxx=mu20/mu00\n", " covyy=mu02/mu00\n", " covxy=mu11/mu00\n", " \n", " #always 0?\n", " eccentricity=0\n", " centers[i,0]=(properties[i].centroid)[0]\n", " centers[i,1]=(properties[i].centroid)[1]\n", "\n", "#if you have time you can use voronoi diagram\n", "#or something else to estimate infection rate\n", "#vor = Voronoi(centers)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 2 }