From colincsl at gmail.com Sun Sep 1 11:53:51 2013 From: colincsl at gmail.com (Colin Lea) Date: Sun, 1 Sep 2013 08:53:51 -0700 (PDT) Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> Message-ID: I just made a function blocproc to do this. I'll add a pull request later today. It works in a similar way as the matlab feature. On Sunday, September 1, 2013 5:37:22 AM UTC-4, Johannes Sch?nberger wrote: > > Yes that should be very useful. Nevertheless, I think a function like > Matlab's blockproc would be a really good addition. > > Am 01.09.2013 um 11:34 schrieb St?fan van der Walt >: > > > > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger > > wrote: > >> - pad image with skimage.util.pad, which allows a large number of > padding methods > >> - spawn a pool of processes using Python's multiprocessing package in > the standard library > >> - use shared memory to provide read access to complete image > >> - define slices of image blocks and add them to a processing queue > > > > How about we add an `overlap` parameter to > > `skimage.utill.view_as_windows`? That should solve this problem. > > > > St?fan > > > > -- > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image... at googlegroups.com . > > For more options, visit https://groups.google.com/groups/opt_out. > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Sun Sep 1 04:07:08 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Sun, 1 Sep 2013 10:07:08 +0200 Subject: Request: usage examples, demos, testimonials Message-ID: Hello, everyone I'd like to give a talk on scikit-image at the upcoming PyCon ZA [1]. If you have any examples of the use of scikit-image in research or industry, I'd love to hear about it. Also, impressive demo scripts (like Stuart Mumford's sun warping), even if you can just share snapshots, would be very valuable. Thanks! St?fan [1] http://za.pycon.org/ From stefan at sun.ac.za Sun Sep 1 05:34:48 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Sun, 1 Sep 2013 11:34:48 +0200 Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> Message-ID: On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger wrote: > - pad image with skimage.util.pad, which allows a large number of padding methods > - spawn a pool of processes using Python's multiprocessing package in the standard library > - use shared memory to provide read access to complete image > - define slices of image blocks and add them to a processing queue How about we add an `overlap` parameter to `skimage.utill.view_as_windows`? That should solve this problem. St?fan From jsch at demuc.de Sun Sep 1 05:37:22 2013 From: jsch at demuc.de (=?iso-8859-1?Q?Johannes_Sch=F6nberger?=) Date: Sun, 1 Sep 2013 11:37:22 +0200 Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> Message-ID: <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> Yes that should be very useful. Nevertheless, I think a function like Matlab's blockproc would be a really good addition. Am 01.09.2013 um 11:34 schrieb St?fan van der Walt : > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger wrote: >> - pad image with skimage.util.pad, which allows a large number of padding methods >> - spawn a pool of processes using Python's multiprocessing package in the standard library >> - use shared memory to provide read access to complete image >> - define slices of image blocks and add them to a processing queue > > How about we add an `overlap` parameter to > `skimage.utill.view_as_windows`? That should solve this problem. > > St?fan > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > From jsch at demuc.de Sun Sep 1 13:25:46 2013 From: jsch at demuc.de (=?iso-8859-1?Q?Johannes_Sch=F6nberger?=) Date: Sun, 1 Sep 2013 19:25:46 +0200 Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> Message-ID: Great! Am 01.09.2013 um 17:53 schrieb Colin Lea : > I just made a function blocproc to do this. I'll add a pull request later today. It works in a similar way as the matlab feature. > > > > On Sunday, September 1, 2013 5:37:22 AM UTC-4, Johannes Sch?nberger wrote: > Yes that should be very useful. Nevertheless, I think a function like Matlab's blockproc would be a really good addition. > > Am 01.09.2013 um 11:34 schrieb St?fan van der Walt : > > > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger wrote: > >> - pad image with skimage.util.pad, which allows a large number of padding methods > >> - spawn a pool of processes using Python's multiprocessing package in the standard library > >> - use shared memory to provide read access to complete image > >> - define slices of image blocks and add them to a processing queue > > > > How about we add an `overlap` parameter to > > `skimage.utill.view_as_windows`? That should solve this problem. > > > > St?fan > > > > -- > > You received this message because you are subscribed to the Google Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image... at googlegroups.com. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From erpayal2010 at gmail.com Mon Sep 2 07:05:44 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Mon, 2 Sep 2013 04:05:44 -0700 (PDT) Subject: find_boundaries Message-ID: <50ab76fa-7b28-4446-87ce-843f145cda47@googlegroups.com> hi all... i m using skimage module of scikit image. in image i wanna find all boundaries of all object in a image but i dont know the syntax of find_boundaries this syntax gives error... anyone know the full syntax of find_boundaries and what the meaning of levei_img plz reply me... payal -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Mon Sep 2 07:07:23 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Mon, 2 Sep 2013 04:07:23 -0700 (PDT) Subject: Get border pixels of labelled region In-Reply-To: <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> Message-ID: <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> but this function not working... how to use it. reply me On Wednesday, July 3, 2013 2:40:46 AM UTC+5:30, Johannes Sch?nberger wrote: > > Hi, > > Do you mean the functionality provided by `skimage.measure.find_contours`? > > Johannes Sch?nberger > > Am 02.07.2013 um 22:59 schrieb Robin Wilson >: > > > > Hi all, > > > > Is there a way to get the pixels on the border of a labelled region in > an image using skimage? I've done edge detection, and then filled the > resulting shapes (after some edge linking), and would now like to be able > to get the pixels on the border of each of these shapes. I would have > thought that getting borders would be an option in regionprops, but it > doesn't seem to be. > > > > Any ideas? > > > > Cheers, > > > > Robin > > > > -- > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image... at googlegroups.com . > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kmichael.aye at gmail.com Mon Sep 2 16:12:05 2013 From: kmichael.aye at gmail.com (Michael Aye) Date: Mon, 2 Sep 2013 13:12:05 -0700 (PDT) Subject: uniform_filter not working with NANs present? Message-ID: <26edbc93-973a-48e9-8c79-cf9fc0c9763a@googlegroups.com> Hi! I am trying to use ndimage's uniform_filter (for a simple local mean filtering) on a map-projected image that has NAN's at the border (basically the corners where the rotated map projected image does not fit into the rectangular grid). Is there a way, maybe in skimage, to use a uniform_filter on an array that contains NANs? ndimage' version does not cope with it correctly: > arr = array([np.nan, 1,2,3,4,5,np.nan]) > arr array([ nan, 1., 2., 3., 4., 5., nan]) > nd.filters.uniform_filter(arr, 3) array([ nan, nan, nan, nan, nan, nan, nan]) Cheers, Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Mon Sep 2 07:16:21 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Mon, 2 Sep 2013 13:16:21 +0200 Subject: find_boundaries In-Reply-To: <50ab76fa-7b28-4446-87ce-843f145cda47@googlegroups.com> References: <50ab76fa-7b28-4446-87ce-843f145cda47@googlegroups.com> Message-ID: On 2 Sep 2013 13:06, "Payal Gupta" wrote: > > hi all... > i m using skimage module of scikit image. in image i wanna find all boundaries of all object in a image but i dont know the syntax of find_boundaries this syntax gives error... anyone know the full syntax of find_boundaries and what the meaning of levei_img plz reply me... > payal Can you show us how you tried to run the code? St?fan -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Mon Sep 2 10:57:00 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Mon, 2 Sep 2013 16:57:00 +0200 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> Message-ID: On Mon, Sep 2, 2013 at 4:48 PM, Payal Gupta wrote: > but this syntax segmentation.find_boundaries(img) not work > where img is an image Unless you send us a code snippet (e.g. on https://gist.github.com), there is nothing we can do to help. St?fan From erpayal2010 at gmail.com Mon Sep 2 10:48:54 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Mon, 2 Sep 2013 20:18:54 +0530 Subject: Get border pixels of labelled region In-Reply-To: <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> Message-ID: but this syntax segmentation.find_boundaries(img) not work where img is an image On Mon, Sep 2, 2013 at 4:37 PM, Payal Gupta wrote: > but this function not working... how to use it. > reply me > > On Wednesday, July 3, 2013 2:40:46 AM UTC+5:30, Johannes Sch?nberger wrote: >> >> Hi, >> >> Do you mean the functionality provided by `skimage.measure.find_**contours`? >> >> >> Johannes Sch?nberger >> >> Am 02.07.2013 um 22:59 schrieb Robin Wilson : >> >> >> > Hi all, >> > >> > Is there a way to get the pixels on the border of a labelled region in >> an image using skimage? I've done edge detection, and then filled the >> resulting shapes (after some edge linking), and would now like to be able >> to get the pixels on the border of each of these shapes. I would have >> thought that getting borders would be an option in regionprops, but it >> doesn't seem to be. >> > >> > Any ideas? >> > >> > Cheers, >> > >> > Robin >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups "scikit-image" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an email to scikit-image...@**googlegroups.com. >> > For more options, visit https://groups.google.com/**groups/opt_out. >> >> > >> > >> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From guillaume at mitotic-machine.org Mon Sep 2 14:28:53 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Mon, 02 Sep 2013 20:28:53 +0200 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> Message-ID: <5224D8E5.2080805@mitotic-machine.org> You should use `io.imread('IMG_1.jpg')` instead of `Image.open`, which returns an `Image` object, not a numpy array. Le 02/09/2013 18:25, Payal Gupta a ?crit : > > code: > > import Image > > from skimage import segmentation as seg,io > > img = Image.open("IMG_1.jpg" , 'r') > > bimg =seg.find_boundaries(img) > > io.imshow(bimg) > > > error: > > Traceback (most recent call last): > > File "", line 1, in > > File > "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", > line 523, in runfile > > execfile(filename, namespace) > > File "C:\Users\Dell\Documents\Python Scripts\final_try.py", line 12, > in > > bimg =seg.find_boundaries(img) > > File > "C:\Anaconda\lib\site-packages\skimage\segmentation\boundaries.py", > line 10, in find_boundaries > > boundaries = np.zeros(label_img.shape, dtype=np.bool) > > File "C:\Anaconda\lib\site-packages\PIL\Image.py", line 512, in > __getattr__ > > raise AttributeError(name) > > AttributeError: shape > > > > On Mon, Sep 2, 2013 at 8:27 PM, St?fan van der Walt > wrote: > > On Mon, Sep 2, 2013 at 4:48 PM, Payal Gupta > wrote: > > but this syntax segmentation.find_boundaries(img) not work > > where img is an image > > Unless you send us a code snippet (e.g. on https://gist.github.com), > there is nothing we can do to help. > > St?fan > > -- > You received this message because you are subscribed to a topic in > the Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an > email to scikit-image+unsubscribe at googlegroups.com > . > For more options, visit https://groups.google.com/groups/opt_out. > > > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jostein.floystad at gmail.com Mon Sep 2 15:51:51 2013 From: jostein.floystad at gmail.com (=?ISO-8859-1?Q?Jostein_B=F8_Fl=F8ystad?=) Date: Mon, 2 Sep 2013 21:51:51 +0200 Subject: Request: usage examples, demos, testimonials In-Reply-To: References: Message-ID: I used random_walker for 3D segmentation in the publication below: http://pubs.acs.org/doi/abs/10.1021/ma3021163 However, the memory requirements of the function were too high to allow processing the data set all in one piece, so I'm not sure I'd recommend this as a showcase. Jostein 2013/9/1 St?fan van der Walt > Hello, everyone > > I'd like to give a talk on scikit-image at the upcoming PyCon ZA [1]. > If you have any examples of the use of scikit-image in research or > industry, I'd love to hear about it. Also, impressive demo scripts > (like Stuart Mumford's sun warping), even if you can just share > snapshots, would be very valuable. > > Thanks! > St?fan > > [1] http://za.pycon.org/ > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Mon Sep 2 12:25:47 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Mon, 2 Sep 2013 21:55:47 +0530 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> Message-ID: code: import Image from skimage import segmentation as seg,io img = Image.open("IMG_1.jpg" , 'r') bimg =seg.find_boundaries(img) io.imshow(bimg) error: Traceback (most recent call last): File "", line 1, in File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 523, in runfile execfile(filename, namespace) File "C:\Users\Dell\Documents\Python Scripts\final_try.py", line 12, in bimg =seg.find_boundaries(img) File "C:\Anaconda\lib\site-packages\skimage\segmentation\boundaries.py", line 10, in find_boundaries boundaries = np.zeros(label_img.shape, dtype=np.bool) File "C:\Anaconda\lib\site-packages\PIL\Image.py", line 512, in __getattr__ raise AttributeError(name) AttributeError: shape On Mon, Sep 2, 2013 at 8:27 PM, St?fan van der Walt wrote: > On Mon, Sep 2, 2013 at 4:48 PM, Payal Gupta wrote: > > but this syntax segmentation.find_boundaries(img) not work > > where img is an image > > Unless you send us a code snippet (e.g. on https://gist.github.com), > there is nothing we can do to help. > > St?fan > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Mon Sep 2 16:23:35 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Mon, 2 Sep 2013 22:23:35 +0200 Subject: Request: usage examples, demos, testimonials In-Reply-To: References: Message-ID: On Mon, Sep 2, 2013 at 9:51 PM, Jostein B? Fl?ystad wrote: > However, the memory requirements of the function were too high to allow > processing the data set all in one piece, so I'm not sure I'd recommend this > as a showcase. But perhaps a good thing to put on our TODO :) What was the radon transform code you submitted used in? St?fan From guillaume at mitotic-machine.org Tue Sep 3 03:15:07 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Tue, 03 Sep 2013 09:15:07 +0200 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> Message-ID: <52258C7B.80205@mitotic-machine.org> Ok, I responded a bit quickly yesterday, So here's the doc from find_boundaries (you can get that by running `find_boundaries?` in an ipython) Definition:find_boundaries(label_img) Docstring:Return bool array where boundaries between labeled regions are True. So you see that find_boundaries work on a labeled image, so my guess is you first need to threshold your image, and only then find the boundaries. It's not clear from what you say what exactly you want to segment out of the image, but maybe your work flow would include some colorspace conversion (for exemple RGB to HSV), then a thresholding, and then find_boundaries)... Hope this helps, Guillaume Le 03/09/2013 09:02, Payal Gupta a ?crit : > . i want to find the boundary of this fig From riaanvddool at gmail.com Tue Sep 3 15:27:51 2013 From: riaanvddool at gmail.com (Riaan van den Dool) Date: Tue, 3 Sep 2013 12:27:51 -0700 (PDT) Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> Message-ID: I have created a gist with my thoughts of what such a function could look like. https://gist.github.com/riaanvddool/6428299 The examples shown are a bit contrived, with border_size=(0,0) and non-overlapping 'rolling' windows, but the idea should be clear I think. The proc_func function can either process and return a value synchronously, or create a separate job/process for each window, depending on implementation. By keeping this logic separate from the windowing function any multiprocessing-type solution can be used according to preference. In the case of asynchronous processing the results tuple will either be filled with None, or any other value returned by proc_func, ie it will not be the asynchronous result itself and the proc_func will have to implement a way for the asynchronous results to be returned when available (callback function as an example). Your thoughts? Riaan On Sunday, September 1, 2013 7:25:46 PM UTC+2, Johannes Sch?nberger wrote: > > Great! > > Am 01.09.2013 um 17:53 schrieb Colin Lea >: > > > > I just made a function blocproc to do this. I'll add a pull request > later today. It works in a similar way as the matlab feature. > > > > > > > > On Sunday, September 1, 2013 5:37:22 AM UTC-4, Johannes Sch?nberger > wrote: > > Yes that should be very useful. Nevertheless, I think a function like > Matlab's blockproc would be a really good addition. > > > > Am 01.09.2013 um 11:34 schrieb St?fan van der Walt : > > > > > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger > wrote: > > >> - pad image with skimage.util.pad, which allows a large number of > padding methods > > >> - spawn a pool of processes using Python's multiprocessing package in > the standard library > > >> - use shared memory to provide read access to complete image > > >> - define slices of image blocks and add them to a processing queue > > > > > > How about we add an `overlap` parameter to > > > `skimage.utill.view_as_windows`? That should solve this problem. > > > > > > St?fan > > > > > > -- > > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image... at googlegroups.com. > > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image... at googlegroups.com . > > For more options, visit https://groups.google.com/groups/opt_out. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Tue Sep 3 03:02:44 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Tue, 3 Sep 2013 12:32:44 +0530 Subject: Get border pixels of labelled region In-Reply-To: <5224D8E5.2080805@mitotic-machine.org> References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> Message-ID: hello.. thanks it working bt result not correct. see the attachment. i want to find the boundary of this fig bt find_boundary not work and do you know which function work as same bwboundaries in matlab please reply On Mon, Sep 2, 2013 at 11:58 PM, Guillaume Gay < guillaume at mitotic-machine.org> wrote: > You should use `io.imread('IMG_1.jpg')` instead of `Image.open`, which > returns an `Image` object, not a numpy array. > > > > > Le 02/09/2013 18:25, Payal Gupta a ?crit : > > code: > > import Image > > from skimage import segmentation as seg,io > > img = Image.open("IMG_1.jpg" , 'r') > > bimg =seg.find_boundaries(img) > > io.imshow(bimg) > > > error: > > Traceback (most recent call last): > > File "", line 1, in > > File > "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", > line 523, in runfile > > execfile(filename, namespace) > > File "C:\Users\Dell\Documents\Python Scripts\final_try.py", line 12, in > > > bimg =seg.find_boundaries(img) > > File "C:\Anaconda\lib\site-packages\skimage\segmentation\boundaries.py", > line 10, in find_boundaries > > boundaries = np.zeros(label_img.shape, dtype=np.bool) > > File "C:\Anaconda\lib\site-packages\PIL\Image.py", line 512, in > __getattr__ > > raise AttributeError(name) > > AttributeError: shape > > > On Mon, Sep 2, 2013 at 8:27 PM, St?fan van der Walt wrote: > >> On Mon, Sep 2, 2013 at 4:48 PM, Payal Gupta >> wrote: >> > but this syntax segmentation.find_boundaries(img) not work >> > where img is an image >> >> Unless you send us a code snippet (e.g. on https://gist.github.com), >> there is nothing we can do to help. >> >> St?fan >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "scikit-image" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >> To unsubscribe from this group and all of its topics, send an email to >> scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > > For more options, visit https://groups.google.com/groups/opt_out. > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: figure_1.png Type: image/png Size: 34198 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: IMG_1.JPG Type: image/jpeg Size: 89685 bytes Desc: not available URL: From erpayal2010 at gmail.com Tue Sep 3 05:45:39 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Tue, 3 Sep 2013 15:15:39 +0530 Subject: Get border pixels of labelled region In-Reply-To: <52258C7B.80205@mitotic-machine.org> References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: thanks it working but i confused when i use function of skimage library. i want to change rgb image to a graylevel image but inbuilt function rgb2gray not convert gray level image. reply. On Tue, Sep 3, 2013 at 12:45 PM, Guillaume Gay < guillaume at mitotic-machine.org> wrote: > Ok, I responded a bit quickly yesterday, > > So here's the doc from find_boundaries (you can get that by running > `find_boundaries?` in an ipython) > > Definition:find_boundaries(**label_img) > Docstring:Return bool array where boundaries between labeled regions are > True. > > > So you see that find_boundaries work on a labeled image, so my guess is > you first need to threshold your image, and only then find the boundaries. > > It's not clear from what you say what exactly you want to segment out of > the image, but maybe your work flow would include some colorspace > conversion (for exemple RGB to HSV), then a thresholding, and then > find_boundaries)... > > Hope this helps, > Guillaume > > > Le 03/09/2013 09:02, Payal Gupta a ?crit : > > . i want to find the boundary of this fig >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit https://groups.google.com/d/** > topic/scikit-image/**rXRS0KT2PdU/unsubscribe > . > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe@**googlegroups.com > . > For more options, visit https://groups.google.com/**groups/opt_out > . > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Tue Sep 3 10:12:40 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Tue, 3 Sep 2013 16:12:40 +0200 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: On 3 Sep 2013 11:45, "Payal Gupta" wrote: > > thanks it working but i confused when i use function of skimage library. i want to change rgb image to a graylevel image but inbuilt function rgb2gray not convert gray level image. > reply. If you want help on this list, please provide code examples of what you are attempting. St?fan -------------- next part -------------- An HTML attachment was scrubbed... URL: From colincsl at gmail.com Tue Sep 3 21:23:15 2013 From: colincsl at gmail.com (Colin Lea) Date: Tue, 3 Sep 2013 18:23:15 -0700 (PDT) Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> Message-ID: <014c394d-58ec-4e18-8960-2b21f76e940f@googlegroups.com> Thanks Riaan, I've already made a PR for this. See here: https://github.com/scikit-image/scikit-image/pull/723/ On Tuesday, September 3, 2013 3:27:51 PM UTC-4, Riaan van den Dool wrote: > > I have created a gist with my thoughts of what such a function could look > like. > > https://gist.github.com/riaanvddool/6428299 > > The examples shown are a bit contrived, with border_size=(0,0) and > non-overlapping 'rolling' windows, but the idea should be clear I think. > > The proc_func function can either process and return a value > synchronously, or create a separate job/process for each window, depending > on implementation. By keeping this logic separate from the windowing > function any multiprocessing-type solution can be used according to > preference. In the case of asynchronous processing the results tuple will > either be filled with None, or any other value returned by proc_func, ie it > will not be the asynchronous result itself and the proc_func will have to > implement a way for the asynchronous results to be returned when available > (callback function as an example). > > Your thoughts? > > Riaan > > > > > > > > > > On Sunday, September 1, 2013 7:25:46 PM UTC+2, Johannes Sch?nberger wrote: >> >> Great! >> >> Am 01.09.2013 um 17:53 schrieb Colin Lea : >> >> > I just made a function blocproc to do this. I'll add a pull request >> later today. It works in a similar way as the matlab feature. >> > >> > >> > >> > On Sunday, September 1, 2013 5:37:22 AM UTC-4, Johannes Sch?nberger >> wrote: >> > Yes that should be very useful. Nevertheless, I think a function like >> Matlab's blockproc would be a really good addition. >> > >> > Am 01.09.2013 um 11:34 schrieb St?fan van der Walt : >> > >> > > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger >> wrote: >> > >> - pad image with skimage.util.pad, which allows a large number of >> padding methods >> > >> - spawn a pool of processes using Python's multiprocessing package >> in the standard library >> > >> - use shared memory to provide read access to complete image >> > >> - define slices of image blocks and add them to a processing queue >> > > >> > > How about we add an `overlap` parameter to >> > > `skimage.utill.view_as_windows`? That should solve this problem. >> > > >> > > St?fan >> > > >> > > -- >> > > You received this message because you are subscribed to the Google >> Groups "scikit-image" group. >> > > To unsubscribe from this group and stop receiving emails from it, >> send an email to scikit-image... at googlegroups.com. >> > > For more options, visit https://groups.google.com/groups/opt_out. >> > > >> > >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups "scikit-image" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an email to scikit-image... at googlegroups.com. >> > For more options, visit https://groups.google.com/groups/opt_out. >> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From jostein.floystad at gmail.com Tue Sep 3 14:19:24 2013 From: jostein.floystad at gmail.com (=?ISO-8859-1?Q?Jostein_B=F8_Fl=F8ystad?=) Date: Tue, 3 Sep 2013 20:19:24 +0200 Subject: Request: usage examples, demos, testimonials In-Reply-To: References: Message-ID: A version of random_walker which conserved memory better would be nice, sure! But I have high hopes for SLIC :) So far it has only been used in unpblished work, and unfortunately, I cannot share that work at the moment. But I will use the SART reconstruction code in a publication some time during the next few months, along with several other skimage functions. 2013/9/2 St?fan van der Walt > On Mon, Sep 2, 2013 at 9:51 PM, Jostein B? Fl?ystad > wrote: > > However, the memory requirements of the function were too high to allow > > processing the data set all in one piece, so I'm not sure I'd recommend > this > > as a showcase. > > But perhaps a good thing to put on our TODO :) What was the radon > transform code you submitted used in? > > St?fan > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From riaanvddool at gmail.com Wed Sep 4 00:06:24 2013 From: riaanvddool at gmail.com (Riaan van den Dool) Date: Tue, 3 Sep 2013 21:06:24 -0700 (PDT) Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: <014c394d-58ec-4e18-8960-2b21f76e940f@googlegroups.com> References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> <014c394d-58ec-4e18-8960-2b21f76e940f@googlegroups.com> Message-ID: <3e5b6b7d-622f-4d11-986a-46479198904a@googlegroups.com> Yes Colin, I saw, and I have commented on the PR as well. I am submitting this as an alternative approach, because I am not sure that the approach you took is 100% in line with what I need. R On Wednesday, September 4, 2013 3:23:15 AM UTC+2, Colin Lea wrote: > > Thanks Riaan, I've already made a PR for this. See here: > https://github.com/scikit-image/scikit-image/pull/723/ > > On Tuesday, September 3, 2013 3:27:51 PM UTC-4, Riaan van den Dool wrote: >> >> I have created a gist with my thoughts of what such a function could look >> like. >> >> https://gist.github.com/riaanvddool/6428299 >> >> The examples shown are a bit contrived, with border_size=(0,0) and >> non-overlapping 'rolling' windows, but the idea should be clear I think. >> >> The proc_func function can either process and return a value >> synchronously, or create a separate job/process for each window, depending >> on implementation. By keeping this logic separate from the windowing >> function any multiprocessing-type solution can be used according to >> preference. In the case of asynchronous processing the results tuple will >> either be filled with None, or any other value returned by proc_func, ie it >> will not be the asynchronous result itself and the proc_func will have to >> implement a way for the asynchronous results to be returned when available >> (callback function as an example). >> >> Your thoughts? >> >> Riaan >> >> >> >> >> >> >> >> >> >> On Sunday, September 1, 2013 7:25:46 PM UTC+2, Johannes Sch?nberger wrote: >>> >>> Great! >>> >>> Am 01.09.2013 um 17:53 schrieb Colin Lea : >>> >>> > I just made a function blocproc to do this. I'll add a pull request >>> later today. It works in a similar way as the matlab feature. >>> > >>> > >>> > >>> > On Sunday, September 1, 2013 5:37:22 AM UTC-4, Johannes Sch?nberger >>> wrote: >>> > Yes that should be very useful. Nevertheless, I think a function like >>> Matlab's blockproc would be a really good addition. >>> > >>> > Am 01.09.2013 um 11:34 schrieb St?fan van der Walt : >>> >>> > >>> > > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger < >>> js... at demuc.de> wrote: >>> > >> - pad image with skimage.util.pad, which allows a large number of >>> padding methods >>> > >> - spawn a pool of processes using Python's multiprocessing package >>> in the standard library >>> > >> - use shared memory to provide read access to complete image >>> > >> - define slices of image blocks and add them to a processing queue >>> > > >>> > > How about we add an `overlap` parameter to >>> > > `skimage.utill.view_as_windows`? That should solve this problem. >>> > > >>> > > St?fan >>> > > >>> > > -- >>> > > You received this message because you are subscribed to the Google >>> Groups "scikit-image" group. >>> > > To unsubscribe from this group and stop receiving emails from it, >>> send an email to scikit-image... at googlegroups.com. >>> > > For more options, visit https://groups.google.com/groups/opt_out. >>> > > >>> > >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups "scikit-image" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> an email to scikit-image... at googlegroups.com. >>> > For more options, visit https://groups.google.com/groups/opt_out. >>> >>> -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at mumford.me.uk Wed Sep 4 04:23:35 2013 From: stuart at mumford.me.uk (Stuart Mumford) Date: Wed, 4 Sep 2013 09:23:35 +0100 Subject: Request: usage examples, demos, testimonials In-Reply-To: References: Message-ID: Hello, Do you still have the copy of that Sun warp code? Stuart On 1 Sep 2013 09:07, "St?fan van der Walt" wrote: > Hello, everyone > > I'd like to give a talk on scikit-image at the upcoming PyCon ZA [1]. > If you have any examples of the use of scikit-image in research or > industry, I'd love to hear about it. Also, impressive demo scripts > (like Stuart Mumford's sun warping), even if you can just share > snapshots, would be very valuable. > > Thanks! > St?fan > > [1] http://za.pycon.org/ > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Wed Sep 4 11:31:36 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Wed, 4 Sep 2013 21:01:36 +0530 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: hello everyone... i will try this code,in this i want to do read a image then do edge detection after that find the boundaries of image object. but find_boundaries return me a bool array but i need a integer array. is it any solution of this. code:: import Image from skimage import segmentation as seg,io,filter imge = io.imread("IMG_1.jpg") thresh = filter.threshold_otsu(imge) binary = imge> thresh edge_canny = filter.canny(binary) bimg =seg.find_boundaries(binary) print(bimg) fig, (ax0, ax1) = plt.subplots(ncols=2) ax0.imshow(bimg,cmap=plt.cm.gray) ax1.imshow(binary,cmap=plt.cm.gray) On Tue, Sep 3, 2013 at 7:42 PM, St?fan van der Walt wrote: > > On 3 Sep 2013 11:45, "Payal Gupta" wrote: > > > > thanks it working but i confused when i use function of skimage library. > i want to change rgb image to a graylevel image but inbuilt function > rgb2gray not convert gray level image. > > reply. > > If you want help on this list, please provide code examples of what you > are attempting. > > St?fan > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Thu Sep 5 02:30:53 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Wed, 4 Sep 2013 23:30:53 -0700 (PDT) Subject: edge_detetection Message-ID: <4b631f28-d5fd-42aa-b23e-745ea7d383a4@googlegroups.com> hello everyone... i will try this code,in this i want to do read a image then do edge detection after that find the boundaries of image object. but find_boundaries return me a bool array but i need a integer array. is it any solution of this. also edge detection not work properly. please reply me ... code:: import Image from skimage import segmentation as seg,io,filter imge = io.imread("IMG_1.jpg") thresh = filter.threshold_otsu(imge) binary = imge> thresh edge_canny = filter.canny(binary) bimg =seg.find_boundaries(binary) print(bimg) fig, (ax0, ax1) = plt.subplots(ncols=2) ax0.imshow(bimg,cmap=plt.cm.gray) ax1.imshow(binary,cmap=plt.cm.gray) -------------- next part -------------- An HTML attachment was scrubbed... URL: From siggin at gmail.com Thu Sep 5 09:30:55 2013 From: siggin at gmail.com (Sigmund) Date: Thu, 5 Sep 2013 06:30:55 -0700 (PDT) Subject: morphology.is_local_maximum --> feature.peak_local_max Message-ID: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> Hey! I noticed that there is no 2D array support anymore in the 0.8 release. Neither in morphology.is_local_max() nor in the feature.peak_local_max() Is this on purpose? If yes, a meaningful error massage would be cool. Thanks Siggi -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Thu Sep 5 01:44:21 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Thu, 5 Sep 2013 07:44:21 +0200 Subject: uniform_filter not working with NANs present? In-Reply-To: <26edbc93-973a-48e9-8c79-cf9fc0c9763a@googlegroups.com> References: <26edbc93-973a-48e9-8c79-cf9fc0c9763a@googlegroups.com> Message-ID: Hi Michael, It makes a lot of sense that this would fail, but skimage.filter.rank.meanhas a `mask` keyword argument that can do what you want. However, it only works for uint8 or uint16 images, *and* if I remember correctly, it will be much slower if values exceed 12 bits, that is, your image intensity values should be in [0, 4096). >>> from skimage.filter import rank >>> arr = array([[np.nan, 1, 2, 3, 4, 5, np.nan]]) # make sure this is 2D >>> selem = np.ones((3, 3)) >>> arr_mean1 = rank.mean(arr.astype(np.uint8), selem) >>> arr_mean1 array([[0, 1, 2, 3, 4, 3, 2]], dtype=uint8) >>> arr.astype(np.uint8) # nan's are actually converted to 0... Not good! array([[0, 1, 2, 3, 4, 5, 0]], dtype=uint8) >>> nan_mask = True - np.isnan(arr) >>> arr_mean2 = rank.mean(arr.astype(np.uint8), selem, mask=nan_mask) >>> arr_mean2 # using the nan mask produces the correct output array([[1, 1, 2, 3, 4, 4, 5]], dtype=uint8) Hope this helps! Juan. On Mon, Sep 2, 2013 at 10:12 PM, Michael Aye wrote: > Hi! > > I am trying to use ndimage's uniform_filter (for a simple local mean > filtering) on a map-projected image that has NAN's at the border (basically > the corners where the rotated map projected image does not fit into the > rectangular grid). > Is there a way, maybe in skimage, to use a uniform_filter on an array that > contains NANs? ndimage' version does not cope with it correctly: > > > arr = array([np.nan, 1,2,3,4,5,np.nan]) > > arr > > > array([ nan, 1., 2., 3., 4., 5., nan]) > > > > nd.filters.uniform_filter(arr, 3) > > > array([ nan, nan, nan, nan, nan, nan, nan]) > > > > Cheers, > > > Michael > > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsch at demuc.de Thu Sep 5 06:41:41 2013 From: jsch at demuc.de (=?iso-8859-1?Q?Johannes_Sch=F6nberger?=) Date: Thu, 5 Sep 2013 12:41:41 +0200 Subject: GSoC Blog updated In-Reply-To: References: Message-ID: <15D9F4B3-E405-42D9-98C5-8F0D00ECD0CD@demuc.de> Hi Chintak, The quality of the results looks very impressing! Am 05.09.2013 um 12:07 schrieb Chintak Sheth : > Hi folks, > > New blog posts: > > http://chintak.github.io/2013/08/texture-synthesis-efros-and-leung-algo/ > > http://chintak.github.io/2013/09/texture-and-structural-inpainting/ > > Any feedback welcome. > Chintak > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From jsch at demuc.de Thu Sep 5 07:03:17 2013 From: jsch at demuc.de (=?windows-1252?Q?Johannes_Sch=F6nberger?=) Date: Thu, 5 Sep 2013 13:03:17 +0200 Subject: GSoC Blog updated In-Reply-To: <15D9F4B3-E405-42D9-98C5-8F0D00ECD0CD@demuc.de> References: <15D9F4B3-E405-42D9-98C5-8F0D00ECD0CD@demuc.de> Message-ID: > The quality of the results looks very impressing! ? impressive ? :-) From google at terre-adelie.org Thu Sep 5 07:49:32 2013 From: google at terre-adelie.org (Jerome Kieffer) Date: Thu, 5 Sep 2013 13:49:32 +0200 Subject: GSoC Blog updated In-Reply-To: References: Message-ID: <20130905134932.6127e89b.google@terre-adelie.org> On Thu, 5 Sep 2013 15:37:17 +0530 Chintak Sheth wrote: > Hi folks, > > New blog posts: > > http://chintak.github.io/2013/08/texture-synthesis-efros-and-leung-algo/ > > http://chintak.github.io/2013/09/texture-and-structural-inpainting/ > > A > ny feedback welcome. It looks impressive. I wonder how it compares to the resynthetizer plugin in GIMP. Because I just tested Resynthetize this morning on diffraction images where pieces were missing and the results were disappointing. Indeed my problem is strange as I am looking for contiguous regions with a camera containing many holes (about 10%) and most algorithm fail on those image due to those holes. Cheers. -- Jerome Kieffer From jsch at demuc.de Thu Sep 5 09:37:10 2013 From: jsch at demuc.de (=?iso-8859-1?Q?Johannes_Sch=F6nberger?=) Date: Thu, 5 Sep 2013 15:37:10 +0200 Subject: morphology.is_local_maximum --> feature.peak_local_max In-Reply-To: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> References: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> Message-ID: <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> Hi, I cannot confirm this behavior. Can you paste a code snippet to reproduce the error? Am 05.09.2013 um 15:30 schrieb Sigmund : > Hey! > > I noticed that there is no 2D array support anymore in the 0.8 release. Neither in morphology.is_local_max() nor in the feature.peak_local_max() Is this on purpose? > If yes, a meaningful error massage would be cool. > > Thanks > > Siggi > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From chintaksheth at gmail.com Thu Sep 5 06:07:17 2013 From: chintaksheth at gmail.com (Chintak Sheth) Date: Thu, 5 Sep 2013 15:37:17 +0530 Subject: GSoC Blog updated Message-ID: Hi folks, New blog posts: http://chintak.github.io/2013/08/texture-synthesis-efros-and-leung-algo/ http://chintak.github.io/2013/09/texture-and-structural-inpainting/ A ny feedback welcome. Chintak -------------- next part -------------- An HTML attachment was scrubbed... URL: From chintaksheth at gmail.com Thu Sep 5 06:44:13 2013 From: chintaksheth at gmail.com (Chintak Sheth) Date: Thu, 5 Sep 2013 16:14:13 +0530 Subject: GSoC Blog updated In-Reply-To: <15D9F4B3-E405-42D9-98C5-8F0D00ECD0CD@demuc.de> References: <15D9F4B3-E405-42D9-98C5-8F0D00ECD0CD@demuc.de> Message-ID: Yes, especially Criminisi's algorithm is amazing. Thanks! :) On Thu, Sep 5, 2013 at 4:11 PM, Johannes Sch?nberger wrote: > Hi Chintak, > > The quality of the results looks very impressing! > > Am 05.09.2013 um 12:07 schrieb Chintak Sheth : > > > Hi folks, > > > > New blog posts: > > > > http://chintak.github.io/2013/08/texture-synthesis-efros-and-leung-algo/ > > > > http://chintak.github.io/2013/09/texture-and-structural-inpainting/ > > > > Any feedback welcome. > > Chintak > > > > -- > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > > For more options, visit https://groups.google.com/groups/opt_out. > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- Thanks, Chintak Sheth *scikit-image (Google Summer of Code, 2013)* Resume: http://chintak.github.io/files/Chintak_Sheth_Resume.pdf -------------- next part -------------- An HTML attachment was scrubbed... URL: From google at terre-adelie.org Thu Sep 5 10:19:18 2013 From: google at terre-adelie.org (Jerome Kieffer) Date: Thu, 5 Sep 2013 16:19:18 +0200 Subject: GSoC Blog updated In-Reply-To: References: <20130905134932.6127e89b.google@terre-adelie.org> Message-ID: <20130905161918.7e112a09.google@terre-adelie.org> On Thu, 5 Sep 2013 17:46:03 +0530 Chintak Sheth wrote: > Hi Jerome > > Could you send me a couple of image samples ? I'd love to see if we can do > better than GIMP. :D here is one: http://forge.epn-campus.eu/attachments/download/1883/Pilatus1M.edf There are some concentric, continuous rings but some parts of the detector is missing. Under debian, to read the data: sudo apt-get install python-fabio ipython >>> import fabio >>> data = fabio.open("Pilatus1M.edf").data >>> mask = data<0 > However, the two posts are essentially for Texture Synthesis in the sense > that it will be able to beautifully reconstruct the damaged portion if it > already exists in the image. Ive also implemented Fast Marching Method > algorithm which is essentially a Structural inpainting algorithm. PR #663 > (in case you want to check it out) My computer is just heating one the problem :) -- Jerome Kieffer From guillaume at mitotic-machine.org Thu Sep 5 10:19:34 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Thu, 05 Sep 2013 16:19:34 +0200 Subject: morphology.is_local_maximum --> feature.peak_local_max In-Reply-To: <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> References: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> Message-ID: <522892F6.90200@mitotic-machine.org> I think the API changed a little bit, I stumble on this a few weeks ago... You mean 2D support for the output don't you? peak_local_max default is to pass the indices, when is_local_maximum was giving a bool area So if you pass `indices=False` to peak_local_max it gives you the 2D output... I'm not sure this was your pb though... G. Le 05/09/2013 15:37, Johannes Sch?nberger a ?crit : > Hi, > > I cannot confirm this behavior. Can you paste a code snippet to reproduce the error? > > Am 05.09.2013 um 15:30 schrieb Sigmund : > >> Hey! >> >> I noticed that there is no 2D array support anymore in the 0.8 release. Neither in morphology.is_local_max() nor in the feature.peak_local_max() Is this on purpose? >> If yes, a meaningful error massage would be cool. >> >> Thanks >> >> Siggi >> >> -- >> You received this message because you are subscribed to the Google Groups "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. From jni.soma at gmail.com Thu Sep 5 02:49:40 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Thu, 5 Sep 2013 16:49:40 +1000 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: Hi Payal, I think you're misunderstanding the purpose of "find_boundaries"... Not quite your fault since the documentation is pretty sparse there. I'll use my favourite fuzzball as an example: [image: Inline image 1] "find_boundaries" is meant to take in a segmentation, which is an image in which each region has a different integer label, like this one: [image: Inline image 2] Then, find_boundaries merely looks for pixels where the neighbouring labels are different: [image: Inline image 3] It's not doing any edge detection per se, it's just a tool for displaying segmentations when it is easier to look at edges than at regions (above). I think what you are after is edge detection? Maybe an image like this one: [image: Inline image 4] ? For that, you should directly use the edge detection algorithms, such as Sobel or Canny, without previously thresholding your image. Have a close look at the examples gallery to figure out if any are close to what you are after, and try to apply the code there to your own image: http://scikit-image.org/docs/dev/auto_examples/ Some of the more pertinent ones, I think: http://scikit-image.org/docs/dev/auto_examples/plot_canny.html http://scikit-image.org/docs/dev/auto_examples/plot_edge_filter.html http://scikit-image.org/docs/dev/auto_examples/plot_join_segmentations.html http://scikit-image.org/docs/dev/auto_examples/plot_label.html http://scikit-image.org/docs/dev/auto_examples/plot_marked_watershed.html http://scikit-image.org/docs/dev/auto_examples/plot_random_walker_segmentation.html http://scikit-image.org/docs/dev/auto_examples/plot_watershed.html http://scikit-image.org/docs/dev/auto_examples/applications/plot_coins_segmentation.html Note that in the edge detection examples, Canny/Sobel is applied to the image *before* any thresholding ? unlike the example code you provided. Juan. On Wed, Sep 4, 2013 at 5:31 PM, Payal Gupta wrote: > hello everyone... > i will try this code,in this i want to do read a image then do edge > detection after that find the boundaries of image object. but > find_boundaries return me a bool array but i need a integer array. is it > any solution of this. > > > code:: > > import Image > > from skimage import segmentation as seg,io,filter > > imge = io.imread("IMG_1.jpg") > > thresh = filter.threshold_otsu(imge) > > binary = imge> thresh > > edge_canny = filter.canny(binary) > > bimg =seg.find_boundaries(binary) > > print(bimg) > > fig, (ax0, ax1) = plt.subplots(ncols=2) > > ax0.imshow(bimg,cmap=plt.cm.gray) > ax1.imshow(binary,cmap=plt.cm.gray) > > > On Tue, Sep 3, 2013 at 7:42 PM, St?fan van der Walt wrote: > >> >> On 3 Sep 2013 11:45, "Payal Gupta" wrote: >> > >> > thanks it working but i confused when i use function of skimage >> library. i want to change rgb image to a graylevel image but inbuilt >> function rgb2gray not convert gray level image. >> > reply. >> >> If you want help on this list, please provide code examples of what you >> are attempting. >> >> St?fan >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "scikit-image" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >> To unsubscribe from this group and all of its topics, send an email to >> scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: boundary_im.png Type: image/png Size: 3072 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: label_im.png Type: image/png Size: 2610 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screen Shot 2013-09-05 at 4.09.48 PM.png Type: image/png Size: 507844 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 159022.jpg Type: image/jpeg Size: 19541 bytes Desc: not available URL: From kmichael.aye at gmail.com Thu Sep 5 19:51:23 2013 From: kmichael.aye at gmail.com (Michael Aye) Date: Thu, 5 Sep 2013 16:51:23 -0700 (PDT) Subject: uniform_filter not working with NANs present? In-Reply-To: References: <26edbc93-973a-48e9-8c79-cf9fc0c9763a@googlegroups.com> Message-ID: On Wednesday, September 4, 2013 10:44:21 PM UTC-7, Juan Nunez-Iglesias wrote: > > Hi Michael, > > It makes a lot of sense that this would fail, but skimage.filter.rank.meanhas a `mask` keyword argument that can do what you want. However, it only > works for uint8 or uint16 images, *and* if I remember correctly, it will > be much slower if values exceed 12 bits, that is, your image intensity > values should be in [0, 4096). > > Hi! Thanks for your reply! Could you explain why it makes sense that the uniform_filter fails in my example? Using a window of 3, I expect the following in this simple 1d example: input: [nan, 1, 2, 3, 4, 5, nan] output: [nan, nan, 2, 3, 4, nan, nan] Why should this not work? Michael >>> from skimage.filter import rank > >>> arr = array([[np.nan, 1, 2, 3, 4, 5, np.nan]]) # make sure this is 2D > >>> selem = np.ones((3, 3)) > >>> arr_mean1 = rank.mean(arr.astype(np.uint8), selem) > >>> arr_mean1 > array([[0, 1, 2, 3, 4, 3, 2]], dtype=uint8) > > >>> arr.astype(np.uint8) # nan's are actually converted to 0... Not good! > array([[0, 1, 2, 3, 4, 5, 0]], dtype=uint8) > > >>> nan_mask = True - np.isnan(arr) > >>> arr_mean2 = rank.mean(arr.astype(np.uint8), selem, mask=nan_mask) > >>> arr_mean2 # using the nan mask produces the correct output > array([[1, 1, 2, 3, 4, 4, 5]], dtype=uint8) > > > Hope this helps! > > Juan. > > > On Mon, Sep 2, 2013 at 10:12 PM, Michael Aye > > wrote: > >> Hi! >> >> I am trying to use ndimage's uniform_filter (for a simple local mean >> filtering) on a map-projected image that has NAN's at the border (basically >> the corners where the rotated map projected image does not fit into the >> rectangular grid). >> Is there a way, maybe in skimage, to use a uniform_filter on an array >> that contains NANs? ndimage' version does not cope with it correctly: >> >> > arr = array([np.nan, 1,2,3,4,5,np.nan]) >> > arr >> >> array([ nan, 1., 2., 3., 4., 5., nan]) >> >> > nd.filters.uniform_filter(arr, 3) >> >> array([ nan, nan, nan, nan, nan, nan, nan]) >> >> >> Cheers, >> >> Michael >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image... at googlegroups.com . >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From chintaksheth at gmail.com Thu Sep 5 07:45:51 2013 From: chintaksheth at gmail.com (Chintak Sheth) Date: Thu, 5 Sep 2013 17:15:51 +0530 Subject: GSoC Blog updated In-Reply-To: References: <15D9F4B3-E405-42D9-98C5-8F0D00ECD0CD@demuc.de> Message-ID: Johannes, if possible please review the code and tell me if there can be any improvements. :D I'd love to be able to get all three PRs merged and consolidate them before GSOC is over. Chintak On Sep 5, 2013 4:33 PM, "Johannes Sch?nberger" wrote: > > The quality of the results looks very impressing! > > ? impressive ? :-) > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From google at terre-adelie.org Thu Sep 5 11:44:38 2013 From: google at terre-adelie.org (Jerome Kieffer) Date: Thu, 5 Sep 2013 17:44:38 +0200 Subject: Sift on GPU In-Reply-To: <41a3591f-2856-4c76-bcc9-a33b40e0a24f@googlegroups.com> References: <20130612225102.dae0cb98ca059395fe4ba22b@terre-adelie.org> <41a3591f-2856-4c76-bcc9-a33b40e0a24f@googlegroups.com> Message-ID: <20130905174438.12f4701e.google@terre-adelie.org> On Fri, 14 Jun 2013 02:36:39 -0700 (PDT) Marc de Klerk wrote: > Hi J?r?me, > > I cloned the repo and tried running test_all.py, > Seems there are a couple bugs in test_image_functions.py that prevent it > from executing properly. > > Is there an example somewhere that I can play with/ > Hi Marc, We have fixed most tests ... under linux+pyopencl+GPU nvidia (fermi+kepler) * With AMD/intel on CPU driver some tests don't pass (but the library is functional and working) * With NVidia GT200 few kernel crashes (but the library is functional and working) * With Nvidia 9600 many kernel are crashing but the library is able to use CPU kernels * With elder nvidia cards where atomic operation do not exist at all, no way to get it working. The problem we encounter is that kernel designed for GPU do not behave properly under CPU and vice-versa. This is fully untested with other platforms like windows or macosX and with ATI graphic cards but feed-back would be welcome. To run the tests: run test/test_all.py to have a small demo: run test/demo_match.py There is comprehensive sphinx doc. The repository should now be: https://github.com/kif/sift_pyocl Cheers, -- Jerome Kieffer From chintaksheth at gmail.com Thu Sep 5 08:16:03 2013 From: chintaksheth at gmail.com (Chintak Sheth) Date: Thu, 5 Sep 2013 17:46:03 +0530 Subject: GSoC Blog updated In-Reply-To: <20130905134932.6127e89b.google@terre-adelie.org> References: <20130905134932.6127e89b.google@terre-adelie.org> Message-ID: Hi Jerome Could you send me a couple of image samples ? I'd love to see if we can do better than GIMP. :D However, the two posts are essentially for Texture Synthesis in the sense that it will be able to beautifully reconstruct the damaged portion if it already exists in the image. Ive also implemented Fast Marching Method algorithm which is essentially a Structural inpainting algorithm. PR #663 (in case you want to check it out) Chintak On Sep 5, 2013 5:19 PM, "Jerome Kieffer" wrote: > On Thu, 5 Sep 2013 15:37:17 +0530 > Chintak Sheth wrote: > > > Hi folks, > > > > New blog posts: > > > > http://chintak.github.io/2013/08/texture-synthesis-efros-and-leung-algo/ > > > > http://chintak.github.io/2013/09/texture-and-structural-inpainting/ > > > > A > > ny feedback welcome. > > It looks impressive. > I wonder how it compares to the resynthetizer plugin in GIMP. > Because I just tested Resynthetize this morning on diffraction images > where pieces were missing and the results were disappointing. > > Indeed my problem is strange as I am looking for contiguous regions > with a camera containing many holes (about 10%) and most algorithm > fail on those image due to those holes. > > Cheers. > > -- > Jerome Kieffer > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From siggin at gmail.com Fri Sep 6 04:39:06 2013 From: siggin at gmail.com (Sigmund) Date: Fri, 6 Sep 2013 01:39:06 -0700 (PDT) Subject: morphology.is_local_maximum --> feature.peak_local_max In-Reply-To: <522892F6.90200@mitotic-machine.org> References: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> <522892F6.90200@mitotic-machine.org> Message-ID: I'm using the Enthough Canopy 2.7.3 distribution. >>> import skimage >>> skimage.version.version '0.8.2' >>> *the is_local_maximum function* >>> import numpy as np >>> from skimage.morphology import is_local_maximum >>> a = np.zeros(5) >>> a[2] = 2 >>> is_local_maximum(a) Traceback (most recent call last): File "", line 1, in File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\_shared\utils.py", line 41, in wrapped return func(*args, **kwargs) File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\morphology\watershed.py", line 297, in is_local_maximum indices=False, exclude_border=False) File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", line 153, in peak_local_max out[coordinates[:, 0], coordinates[:, 1]] = True IndexError: index 1 is out of bounds for axis 1 with size 1 >>> *the peak_local_max function* >>> import numpy as np >>> from skimage.feature import peak_local_max >>> a = np.zeros(5) >>> a[2]= 2 >>> >>> a array([ 0., 0., 2., 0., 0.]) >>> peak_local_max(a) Traceback (most recent call last): File "", line 1, in File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", line 136, in peak_local_max image[:, :min_distance] = 0 IndexError: too many indices >>> Thank you for your help! -------------- next part -------------- An HTML attachment was scrubbed... URL: From guillaume at mitotic-machine.org Fri Sep 6 05:13:26 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Fri, 06 Sep 2013 11:13:26 +0200 Subject: morphology.is_local_maximum --> feature.peak_local_max In-Reply-To: References: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> <522892F6.90200@mitotic-machine.org> Message-ID: <52299CB6.7060305@mitotic-machine.org> Ok so **1D** is not supported... I guess if you just do: a = np.atleast_2D(a) before calling is_local_maximum it will be correct... Cheers Guillaume On 06/09/2013 10:39, Sigmund wrote: > I'm using the Enthough Canopy 2.7.3 distribution. > > >>> import skimage > >>> skimage.version.version > '0.8.2' > >>> > > > *the is_local_maximum function* > >>> import numpy as np > >>> from skimage.morphology import is_local_maximum > >>> a = np.zeros(5) > >>> a[2] = 2 > >>> is_local_maximum(a) > Traceback (most recent call last): > File "", line 1, in > File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\_shared\utils.py", > line 41, in wrapped > return func(*args, **kwargs) > File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\morphology\watershed.py", > line 297, in is_local_maximum > indices=False, exclude_border=False) > File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", > line 153, in peak_local_max > out[coordinates[:, 0], coordinates[:, 1]] = True > IndexError: index 1 is out of bounds for axis 1 with size 1 > >>> > > *the peak_local_max function* > > >>> import numpy as np > >>> from skimage.feature import peak_local_max > >>> a = np.zeros(5) > >>> a[2]= 2 > >>> > >>> a > array([ 0., 0., 2., 0., 0.]) > >>> peak_local_max(a) > Traceback (most recent call last): > File "", line 1, in > File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", > line 136, in peak_local_max > image[:, :min_distance] = 0 > IndexError: too many indices > >>> > > Thank you for your help! > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsch at demuc.de Fri Sep 6 06:34:57 2013 From: jsch at demuc.de (=?iso-8859-1?Q?Johannes_Sch=F6nberger?=) Date: Fri, 6 Sep 2013 12:34:57 +0200 Subject: morphology.is_local_maximum --> feature.peak_local_max In-Reply-To: <52299CB6.7060305@mitotic-machine.org> References: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> <522892F6.90200@mitotic-machine.org> <52299CB6.7060305@mitotic-machine.org> Message-ID: Could you file a bug report on github? Am 06.09.2013 um 11:13 schrieb Guillaume Gay : > Ok so **1D** is not supported... > > I guess if you just do: > > a = np.atleast_2D(a) before calling is_local_maximum it will be correct... > > Cheers > > Guillaume > On 06/09/2013 10:39, Sigmund wrote: >> I'm using the Enthough Canopy 2.7.3 distribution. >> >> >>> import skimage >> >>> skimage.version.version >> '0.8.2' >> >>> >> >> >> the is_local_maximum function >> >>> import numpy as np >> >>> from skimage.morphology import is_local_maximum >> >>> a = np.zeros(5) >> >>> a[2] = 2 >> >>> is_local_maximum(a) >> Traceback (most recent call last): >> File "", line 1, in >> File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\_shared\utils.py", line 41, in wrapped >> return func(*args, **kwargs) >> File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\morphology\watershed.py", line 297, in is_local_maximum >> indices=False, exclude_border=False) >> File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", line 153, in peak_local_max >> out[coordinates[:, 0], coordinates[:, 1]] = True >> IndexError: index 1 is out of bounds for axis 1 with size 1 >> >>> >> >> the peak_local_max function >> >> >>> import numpy as np >> >>> from skimage.feature import peak_local_max >> >>> a = np.zeros(5) >> >>> a[2]= 2 >> >>> >> >>> a >> array([ 0., 0., 2., 0., 0.]) >> >>> peak_local_max(a) >> Traceback (most recent call last): >> File "", line 1, in >> File "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", line 136, in peak_local_max >> image[:, :min_distance] = 0 >> IndexError: too many indices >> >>> >> >> Thank you for your help! >> -- >> You received this message because you are subscribed to the Google Groups "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. > > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From silvertrumpet999 at gmail.com Fri Sep 6 19:24:25 2013 From: silvertrumpet999 at gmail.com (Josh Warner) Date: Fri, 6 Sep 2013 16:24:25 -0700 (PDT) Subject: morphology.is_local_maximum --> feature.peak_local_max In-Reply-To: References: <1097b891-9b1b-423c-9ef1-2ef3e49b3201@googlegroups.com> <6C1761C9-C685-4B10-BBB3-95A3F8B9A591@demuc.de> <522892F6.90200@mitotic-machine.org> <52299CB6.7060305@mitotic-machine.org> Message-ID: <0fba1048-4d16-4cf3-9c0a-cb267fd3ba7d@googlegroups.com> I authored the changes. Prior to 0.8 there were two entirely separate peak-finding algorithms, and we decided to pick the better performing one and merge them into a single backend with backwards-compatible front ends. I believe one is deprecated and could now be removed pre-0.9. At the time the goal was to match the old API exactly. It appears there isn't an input check for rank-2+ arrays, but in a general sense we might want to consider generalizing it to n-dimensional support. It uses scipy.ndimage.maximum_filter under the hood, so I think our wrapper is the limiting factor. On Friday, September 6, 2013 5:34:57 AM UTC-5, Johannes Sch?nberger wrote: Could you file a bug report on github? > > Am 06.09.2013 um 11:13 schrieb Guillaume Gay >: > > > > Ok so **1D** is not supported... > > > > I guess if you just do: > > > > a = np.atleast_2D(a) before calling is_local_maximum it will be > correct... > > > > Cheers > > > > Guillaume > > On 06/09/2013 10:39, Sigmund wrote: > >> I'm using the Enthough Canopy 2.7.3 distribution. > >> > >> >>> import skimage > >> >>> skimage.version.version > >> '0.8.2' > >> >>> > >> > >> > >> the is_local_maximum function > >> >>> import numpy as np > >> >>> from skimage.morphology import is_local_maximum > >> >>> a = np.zeros(5) > >> >>> a[2] = 2 > >> >>> is_local_maximum(a) > >> Traceback (most recent call last): > >> File "", line 1, in > >> File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\_shared\utils.py", > line 41, in wrapped > >> return func(*args, **kwargs) > >> File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\morphology\watershed.py", > line 297, in is_local_maximum > >> indices=False, exclude_border=False) > >> File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", > line 153, in peak_local_max > >> out[coordinates[:, 0], coordinates[:, 1]] = True > >> IndexError: index 1 is out of bounds for axis 1 with size 1 > >> >>> > >> > >> the peak_local_max function > >> > >> >>> import numpy as np > >> >>> from skimage.feature import peak_local_max > >> >>> a = np.zeros(5) > >> >>> a[2]= 2 > >> >>> > >> >>> a > >> array([ 0., 0., 2., 0., 0.]) > >> >>> peak_local_max(a) > >> Traceback (most recent call last): > >> File "", line 1, in > >> File > "c:\users\neher\appdata\local\enthought\canopy\user\lib\site-packages\skimage\feature\peak.py", > line 136, in peak_local_max > >> image[:, :min_distance] = 0 > >> IndexError: too many indices > >> >>> > >> > >> Thank you for your help! > >> -- > >> You received this message because you are subscribed to the Google > Groups "scikit-image" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image... at googlegroups.com . > >> For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image... at googlegroups.com . > > For more options, visit https://groups.google.com/groups/opt_out. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Fri Sep 6 08:23:57 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Fri, 6 Sep 2013 22:23:57 +1000 Subject: uniform_filter not working with NANs present? In-Reply-To: References: <26edbc93-973a-48e9-8c79-cf9fc0c9763a@googlegroups.com> Message-ID: On Fri, Sep 6, 2013 at 9:51 AM, Michael Aye wrote: > Hi! > Thanks for your reply! > Could you explain why it makes sense that the uniform_filter fails in my > example? Using a window of 3, I expect the following in this simple 1d > example: > > input: [nan, 1, 2, 3, 4, 5, nan] > > output: [nan, nan, 2, 3, 4, nan, nan] > > Why should this not work? > You're right. =) But I suspect that they are doing something fancy like a rolling mean for efficiency. So, once a nan gets in there, it stays there. What happens when you remove the front nan? -------------- next part -------------- An HTML attachment was scrubbed... URL: From amueller at ais.uni-bonn.de Tue Sep 10 03:43:24 2013 From: amueller at ais.uni-bonn.de (Andreas Mueller) Date: Tue, 10 Sep 2013 09:43:24 +0200 Subject: Sift on GPU In-Reply-To: <20130612225102.dae0cb98ca059395fe4ba22b@terre-adelie.org> References: <20130612225102.dae0cb98ca059395fe4ba22b@terre-adelie.org> Message-ID: <522ECD9C.5050303@ais.uni-bonn.de> Hi Jerome. Have you benched against vl_feat. They have pretty optimized C code, and I think it would be very interesting to see if you are faster. Their code is also BSD, btw. Cheers, Andy On 06/12/2013 10:51 PM, J?r?me Kieffer wrote: > Dear Pythonistas, > > We are porting the SIFT keypoints extraction algorithm (available from IPOL) > to GPU using PyOpenCL. For the moment, the keypoint location works and > shows a speed-up of 5 to 10x (without tuning so far, vs C++). > > A lot of work is remaining, especially: > * limit the memory footprint (700MB/10Mpix image currently) > * calculate the descriptor for each descriptor > * keypoint matching and image alignment. > * best interleave of IO/CPU/GPU > but we managed to port the most trickiest part to OpenCL (without using > textures, which makes it running also on multi-core). > > I would like to thank the people who published their algorithm on IPOL; > making unit testing possible. > > Last but not least, the code is open source and should have a BSD > licence (even if there is a patent on the algorithm in the USA). > https://github.com/pierrepaleo/sift_pyocl > > Cheers, > From google at terre-adelie.org Tue Sep 10 08:23:27 2013 From: google at terre-adelie.org (Jerome Kieffer) Date: Tue, 10 Sep 2013 14:23:27 +0200 Subject: Sift on GPU In-Reply-To: <522ECD9C.5050303@ais.uni-bonn.de> References: <20130612225102.dae0cb98ca059395fe4ba22b@terre-adelie.org> <522ECD9C.5050303@ais.uni-bonn.de> Message-ID: <20130910142327.676d4a1d.google@terre-adelie.org> On Tue, 10 Sep 2013 09:43:24 +0200 Andreas Mueller wrote: > Hi Jerome. > Have you benched against vl_feat. > They have pretty optimized C code, and I think it would be very > interesting to see > if you are faster. Their code is also BSD, btw. Hello Andreas, Thanks for the link. This is the first time I use matlab ... so the comparison is likely to be unfair: I = imread(fullfile(vl_root,'data','roofs1.jpg')) ; t=cputime;[f,d] = vl_sift(single(rgb2gray(I))) ;e=cputime-t e=0.9600 under python: In [1]: import scipy.misc,sift In [2]: img = scipy.misc.imread("roofs1.jpg") In [3]: sift_gpu = sift.SiftPlan(template=img,devicetype="GPU") In [4]: %timeit kp = sift_gpu.keypoints(img) 10 loops, best of 3: 87 ms per loop In [5]: sift_cpu = sift.SiftPlan(template=img,devicetype="CPU") #selects Intel driver In [6]: %timeit kp = sift_cpu.keypoints(img) 1 loops, best of 3: 216 ms per loop In [7]: sift_cpu_amd = sift.SiftPlan(template=img,device=(1,0)) #selects AMD driver, computer specific In [8]: %timeit kp = sift_cpu_amd.keypoints(img) 1 loops, best of 3: 225 ms per loop The computer is a dual Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz (fast) but with a moderate graphics card Quadro 2000 On my GeForce Titan (GK110) I got: 10 loops, best of 3: 38.7 ms per loop A rough and unfair comparison would say our code is 25x faster; but the test has been made on a rather small image (640x478) which does not allow the GPU to express it's speed. On the other hand if the could would have run on my computer it would be worse (my CPU is only 2.2GHz). You says vl_feet is optimized, it looks slower than the one from IPOL wrapped under python https://github.com/kif/imageAlignment In [9]: import feature In [10]: %timeit feature.sift_keypoints(img.max(axis=-1)) 1 loops, best of 3: 687 ms per loop Comments are welcome. Cheers, -- Jerome Kieffer From riaanvddool at gmail.com Wed Sep 11 02:20:22 2013 From: riaanvddool at gmail.com (Riaan van den Dool) Date: Tue, 10 Sep 2013 23:20:22 -0700 (PDT) Subject: Dividing a large image into smaller overlapping blocks for parallel processing In-Reply-To: <3e5b6b7d-622f-4d11-986a-46479198904a@googlegroups.com> References: <7de7cf83-88c8-4cae-9d7d-f6353ae19e7c@googlegroups.com> <42B009F4-ECA8-4A51-B5BF-9301816FE55B@demuc.de> <2E832B8F-9998-4FF7-8023-9347AA0C1838@demuc.de> <014c394d-58ec-4e18-8960-2b21f76e940f@googlegroups.com> <3e5b6b7d-622f-4d11-986a-46479198904a@googlegroups.com> Message-ID: <958e5fb4-8bdf-40e1-a46b-d7c85a10c002@googlegroups.com> The current state of the PR looks promising. I have added a comment with some points for discussion around design choices. https://github.com/scikit-image/scikit-image/pull/723#issuecomment-24189987 R On Wednesday, September 4, 2013 6:06:24 AM UTC+2, Riaan van den Dool wrote: > > Yes Colin, I saw, and I have commented on the PR as well. > > I am submitting this as an alternative approach, because I am not sure > that the approach you took is 100% in line with what I need. > > R > > On Wednesday, September 4, 2013 3:23:15 AM UTC+2, Colin Lea wrote: >> >> Thanks Riaan, I've already made a PR for this. See here: >> https://github.com/scikit-image/scikit-image/pull/723/ >> >> On Tuesday, September 3, 2013 3:27:51 PM UTC-4, Riaan van den Dool wrote: >>> >>> I have created a gist with my thoughts of what such a function could >>> look like. >>> >>> https://gist.github.com/riaanvddool/6428299 >>> >>> The examples shown are a bit contrived, with border_size=(0,0) and >>> non-overlapping 'rolling' windows, but the idea should be clear I think. >>> >>> The proc_func function can either process and return a value >>> synchronously, or create a separate job/process for each window, depending >>> on implementation. By keeping this logic separate from the windowing >>> function any multiprocessing-type solution can be used according to >>> preference. In the case of asynchronous processing the results tuple will >>> either be filled with None, or any other value returned by proc_func, ie it >>> will not be the asynchronous result itself and the proc_func will have to >>> implement a way for the asynchronous results to be returned when available >>> (callback function as an example). >>> >>> Your thoughts? >>> >>> Riaan >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> On Sunday, September 1, 2013 7:25:46 PM UTC+2, Johannes Sch?nberger >>> wrote: >>>> >>>> Great! >>>> >>>> Am 01.09.2013 um 17:53 schrieb Colin Lea : >>>> >>>> > I just made a function blocproc to do this. I'll add a pull request >>>> later today. It works in a similar way as the matlab feature. >>>> > >>>> > >>>> > >>>> > On Sunday, September 1, 2013 5:37:22 AM UTC-4, Johannes Sch?nberger >>>> wrote: >>>> > Yes that should be very useful. Nevertheless, I think a function like >>>> Matlab's blockproc would be a really good addition. >>>> > >>>> > Am 01.09.2013 um 11:34 schrieb St?fan van der Walt : >>>> >>>> > >>>> > > On Sat, Aug 31, 2013 at 8:17 PM, Johannes Sch?nberger < >>>> js... at demuc.de> wrote: >>>> > >> - pad image with skimage.util.pad, which allows a large number of >>>> padding methods >>>> > >> - spawn a pool of processes using Python's multiprocessing package >>>> in the standard library >>>> > >> - use shared memory to provide read access to complete image >>>> > >> - define slices of image blocks and add them to a processing queue >>>> > > >>>> > > How about we add an `overlap` parameter to >>>> > > `skimage.utill.view_as_windows`? That should solve this problem. >>>> > > >>>> > > St?fan >>>> > > >>>> > > -- >>>> > > You received this message because you are subscribed to the Google >>>> Groups "scikit-image" group. >>>> > > To unsubscribe from this group and stop receiving emails from it, >>>> send an email to scikit-image... at googlegroups.com. >>>> > > For more options, visit https://groups.google.com/groups/opt_out. >>>> > > >>>> > >>>> > >>>> > -- >>>> > You received this message because you are subscribed to the Google >>>> Groups "scikit-image" group. >>>> > To unsubscribe from this group and stop receiving emails from it, >>>> send an email to scikit-image... at googlegroups.com. >>>> > For more options, visit https://groups.google.com/groups/opt_out. >>>> >>>> -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Wed Sep 11 04:19:35 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Wed, 11 Sep 2013 13:49:35 +0530 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: hello everyone... i used find_contour function which returns a 2D ndarray . i can't understand the return array so any body help me. *program :* image = io.imread("IMG_2.jpg") thresh = filter.threshold_otsu(image) binary = image > thresh imag= color.colorconv.rgb2grey(binary) img = array(imag) edge_canny = canny(img) edge_sobel = sobel(img) contours = measure.find_contours(imag,0.9,'high') print contours fig, (ax0, ax1) = plt.subplots(ncols=2) ax0.imshow(imag ,cmap=plt.cm.gray) ax0.set_title('Roberts Edge Detection') ax0.axis('off') ax1.imshow(edge_canny, cmap=plt.cm.gray) ax1.set_title('Sobel Edge Detection') ax1.axis('off') *returns array:* [array([[ 135. , 72.9 ], [ 134. , 72.9 ], [ 133. , 72.9 ], ..., [ 1. , 21.52941176], [ 0.47058824, 21. ], [ 0. , 20.9 ]]), array([[ 0. , 104.35137034], [ 1. , 104.35137034], [ 1.64862966, 105. ], [ 2. , 105.1 ], [ 3. , 105.35137034], [ 3.1 , 105. ], [ 3.1 , 104. ], [ 3.1 , 103. ], [ 4. , 102.1 ], [ 4.1 , 102. ], [ 5. , 101.1 ], [ 5.9 , 102. ], [ 6. , 102.1 ], [ 7. , 102.1 ], [ 8. , 102.1 ], [ 8.1 , 102. ], [ 9. , 101.1 ], [ 9.1 , 101. ], [ 10. , 100.1 ], [ 11. , 100.1 ], [ 11.1 , 100. ], [ 12. , 99.1 ], [ 13. , 99.1 ], [ 13.9 , 100. ], [ 13.9 , 101. ], [ 13.89222977, 102. ], [ 13. , 102.89222977], [ 12. , 102.89222977], [ 11.10777023, 102. ], [ 11. , 101.9 ], [ 10.9 , 102. ], [ 10.9 , 103. ], [ 10.9 , 104. ], [ 10.9 , 105. ], [ 10. , 105.9 ], [ 9.9 , 106. ], [ 10. , 106.1 ], [ 11. , 106.1 ], [ 12. , 106.1 ], [ 13. , 106.1 ], [ 14. , 106.1 ], [ 15. , 106.1 ], [ 16. , 106.35137034], [ 16.64862966, 107. ], [ 17. , 107.1 ], [ 18. , 107.1 ], [ 18.1 , 107. ], [ 19. , 106.1 ], [ 19.1 , 106. ], [ 20. , 105.1 ], [ 20.1 , 105. ], [ 20. , 104.9 ], [ 19. , 104.9 ], [ 18. , 104.9 ], [ 17.9 , 105. ], [ 17. , 105.9 ], [ 16. , 105.9 ], [ 15.1 , 105. ], [ 15. , 104.9 ], [ 14.1 , 104. ], [ 14. , 103.9 ], [ 13.1 , 103. ], [ 14. , 102.1 ], [ 14.1 , 102. ], [ 14.1 , 101. ], [ 15. , 100.1 ], [ 15.1 , 100. ], [ 16. , 99.1 ], [ 16.1 , 99. ], [ 17. , 98.1 ], [ 18. , 98.10777023], [ 18.89222977, 99. ], [ 18. , 99.89222977], [ 17.9 , 100. ], [ 17.9 , 101. ], [ 18. , 101.1 ], [ 18.9 , 102. ], [ 18.9 , 103. ], [ 19. , 103.1 ], [ 19.1 , 103. ], [ 19.1 , 102. ], [ 19.1 , 101. ], [ 19.1 , 100. ], [ 19.35137034, 99. ], [ 20. , 98.35137034], [ 20.64862966, 99. ], [ 21. , 99.1 ], [ 22. , 99.1 ], [ 23. , 99.1 ], [ 23.9 , 100. ], [ 24. , 100.1 ], [ 25. , 100.1 ], [ 26. , 100.1 ], [ 27. , 100.1 ], [ 27.9 , 101. ], [ 28. , 101.1 ], [ 29. , 101.1 ], [ 30. , 101.1 ], [ 31. , 101.1 ], [ 32. , 101.1 ], [ 32.9 , 102. ], [ 33. , 102.1 ], [ 34. , 102.1 ], [ 34.9 , 103. ], [ 35. , 103.1 ], [ 36. , 103.1 ], [ 37. , 103.1 ], [ 37.9 , 104. ], [ 38. , 104.1 ], [ 39. , 104.1 ], [ 40. , 104.47058824], [ 40.52941176, 105. ], [ 41. , 105.1 ], [ 42. , 105.1 ], [ 43. , 105.47058824], [ 43.52941176, 106. ], [ 44. , 106.1 ], [ 45. , 106.1 ], [ 45.9 , 107. ], [ 46. , 107.1 ], [ 47. , 107.1 ], [ 48. , 107.1 ], [ 48.9 , 108. ], [ 49. , 108.1 ], [ 50. , 108.1 ], [ 51. , 108.1 ], [ 52. , 108.1 ], [ 53. , 108.35137034], [ 53.64862966, 109. ], [ 54. , 109.1 ], [ 55. , 109.1 ], [ 56. , 109.1 ], [ 56.9 , 110. ], [ 57. , 110.1 ], [ 58. , 110.1 ], [ 59. , 110.1 ], [ 60. , 110.1 ], [ 60.9 , 111. ], [ 61. , 111.1 ], [ 62. , 111.1 ], [ 63. , 111.1 ], [ 64. , 111.1 ], [ 64.9 , 112. ], [ 65. , 112.1 ], [ 66. , 112.1 ], [ 67. , 112.1 ], [ 68. , 112.1 ], [ 68.9 , 113. ], [ 69. , 113.1 ], [ 70. , 113.1 ], [ 70.9 , 114. ], [ 70. , 114.9 ], [ 69.9 , 115. ], [ 70. , 115.1 ], [ 70.9699321 , 116. ], [ 71. , 116.0300679 ], [ 72. , 116.1 ], [ 73. , 116.1 ], [ 74. , 116.35137034], [ 74.64862966, 117. ], [ 75. , 117.1 ], [ 76. , 117.1 ], [ 77. , 117.1 ], [ 78. , 117.1 ], [ 78.9699321 , 118. ], [ 79. , 118.0300679 ], [ 80. , 118.1 ], [ 81. , 118.1 ], [ 82. , 118.1 ], [ 83. , 118.1 ], [ 83.9699321 , 119. ], [ 84. , 119.0300679 ], [ 85. , 119.1 ], [ 86. , 119.1 ], [ 87. , 119.1 ], [ 88. , 119.1 ], [ 89. , 119.1 ], [ 90. , 119.1 ], [ 91. , 119.1 ], [ 92. , 119.1 ], [ 92.9699321 , 120. ], [ 93. , 120.0300679 ], [ 93.13129412, 120. ], [ 94. , 119.35137034], [ 95. , 119.1 ], [ 96. , 119.35137034], [ 97. , 119.35137034], [ 98. , 119.35137034], [ 99. , 119.1 ], [ 100. , 119.1 ], [ 101. , 119.1 ], [ 102. , 119.1 ], [ 103. , 119.0300679 ], [ 103.13129412, 119. ], [ 103. , 118.9699321 ], [ 102. , 118.9 ], [ 101. , 118.9 ], [ 100. , 118.9 ], [ 99. , 118.9 ], [ 98. , 118.9 ], [ 97. , 118.9 ], [ 96. , 118.9 ], [ 95. , 118.64862966], [ 94. , 118.64862966], [ 93. , 118.9 ], [ 92.1 , 118. ], [ 93. , 117.1 ], [ 94. , 117.35137034], [ 95. , 117.35137034], [ 96. , 117.1 ], [ 97. , 117.1 ], [ 98. , 117.1 ], [ 99. , 117.1 ], [ 100. , 117.1 ], [ 101. , 117.1 ], [ 102. , 117.1 ], [ 103. , 117.1 ], [ 104. , 117.1 ], [ 105. , 117.1 ], [ 106. , 117.1 ], [ 107. , 117.1 ], [ 108. , 117.1 ], [ 109. , 117.1 ], [ 109.1 , 117. ], [ 110. , 116.1 ], [ 110.1 , 116. ], [ 110. , 115.9 ], [ 109. , 115.9 ], [ 108. , 115.9 ], [ 107.1 , 115. ], [ 107. , 114.9 ], [ 106. , 114.9 ], [ 105.9 , 115. ], [ 105. , 115.9 ], [ 104. , 115.9 ], [ 103. , 115.9 ], [ 102.1 , 115. ], [ 102. , 114.9 ], [ 101.1 , 114. ], [ 101.1 , 113. ], [ 101. , 112.89222977], [ 100.10777023, 112. ], [ 101. , 111.10777023], [ 101.1 , 111. ], [ 101.47058824, 110. ], [ 102. , 109.47058824], [ 102.1 , 109. ], [ 103. , 108.1 ], [ 103.1 , 108. ], [ 104. , 107.1 ], [ 105. , 107.1 ], [ 105.1 , 107. ], [ 106. , 106.1 ], [ 107. , 106.1 ], [ 108. , 106.1 ], [ 109. , 106.1 ], [ 110. , 106.1 ], [ 110.1 , 106. ], [ 111. , 105.1 ], [ 112. , 105.10777023], [ 112.89222977, 106. ], [ 112.9 , 107. ], [ 112.9 , 108. ], [ 113. , 108.47058824], [ 113.47058824, 108. ], [ 113.47058824, 107. ], [ 113.10777023, 106. ], [ 113.10777023, 105. ], [ 113.47058824, 104. ], [ 113.47058824, 103. ], [ 113.47058824, 102. ], [ 114. , 101.47058824], [ 115. , 101.47058824], [ 115.52941176, 102. ], [ 115.52941176, 103. ], [ 116. , 103.47058824], [ 116.52941176, 104. ], [ 116. , 104.52941176], [ 115.52941176, 105. ], [ 115.52941176, 106. ], [ 116. , 106.47058824], [ 116.52941176, 107. ], [ 117. , 107.47058824], [ 117.52941176, 108. ], [ 117.52941176, 109. ], [ 117.52941176, 110. ], [ 117. , 110.52941176], [ 116.52941176, 111. ], [ 117. , 111.47058824], [ 118. , 111.47058824], [ 118.52941176, 112. ], [ 118. , 112.52941176], [ 117.52941176, 113. ], [ 118. , 113.47058824], [ 119. , 113.47058824], [ 119.52941176, 114. ], [ 119.52941176, 115. ], [ 119. , 115.52941176], [ 118.52941176, 116. ], [ 119. , 116.47058824], [ 119.52941176, 117. ], [ 119.52941176, 118. ], [ 119. , 118.52941176], [ 118.47058824, 118. ], [ 118. , 117.52941176], [ 117.52941176, 118. ], [ 118. , 118.47058824], [ 118.52941176, 119. ], [ 119. , 119.47058824], [ 119.52941176, 120. ], [ 119.52941176, 121. ], [ 119.52941176, 122. ], [ 120. , 122.47058824], [ 120.52941176, 123. ], [ 120.52941176, 124. ], [ 120.52941176, 125. ], [ 120.52941176, 126. ], [ 120.52941176, 127. ], [ 120. , 127.52941176], [ 119. , 127.52941176], [ 118. , 127.52941176], [ 117.52941176, 128. ], [ 118. , 128.47058824], [ 118.52941176, 129. ]]), array([[ 3. , 27.9], [ 2.1, 27. ], [ 3. , 26.1], [ 3.9, 27. ], [ 3. , 27.9]]), array([[ 13. , 34.52941176], [ 12. , 34.9 ], [ 11. , 34.9 ], [ 10. , 34.9 ], [ 9. , 34.9 ], [ 8. , 34.9 ], [ 7. , 34.9 ], [ 6. , 34.9 ], [ 5. , 34.9 ], [ 4.1 , 34. ], [ 5. , 33.1 ], [ 6. , 33.1 ], [ 7. , 33.1 ], [ 8. , 33.1 ], [ 9. , 33.1 ], [ 10. , 33.1 ], [ 11. , 33.1 ], [ 12. , 33.1 ], [ 13. , 33.47058824], [ 13.52941176, 34. ], [ 13. , 34.52941176]]), array([[ 7. , 89.9], [ 6.1, 89. ], [ 7. , 88.1], [ 7.9, 89. ], [ 7. , 89.9]]), array([[ 9.1 , 104. ], [ 9. , 103.9 ], [ 8. , 103.9 ], [ 7.9 , 104. ], [ 7. , 104.9 ], [ 6.9 , 105. ], [ 7. , 105.1 ], [ 8. , 105.1 ], [ 8.47058824, 105. ], [ 9. , 104.47058824], [ 9.1 , 104. ]]), array([[ 8. , 90.9], [ 7.1, 90. ], [ 8. , 89.1], [ 8.9, 90. ], [ 8. , 90.9]]), array([[ 10. , 91.9], [ 9. , 91.9], [ 8.1, 91. ], [ 9. , 90.1], [ 10. , 90.1], [ 10.9, 91. ], [ 10. , 91.9]]), array([[ 10.35137034, 108. ], [ 10. , 107.9 ], [ 9.9 , 108. ], [ 10. , 108.1 ], [ 10.35137034, 108. ]]), array([[ 12. , 92.9], [ 11. , 92.9], [ 10.1, 92. ], [ 11. , 91.1], [ 12. , 91.1], [ 12.9, 92. ], [ 12. , 92.9]]), array([[ 15. , 97.64862966], [ 14.9 , 98. ], [ 14. , 98.9 ], [ 13. , 98.9 ], [ 12. , 98.9 ], [ 11.1 , 98. ], [ 12. , 97.1 ], [ 13. , 97.1 ], [ 13.1 , 97. ], [ 14. , 96.1 ], [ 15. , 96.35137034], [ 15.64862966, 97. ], [ 15. , 97.64862966]]), array([[ 17.1 , 109. ], [ 17. , 108.9 ], [ 16. , 108.64862966], [ 15.35137034, 108. ], [ 15. , 107.9 ], [ 14. , 107.9 ], [ 13. , 107.9 ], [ 12. , 107.9 ], [ 11.64862966, 108. ], [ 12. , 108.1 ], [ 12.9699321 , 109. ], [ 13. , 109.0300679 ], [ 14. , 109.1 ], [ 15. , 109.1 ], [ 16. , 109.1 ], [ 17. , 109.1 ], [ 17.1 , 109. ]]), array([[ 14. , 93.9], [ 13. , 93.9], [ 12.1, 93. ], [ 13. , 92.1], [ 14. , 92.1], [ 14.9, 93. ], [ 14. , 93.9]]), array([[ 16. , 94.9], [ 15. , 94.9], [ 14.1, 94. ], [ 15. , 93.1], [ 16. , 93.1], [ 16.9, 94. ], [ 16. , 94.9]]), array([[ 19. , 35.52941176], [ 18. , 35.52941176], [ 17. , 35.52941176], [ 16. , 35.9 ], [ 15.1 , 35. ], [ 16. , 34.1 ], [ 17. , 34.47058824], [ 18. , 34.47058824], [ 19. , 34.47058824], [ 19.52941176, 35. ], [ 19. , 35.52941176]]), array([[ 18. , 95.9], [ 17. , 95.9], [ 16.1, 95. ], [ 17. , 94.1], [ 18. , 94.1], [ 18.9, 95. ], [ 18. , 95.9]]), array([[ 21. , 96.64862966], [ 20. , 96.9 ], [ 19. , 96.9 ], [ 18.1 , 96. ], [ 19. , 95.1 ], [ 20. , 95.1 ], [ 21. , 95.35137034], [ 21.64862966, 96. ], [ 21. , 96.64862966]]), array([[ 23. , 97.9], [ 22. , 97.9], [ 21.1, 97. ], [ 22. , 96.1], [ 23. , 96.1], [ 23.9, 97. ], [ 23. , 97.9]]), array([[ 25.0300679 , 103. ], [ 25.1 , 102. ], [ 25. , 101.9 ], [ 24.9 , 102. ], [ 24. , 102.9 ], [ 23.9 , 103. ], [ 23.64862966, 104. ], [ 23. , 104.64862966], [ 22.9 , 105. ], [ 22. , 105.9699321 ], [ 21.9699321 , 106. ], [ 22. , 106.0300679 ], [ 22.0300679 , 106. ], [ 23. , 105.1 ], [ 23.35137034, 105. ], [ 24. , 104.35137034], [ 24.1 , 104. ], [ 25. , 103.0300679 ], [ 25.0300679 , 103. ]]), array([[ 26. , 98.9], [ 25. , 98.9], [ 24.1, 98. ], [ 25. , 97.1], [ 26. , 97.1], [ 26.9, 98. ], [ 26. , 98.9]]), array([[ 27.0300679, 103. ], [ 27. , 102.9699321], [ 26.9699321, 103. ], [ 27. , 103.0300679], [ 27.0300679, 103. ]]), array([[ 30. , 99.52941176], [ 29. , 99.9 ], [ 28. , 99.9 ], [ 27.1 , 99. ], [ 28. , 98.1 ], [ 29. , 98.1 ], [ 30. , 98.47058824], [ 30.52941176, 99. ], [ 30. , 99.52941176]]), array([[ 31. , 69.9 ], [ 30. , 69.9 ], [ 29. , 69.52941176], [ 28.47058824, 69. ], [ 29. , 68.47058824], [ 29.1 , 68. ], [ 30. , 67.1 ], [ 31. , 67.1 ], [ 31.9 , 68. ], [ 31.9 , 69. ], [ 31. , 69.9 ]]), array([[ 76. , 94.9 ], [ 75.9 , 95. ], [ 75.9 , 96. ], [ 75.9 , 97. ], [ 75.9 , 98. ], [ 75.9 , 99. ], [ 75.9 , 100. ], [ 75.9 , 101. ], [ 75.9 , 102. ], [ 75. , 102.9 ], [ 74.9 , 103. ], [ 74.9 , 104. ], [ 74.9 , 105. ], [ 74.9 , 106. ], [ 74. , 106.9 ], [ 73.9 , 107. ], [ 73.9 , 108. ], [ 73.9 , 109. ], [ 73. , 109.9 ], [ 72.9 , 110. ], [ 72.9 , 111. ], [ 72. , 111.9 ], [ 71. , 111.9 ], [ 70. , 111.9 ], [ 69. , 111.9 ], [ 68. , 111.89222977], [ 67.10777023, 111. ], [ 67. , 110.9 ], [ 66. , 110.9 ], [ 65. , 110.9 ], [ 64.1 , 110. ], [ 64. , 109.9 ], [ 63. , 109.9 ], [ 62. , 109.9 ], [ 61. , 109.9 ], [ 60.1 , 109. ], [ 60. , 108.9 ], [ 59. , 108.9 ], [ 58. , 108.9 ], [ 57. , 108.9 ], [ 56.1 , 108. ], [ 56. , 107.9 ], [ 55. , 107.9 ], [ 54. , 107.9 ], [ 53. , 107.9 ], [ 52.1 , 107. ], [ 52. , 106.9 ], [ 51. , 106.9 ], [ 50. , 106.9 ], [ 49.1 , 106. ], [ 49. , 105.9 ], [ 48. , 105.9 ], [ 47. , 105.9 ], [ 46. , 105.52941176], [ 45.47058824, 105. ], [ 45. , 104.9 ], [ 44. , 104.9 ], [ 43. , 104.9 ], [ 42.1 , 104. ], [ 42. , 103.9 ], [ 41. , 103.9 ], [ 40. , 103.9 ], [ 39.1 , 103. ], [ 39. , 102.9 ], [ 38. , 102.9 ], [ 37. , 102.89222977], [ 36.10777023, 102. ], [ 36. , 101.9 ], [ 35. , 101.9 ], [ 34.1 , 101. ], [ 34. , 100.9 ], [ 33. , 100.52941176], [ 32. , 100.9 ], [ 31.1 , 100. ], [ 32. , 99.1 ], [ 33. , 99.47058824], [ 34. , 99.1 ], [ 34.1 , 99. ], [ 34.1 , 98. ], [ 35. , 97.1 ], [ 35.1 , 97. ], [ 35.1 , 96. ], [ 35.1 , 95. ], [ 35.1 , 94. ], [ 35.1 , 93. ], [ 35.1 , 92. ], [ 35.47058824, 91. ], [ 36. , 90.47058824], [ 36.1 , 90. ], [ 36.1 , 89. ], [ 36.1 , 88. ], [ 36.1 , 87. ], [ 36.1 , 86. ], [ 36.1 , 85. ], [ 36.1 , 84. ], [ 36.1 , 83. ], [ 36.1 , 82. ], [ 36.1 , 81. ], [ 36.1 , 80. ], [ 36.1 , 79. ], [ 36.1 , 78. ], [ 36.1 , 77. ], [ 36.1 , 76. ], [ 36.1 , 75. ], [ 36.1 , 74. ], [ 36.1 , 73. ], [ 36.1 , 72. ], [ 36.1 , 71. ], [ 36.1 , 70. ], [ 36.1 , 69. ], [ 36.1 , 68. ], [ 36.1 , 67. ], [ 36.1 , 66. ], [ 36.1 , 65. ], [ 36.1 , 64. ], [ 36.1 , 63. ], [ 36.1 , 62. ], [ 36.1 , 61. ], [ 36.1 , 60. ], [ 36.1 , 59. ], [ 36.1 , 58. ], [ 36.1 , 57. ], [ 36.1 , 56. ], [ 36.1 , 55. ], [ 36.1 , 54. ], [ 36.1 , 53. ], [ 36. , 52.52941176], [ 35.47058824, 52. ], [ 35.47058824, 51. ], [ 35.1 , 50. ], [ 35.1 , 49. ], [ 35.1 , 48. ], [ 35.1 , 47. ], [ 35.1 , 46. ], [ 35.1 , 45. ], [ 35.1 , 44. ], [ 35. , 43.9 ], [ 34.1 , 43. ], [ 34.1 , 42. ], [ 34.1 , 41. ], [ 34.1 , 40. ], [ 34.1 , 39. ], [ 34. , 38.9 ], [ 33.1 , 38. ], [ 33.1 , 37. ], [ 33. , 36.9 ], [ 32. , 36.9 ], [ 31. , 36.89222977], [ 30. , 36.52941176], [ 29.47058824, 36. ], [ 30. , 35.47058824], [ 31. , 35.10777023], [ 32. , 35.1 ], [ 33. , 35.1 ], [ 34. , 35.1 ], [ 35. , 35.1 ], [ 35.1 , 35. ], [ 36. , 34.1 ], [ 37. , 34.1 ], [ 38. , 34.1 ], [ 39. , 34.1 ], [ 39.1 , 34. ], [ 40. , 33.1 ], [ 41. , 33.1 ], [ 42. , 33.1 ], [ 43. , 33.1 ], [ 44. , 33.1 ], [ 44.47058824, 33. ], [ 45. , 32.47058824], [ 46. , 32.1 ], [ 47. , 32.1 ], [ 48. , 32.1 ], [ 49. , 32.1 ], [ 50. , 32.1 ], [ 50.1 , 32. ], [ 51. , 31.1 ], [ 52. , 31.1 ], [ 53. , 31.1 ], [ 54. , 31.1 ], [ 55. , 31.1 ], [ 55.1 , 31. ], [ 56. , 30.1 ], [ 57. , 30.1 ], [ 58. , 30.1 ], [ 59. , 30.1 ], [ 60. , 30.1 ], [ 61. , 30.1 ], [ 62. , 30.1 ], [ 62.1 , 30. ], [ 63. , 29.1 ], [ 64. , 29.1 ], [ 65. , 29.1 ], [ 66. , 29.1 ], [ 67. , 29.1 ], [ 67.47058824, 29. ], [ 68. , 28.47058824], [ 69. , 28.1 ], [ 70. , 28.1 ], [ 70.9 , 29. ], [ 70.9 , 30. ], [ 71. , 30.1 ], [ 71.9 , 31. ], [ 71.9 , 32. ], [ 72. , 32.1 ], [ 72.9 , 33. ], [ 72.9 , 34. ], [ 73. , 34.47058824], [ 73.52941176, 35. ], [ 73.9 , 36. ], [ 73.9 , 37. ], [ 73.9 , 38. ], [ 74. , 38.1 ], [ 74.9 , 39. ], [ 74.9 , 40. ], [ 74.9 , 41. ], [ 74.9 , 42. ], [ 74.9 , 43. ], [ 74.9 , 44. ], [ 75. , 44.47058824], [ 75.52941176, 45. ], [ 75.9 , 46. ], [ 75.9 , 47. ], [ 75.9 , 48. ], [ 75.9 , 49. ], [ 75.9 , 50. ], [ 75.9 , 51. ], [ 75.9 , 52. ], [ 75.9 , 53. ], [ 75.9 , 54. ], [ 75.9 , 55. ], [ 76. , 55.47058824], [ 76.52941176, 56. ], [ 76.9 , 57. ], [ 76.9 , 58. ], [ 76.9 , 59. ], [ 76.9 , 60. ], [ 76.9 , 61. ], [ 76.9 , 62. ], [ 76.9 , 63. ], [ 76.9 , 64. ], [ 76.9 , 65. ], [ 76.9 , 66. ], [ 76.9 , 67. ], [ 76.9 , 68. ], [ 76.9 , 69. ], [ 76.9 , 70. ], [ 76.9 , 71. ], [ 76.9 , 72. ], [ 76.9 , 73. ], [ 76.9 , 74. ], [ 76.9 , 75. ], [ 76.9 , 76. ], [ 76.9 , 77. ], [ 76.9 , 78. ], [ 76.9 , 79. ], [ 76.9 , 80. ], [ 76.9 , 81. ], [ 76.9 , 82. ], [ 76.9 , 83. ], [ 76.9 , 84. ], [ 76.9 , 85. ], [ 76.9 , 86. ], [ 76.9 , 87. ], [ 76.9 , 88. ], [ 76.9 , 89. ], [ 76.9 , 90. ], [ 76.9 , 91. ], [ 76.9 , 92. ], [ 76.9 , 93. ], [ 76.9 , 94. ], [ 76. , 94.9 ]]), array([[ 40.47058824, 61. ], [ 40. , 60.52941176], [ 39.47058824, 60. ], [ 39. , 59.52941176], [ 38.9 , 60. ], [ 39. , 60.47058824], [ 39.52941176, 61. ], [ 40. , 61.1 ], [ 40.47058824, 61. ]]), array([[ 48.0300679 , 13. ], [ 48. , 12.9699321 ], [ 47. , 12.9699321 ], [ 46. , 12.9 ], [ 45. , 12.9 ], [ 44.1 , 12. ], [ 44. , 11.9 ], [ 43. , 11.9 ], [ 42. , 11.9 ], [ 41.9 , 12. ], [ 41. , 12.9 ], [ 40. , 12.9 ], [ 39.64862966, 13. ], [ 40. , 13.1 ], [ 41. , 13.1 ], [ 42. , 13.1 ], [ 43. , 13.1 ], [ 44. , 13.0300679 ], [ 45. , 13.1 ], [ 46. , 13.1 ], [ 47. , 13.0300679 ], [ 48. , 13.0300679 ], [ 48.0300679 , 13. ]]), array([[ 41.1, 22. ], [ 41. , 21.9], [ 40. , 21.9], [ 39.9, 22. ], [ 40. , 22.1], [ 41. , 22.1], [ 41.1, 22. ]]), array([[ 42.1 , 79. ], [ 42.1 , 78. ], [ 42.1 , 77. ], [ 42. , 76.9 ], [ 41.1 , 76. ], [ 41. , 75.9 ], [ 40. , 75.9 ], [ 39.9 , 76. ], [ 39.9 , 77. ], [ 39.89222977, 78. ], [ 40. , 78.47058824], [ 41. , 78.47058824], [ 41.52941176, 79. ], [ 42. , 79.1 ], [ 42.1 , 79. ]]), array([[ 49.13129412, 110. ], [ 49. , 109.9699321 ], [ 48.9699321 , 110. ], [ 49. , 110.0300679 ], [ 49.13129412, 110. ]]), array([[ 50.1, 13. ], [ 50. , 12.9], [ 49.9, 13. ], [ 50. , 13.1], [ 50.1, 13. ]]), array([[ 58.0300679 , 112. ], [ 58. , 111.9699321 ], [ 57.86870588, 112. ], [ 58. , 112.0300679 ], [ 58.0300679 , 112. ]]), array([[ 60.1, 113. ], [ 60. , 112.9], [ 59.9, 113. ], [ 60. , 113.1], [ 60.1, 113. ]]), array([[ 64.1, 19. ], [ 64. , 18.9], [ 63.9, 19. ], [ 64. , 19.1], [ 64.1, 19. ]]), array([[ 70.1 , 52. ], [ 70. , 51.52941176], [ 69.52941176, 52. ], [ 70. , 52.47058824], [ 70.1 , 52. ]]), array([[ 72.35137034, 15. ], [ 72. , 14.9 ], [ 71. , 14.9 ], [ 70.9 , 15. ], [ 71. , 15.1 ], [ 72. , 15.1 ], [ 72.35137034, 15. ]]), array([[ 75.47058824, 15. ], [ 75. , 14.9 ], [ 74.64862966, 15. ], [ 75. , 15.1 ], [ 75.47058824, 15. ]]), array([[ 79.0300679, 16. ], [ 79. , 15.9699321], [ 78.9699321, 16. ], [ 79. , 16.0300679], [ 79.0300679, 16. ]]), array([[ 81. , 57.89222977], [ 80.10777023, 57. ], [ 81. , 56.10777023], [ 81.89222977, 57. ], [ 81. , 57.89222977]]), array([[ 99.10777023, 21. ], [ 99. , 20.9 ], [ 98. , 20.9 ], [ 97. , 20.52941176], [ 96.47058824, 20. ], [ 96. , 19.9 ], [ 95. , 19.9 ], [ 94. , 19.9 ], [ 93. , 19.9 ], [ 92. , 19.9 ], [ 91. , 19.9 ], [ 90. , 19.52941176], [ 89. , 19.9 ], [ 88.52941176, 20. ], [ 88. , 20.52941176], [ 87. , 20.9 ], [ 86.52941176, 21. ], [ 87. , 21.47058824], [ 88. , 21.47058824], [ 88.52941176, 22. ], [ 89. , 22.47058824], [ 90. , 22.47058824], [ 91. , 22.47058824], [ 92. , 22.47058824], [ 93. , 22.47058824], [ 93.52941176, 23. ], [ 94. , 23.1 ], [ 95. , 23.1 ], [ 95.47058824, 23. ], [ 96. , 22.47058824], [ 96.52941176, 23. ], [ 97. , 23.1 ], [ 97.47058824, 23. ], [ 98. , 22.47058824], [ 98.47058824, 22. ], [ 99. , 21.47058824], [ 99.10777023, 21. ]]), array([[ 90. , 31.9 ], [ 89.1 , 31. ], [ 89.1 , 30. ], [ 89.47058824, 29. ], [ 90. , 28.47058824], [ 90.52941176, 29. ], [ 90.9 , 30. ], [ 90.9 , 31. ], [ 90. , 31.9 ]]), array([[ 92. , 35.9 ], [ 91.1 , 35. ], [ 91. , 34.52941176], [ 90.47058824, 34. ], [ 90.1 , 33. ], [ 90.1 , 32. ], [ 91. , 31.1 ], [ 91.9 , 32. ], [ 91.9 , 33. ], [ 92. , 33.1 ], [ 92.9 , 34. ], [ 92.9 , 35. ], [ 92. , 35.9 ]]), array([[ 100. , 111.52941176], [ 99. , 111.9 ], [ 98.9 , 112. ], [ 98. , 112.9 ], [ 97. , 112.89222977], [ 96.10777023, 112. ], [ 96.1 , 111. ], [ 96.1 , 110. ], [ 97. , 109.1 ], [ 97.47058824, 109. ], [ 97. , 108.9 ], [ 96.9 , 109. ], [ 96. , 109.9 ], [ 95.52941176, 110. ], [ 95. , 110.52941176], [ 94.9 , 111. ], [ 94. , 111.9 ], [ 93.9 , 112. ], [ 93. , 112.9 ], [ 92.9 , 113. ], [ 92.9 , 114. ], [ 93. , 114.1 ], [ 93.1 , 114. ], [ 93.1 , 113. ], [ 94. , 112.1 ], [ 94.1 , 112. ], [ 95. , 111.1 ], [ 95.9 , 112. ], [ 95.9 , 113. ], [ 95.52941176, 114. ], [ 95. , 114.52941176], [ 94.89222977, 115. ], [ 94. , 115.89222977], [ 93.9 , 116. ], [ 93. , 116.9 ], [ 92.9 , 117. ], [ 92. , 117.9 ], [ 91. , 117.9 ], [ 90.1 , 117. ], [ 90.1 , 116. ], [ 90.1 , 115. ], [ 90.1 , 114. ], [ 91. , 113.1 ], [ 91.1 , 113. ], [ 91.47058824, 112. ], [ 92. , 111.47058824], [ 92.1 , 111. ], [ 93. , 110.1 ], [ 93.1 , 110. ], [ 94. , 109.1 ], [ 94.1 , 109. ], [ 95. , 108.1 ], [ 95.1 , 108. ], [ 96. , 107.1 ], [ 97. , 107.1 ], [ 98. , 107.47058824], [ 98.52941176, 108. ], [ 99. , 108.1 ], [ 99.9 , 109. ], [ 100. , 109.47058824], [ 100.52941176, 110. ], [ 100.52941176, 111. ], [ 100. , 111.52941176]]), array([[ 100. , 41.52941176], [ 99. , 41.9 ], [ 98. , 41.52941176], [ 97.47058824, 41. ], [ 97. , 40.9 ], [ 96. , 40.89222977], [ 95.10777023, 40. ], [ 95. , 39.9 ], [ 94.1 , 39. ], [ 94. , 38.9 ], [ 93.1 , 38. ], [ 93. , 37.9 ], [ 92.1 , 37. ], [ 92.1 , 36. ], [ 93. , 35.1 ], [ 93.9 , 36. ], [ 94. , 36.1 ], [ 94.9 , 37. ], [ 95. , 37.10777023], [ 95.89222977, 38. ], [ 96. , 38.1 ], [ 96.9 , 39. ], [ 97. , 39.1 ], [ 98. , 39.47058824], [ 98.52941176, 40. ], [ 99. , 40.1 ], [ 100. , 40.47058824], [ 100.52941176, 41. ], [ 100. , 41.52941176]]), array([[ 94.0300679, 122. ], [ 94. , 121.9699321], [ 93. , 121.9699321], [ 92.9699321, 122. ], [ 93. , 122.0300679], [ 94. , 122.0300679], [ 94.0300679, 122. ]]), array([[ 95. , 22.52941176], [ 94.47058824, 22. ], [ 95. , 21.47058824], [ 95.52941176, 22. ], [ 95. , 22.52941176]]), array([[ 102. , 28.9 ], [ 101. , 28.9 ], [ 100. , 28.9 ], [ 99. , 28.52941176], [ 98. , 28.9 ], [ 97. , 28.9 ], [ 96. , 28.52941176], [ 95.47058824, 28. ], [ 96. , 27.47058824], [ 97. , 27.1 ], [ 98. , 27.1 ], [ 99. , 27.47058824], [ 100. , 27.1 ], [ 101. , 27.1 ], [ 102. , 27.1 ], [ 102.9 , 28. ], [ 102. , 28.9 ]]), array([[ 99. , 36.9 ], [ 98. , 36.52941176], [ 97. , 36.9 ], [ 96.1 , 36. ], [ 96.1 , 35. ], [ 96.1 , 34. ], [ 96.1 , 33. ], [ 96.1 , 32. ], [ 96.1 , 31. ], [ 97. , 30.1 ], [ 98. , 30.1 ], [ 98.9 , 31. ], [ 98.9 , 32. ], [ 98. , 32.9 ], [ 97.9 , 33. ], [ 97.9 , 34. ], [ 97.9 , 35. ], [ 98. , 35.47058824], [ 98.10777023, 35. ], [ 99. , 34.10777023], [ 99.89222977, 35. ], [ 99.9 , 36. ], [ 99. , 36.9 ]]), array([[ 99. , 107.52941176], [ 98.47058824, 107. ], [ 99. , 106.47058824], [ 99.52941176, 107. ], [ 99. , 107.52941176]]), array([[ 99. , 115.52941176], [ 98.47058824, 115. ], [ 99. , 114.47058824], [ 99.52941176, 115. ], [ 99. , 115.52941176]]), array([[ 106. , 37.9 ], [ 105.89222977, 38. ], [ 105. , 38.89222977], [ 104.10777023, 38. ], [ 104. , 37.9 ], [ 103.1 , 37. ], [ 103. , 36.9 ], [ 102.9 , 37. ], [ 102.9 , 38. ], [ 102. , 38.9 ], [ 101.1 , 38. ], [ 101.1 , 37. ], [ 101. , 36.9 ], [ 100.1 , 36. ], [ 100.1 , 35. ], [ 100.1 , 34. ], [ 101. , 33.1 ], [ 101.1 , 33. ], [ 101.1 , 32. ], [ 102. , 31.1 ], [ 103. , 31.1 ], [ 103.1 , 31. ], [ 104. , 30.1 ], [ 105. , 30.1 ], [ 105.9 , 31. ], [ 106. , 31.1 ], [ 106.9 , 32. ], [ 106. , 32.9 ], [ 105.9 , 33. ], [ 106. , 33.1 ], [ 106.9 , 34. ], [ 106.9 , 35. ], [ 106.9 , 36. ], [ 106.9 , 37. ], [ 106. , 37.9 ]]), array([[ 102. , 42.52941176], [ 101. , 42.9 ], [ 100.1 , 42. ], [ 101. , 41.1 ], [ 102. , 41.47058824], [ 102.52941176, 42. ], [ 102. , 42.52941176]]), array([[ 106.47058824, 21. ], [ 106. , 20.9 ], [ 105. , 20.9 ], [ 104. , 20.9 ], [ 103. , 20.9 ], [ 102.9 , 21. ], [ 103. , 21.1 ], [ 104. , 21.47058824], [ 104.52941176, 22. ], [ 105. , 22.1 ], [ 105.47058824, 22. ], [ 106. , 21.47058824], [ 106.47058824, 21. ]]), array([[ 103. , 29.52941176], [ 102.47058824, 29. ], [ 103. , 28.47058824], [ 103.52941176, 29. ], [ 103. , 29.52941176]]), array([[ 107. , 43.52941176], [ 106. , 43.9 ], [ 105. , 43.9 ], [ 104. , 43.52941176], [ 103.47058824, 43. ], [ 104. , 42.47058824], [ 105. , 42.1 ], [ 106. , 42.1 ], [ 107. , 42.47058824], [ 107.52941176, 43. ], [ 107. , 43.52941176]]), array([[ 107. , 105.52941176], [ 106. , 105.9 ], [ 105.1 , 105. ], [ 105.1 , 104. ], [ 105.47058824, 103. ], [ 106. , 102.47058824], [ 106.52941176, 103. ], [ 106.9 , 104. ], [ 107. , 104.47058824], [ 107.52941176, 105. ], [ 107. , 105.52941176]]), array([[ 108.1 , 112. ], [ 108. , 111.9 ], [ 107.89222977, 112. ], [ 107. , 112.89222977], [ 106.9 , 113. ], [ 107. , 113.1 ], [ 107.1 , 113. ], [ 108. , 112.1 ], [ 108.1 , 112. ]]), array([[ 114. , 45.9], [ 113. , 45.9], [ 112. , 45.9], [ 111.1, 45. ], [ 111. , 44.9], [ 110. , 44.9], [ 109. , 44.9], [ 108. , 44.9], [ 107.1, 44. ], [ 108. , 43.1], [ 109. , 43.1], [ 110. , 43.1], [ 111. , 43.1], [ 112. , 43.1], [ 113. , 43.1], [ 114. , 43.1], [ 114.9, 44. ], [ 114.9, 45. ], [ 114. , 45.9]]), array([[ 108.1, 109. ], [ 108. , 108.9], [ 107.9, 109. ], [ 108. , 109.1], [ 108.1, 109. ]]), array([[ 110.1 , 34. ], [ 110. , 33.9 ], [ 109.9 , 34. ], [ 110. , 34.47058824], [ 110.1 , 34. ]]), array([[ 111. , 104.9], [ 110. , 104.9], [ 109.1, 104. ], [ 110. , 103.1], [ 111. , 103.1], [ 111.9, 104. ], [ 111. , 104.9]]), array([[ 111.1, 37. ], [ 111.1, 36. ], [ 111. , 35.9], [ 110.9, 36. ], [ 110.9, 37. ], [ 111. , 37.1], [ 111.1, 37. ]]), array([[ 114.1 , 115. ], [ 114.10777023, 114. ], [ 114. , 113.52941176], [ 113.47058824, 113. ], [ 113.47058824, 112. ], [ 113.47058824, 111. ], [ 113. , 110.52941176], [ 112.47058824, 110. ], [ 112. , 109.52941176], [ 111.9 , 110. ], [ 112. , 110.47058824], [ 112.52941176, 111. ], [ 112.9 , 112. ], [ 112.9 , 113. ], [ 112.9 , 114. ], [ 112.9 , 115. ], [ 112.52941176, 116. ], [ 112. , 116.52941176], [ 111.9 , 117. ], [ 112. , 117.1 ], [ 112.47058824, 117. ], [ 113. , 116.47058824], [ 113.47058824, 116. ], [ 114. , 115.47058824], [ 114.1 , 115. ]]), array([[ 113. , 101.52941176], [ 112.47058824, 101. ], [ 113. , 100.47058824], [ 113.52941176, 101. ], [ 113. , 101.52941176]]), array([[ 115.47058824, 119. ], [ 115.47058824, 118. ], [ 115. , 117.52941176], [ 114.52941176, 118. ], [ 114.52941176, 119. ], [ 114. , 119.52941176], [ 113.9 , 120. ], [ 113.9 , 121. ], [ 113.9 , 122. ], [ 113.9 , 123. ], [ 114. , 123.47058824], [ 114.1 , 123. ], [ 114.1 , 122. ], [ 114.10777023, 121. ], [ 114.47058824, 120. ], [ 115. , 119.47058824], [ 115.47058824, 119. ]]), array([[ 135. , 65.9 ], [ 134. , 65.9 ], [ 133. , 65.9 ], [ 132. , 65.9 ], [ 131. , 65.9 ], [ 130. , 65.52941176], [ 129.47058824, 65. ], [ 129. , 64.9 ], [ 128. , 64.9 ], [ 127. , 64.9 ], [ 126. , 64.52941176], [ 125.47058824, 64. ], [ 125. , 63.9 ], [ 124. , 63.9 ], [ 123. , 63.89222977], [ 122. , 63.9 ], [ 121. , 63.52941176], [ 120. , 63.9 ], [ 119. , 63.9 ], [ 118. , 63.9 ], [ 117.9 , 64. ], [ 117. , 64.9 ], [ 116. , 64.52941176], [ 115.47058824, 64. ], [ 115. , 63.9 ], [ 114.9 , 64. ], [ 114.9 , 65. ], [ 115. , 65.1 ], [ 116. , 65.1 ], [ 116.9 , 66. ], [ 117. , 66.1 ], [ 118. , 66.1 ], [ 119. , 66.1 ], [ 119.9 , 67. ], [ 120. , 67.1 ], [ 121. , 67.1 ], [ 122. , 67.1 ], [ 123. , 67.47058824], [ 123.52941176, 68. ], [ 124. , 68.1 ], [ 125. , 68.1 ], [ 126. , 68.1 ], [ 127. , 68.1 ], [ 128. , 68.47058824], [ 128.52941176, 69. ], [ 129. , 69.1 ], [ 130. , 69.1 ], [ 131. , 69.1 ], [ 132. , 69.1 ], [ 133. , 69.47058824], [ 133.52941176, 70. ], [ 134. , 70.1 ], [ 135. , 70.1 ]]), array([[ 115. , 92.52941176], [ 114.47058824, 92. ], [ 114.47058824, 91. ], [ 115. , 90.47058824], [ 115.52941176, 91. ], [ 115.52941176, 92. ], [ 115. , 92.52941176]]), array([[ 115. , 97.52941176], [ 114.47058824, 97. ], [ 114.47058824, 96. ], [ 115. , 95.47058824], [ 115.52941176, 96. ], [ 115.52941176, 97. ], [ 115. , 97.52941176]]), array([[ 123. , 53.64862966], [ 122.35137034, 53. ], [ 123. , 52.35137034], [ 123.64862966, 53. ], [ 123. , 53.64862966]]), array([[ 135. , 47.64862966], [ 134.35137034, 47. ], [ 134.1 , 46. ], [ 134.1 , 45. ], [ 134.1 , 44. ], [ 134.1 , 43. ], [ 134.0300679 , 42. ], [ 134. , 41.9699321 ], [ 133.1 , 41. ], [ 133.1 , 40. ], [ 133.1 , 39. ], [ 133. , 38.9 ], [ 132.1 , 38. ], [ 132.1 , 37. ], [ 132.1 , 36. ], [ 132.0300679 , 35. ], [ 132. , 34.9699321 ], [ 131.1 , 34. ], [ 131.1 , 33. ], [ 131. , 32.9 ], [ 130.1 , 32. ], [ 130. , 31.52941176], [ 129. , 31.9 ], [ 128.1 , 31. ], [ 128.1 , 30. ], [ 129. , 29.1 ], [ 129.1 , 29. ], [ 129. , 28.9 ], [ 128.9 , 29. ], [ 128. , 29.9 ], [ 127. , 29.9 ], [ 126. , 29.9 ], [ 125.9 , 30. ], [ 126. , 30.1 ], [ 127. , 30.1 ], [ 127.9 , 31. ], [ 128. , 31.1 ], [ 128.9 , 32. ], [ 129. , 32.1 ], [ 129.9 , 33. ], [ 129.9 , 34. ], [ 129.9 , 35. ], [ 129.9 , 36. ], [ 130. , 36.1 ], [ 130.9 , 37. ], [ 130.9 , 38. ], [ 130.9 , 39. ], [ 131. , 39.1 ], [ 131.9 , 40. ], [ 131.9 , 41. ], [ 131.9 , 42. ], [ 131.9 , 43. ], [ 131.9 , 44. ], [ 132. , 44.35137034], [ 132.64862966, 45. ], [ 132.9 , 46. ], [ 132. , 46.9699321 ], [ 131.1 , 46. ], [ 131. , 45.9 ], [ 130.1 , 45. ], [ 130. , 44.9 ], [ 129. , 44.9 ], [ 128.0300679 , 44. ], [ 128. , 43.9699321 ], [ 127. , 43.9 ], [ 126. , 43.9 ], [ 125.9 , 44. ], [ 125.9 , 45. ], [ 125.9 , 46. ], [ 125.9 , 47. ], [ 126. , 47.1 ], [ 127. , 47.1 ], [ 127.9 , 48. ], [ 128. , 48.1 ], [ 129. , 48.1 ], [ 130. , 48.1 ], [ 131. , 48.13129412], [ 132. , 48.13129412], [ 132.64862966, 49. ], [ 132.9 , 50. ], [ 133. , 50.1 ], [ 134. , 50.1 ], [ 135. , 50.1 ]])] >>> Click here to Reply or Forward Why this ad?Ads ? Best CTET Coaching Delhi Classroom Coaching by Experts with Study Material & Mock Tests. Apply successmantraclasses.in/Laxmi_Nagar 2.15 GB (14%) of 15 GB used Manage ?2013 Google - Terms & Privacy Last account activity: 41 minutes ago Details scikit-image Add to circles Show details Ads Download Android Apps Largest Collection of Android Apps. Save Data Cost. Try Mobogenie Now! MoboGenie.com/Download-Android-Apps Tata Housing Premium Home Ariana,Bhubneswar Prosperity in the Canopy of Nature projects.tatahousing.in Test Your Aptitude with NIIT BJ Scholarship Test. Boost up your IT Career. Apply! NIITCloudCampus.com/bjs Embedded Linux 3.8 Kernal 256 MB with i.MX287 Processor LOW Price, Ships Same Day! www.crystalfontz.com Government Job Apply for Jobs in the Government Sector. 100% Free, Register Now! Quikr.com/Government-Jobs Buy 1 Get 1 Free Comfortable & Stylish Women Shoes. Free Shipping, COD, Shop Now! jabong.com/Sandals/Fastest_Delivery ICICI? Car Insurance Free Quick Quotes In 30 secs .Now, Also Use Fb to login & Insure ICICILombard.com/Car_Insurance Jobs In TCS Apply today - Upload your profile A Unique 4th Generation Job Portal www.wisdomjobs.com On Thu, Sep 5, 2013 at 12:19 PM, Juan Nunez-Iglesias wrote: > Hi Payal, > > I think you're misunderstanding the purpose of "find_boundaries"... Not > quite your fault since the documentation is pretty sparse there. > > I'll use my favourite fuzzball as an example: > > [image: Inline image 1] > > "find_boundaries" is meant to take in a segmentation, which is an image in > which each region has a different integer label, like this one: > > [image: Inline image 2] > > Then, find_boundaries merely looks for pixels where the neighbouring > labels are different: > > [image: Inline image 3] > > It's not doing any edge detection per se, it's just a tool for displaying > segmentations when it is easier to look at edges than at regions (above). I > think what you are after is edge detection? Maybe an image like this one: > > [image: Inline image 4] > ? > > For that, you should directly use the edge detection algorithms, such as > Sobel or Canny, without previously thresholding your image. Have a close > look at the examples gallery to figure out if any are close to what you are > after, and try to apply the code there to your own image: > > http://scikit-image.org/docs/dev/auto_examples/ > > Some of the more pertinent ones, I think: > http://scikit-image.org/docs/dev/auto_examples/plot_canny.html > http://scikit-image.org/docs/dev/auto_examples/plot_edge_filter.html > http://scikit-image.org/docs/dev/auto_examples/plot_join_segmentations.html > http://scikit-image.org/docs/dev/auto_examples/plot_label.html > http://scikit-image.org/docs/dev/auto_examples/plot_marked_watershed.html > > http://scikit-image.org/docs/dev/auto_examples/plot_random_walker_segmentation.html > http://scikit-image.org/docs/dev/auto_examples/plot_watershed.html > > http://scikit-image.org/docs/dev/auto_examples/applications/plot_coins_segmentation.html > > Note that in the edge detection examples, Canny/Sobel is applied to the > image *before* any thresholding ? unlike the example code you provided. > > Juan. > > > On Wed, Sep 4, 2013 at 5:31 PM, Payal Gupta wrote: > >> hello everyone... >> i will try this code,in this i want to do read a image then do edge >> detection after that find the boundaries of image object. but >> find_boundaries return me a bool array but i need a integer array. is it >> any solution of this. >> >> >> code:: >> >> import Image >> >> from skimage import segmentation as seg,io,filter >> >> imge = io.imread("IMG_1.jpg") >> >> thresh = filter.threshold_otsu(imge) >> >> binary = imge> thresh >> >> edge_canny = filter.canny(binary) >> >> bimg =seg.find_boundaries(binary) >> >> print(bimg) >> >> fig, (ax0, ax1) = plt.subplots(ncols=2) >> >> ax0.imshow(bimg,cmap=plt.cm.gray) >> ax1.imshow(binary,cmap=plt.cm.gray) >> >> >> On Tue, Sep 3, 2013 at 7:42 PM, St?fan van der Walt wrote: >> >>> >>> On 3 Sep 2013 11:45, "Payal Gupta" wrote: >>> > >>> > thanks it working but i confused when i use function of skimage >>> library. i want to change rgb image to a graylevel image but inbuilt >>> function rgb2gray not convert gray level image. >>> > reply. >>> >>> If you want help on this list, please provide code examples of what you >>> are attempting. >>> >>> St?fan >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "scikit-image" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >>> To unsubscribe from this group and all of its topics, send an email to >>> scikit-image+unsubscribe at googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image+unsubscribe at googlegroups.com. >> >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: label_im.png Type: image/png Size: 2610 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 159022.jpg Type: image/jpeg Size: 19541 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: boundary_im.png Type: image/png Size: 3072 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screen Shot 2013-09-05 at 4.09.48 PM.png Type: image/png Size: 507844 bytes Desc: not available URL: From erpayal2010 at gmail.com Wed Sep 11 12:58:45 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Wed, 11 Sep 2013 22:28:45 +0530 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: hello... i m also use this prog to count white pixel and black pixel bt i cant save an image and cant count the pixel. can you help me. from skimage import measure from numpy import array import skimage.io as io from skimage import data_dir from skimage.data import coins,camera import matplotlib.pyplot as plt import skimage.color as color from skimage.data import camera from skimage.filter import canny, sobel import Image from skimage import data,filter image = io.imread("IMG_1.jpg") thresh = filter.threshold_otsu(image) binary = image > thresh imag= color.colorconv.rgb2grey(binary) img = array(imag) print img x = np.array((255, 255)) x = np.array((255, 255), dtype=np.uint8) #x[:] = np.arange(255) io.imsave('imag.png', x) #im = Image.open() white_points = 0 black_points=0 for row in range(0,244): for col in range(0, 461): if(img(row,col)==1): white_points = white_points+1 else: black_points = black_points+1 print white_points On Wed, Sep 11, 2013 at 1:49 PM, Payal Gupta wrote: > hello everyone... > i used find_contour function which returns a 2D ndarray . i can't > understand the return array so any body help me. > *program :* > > image = io.imread("IMG_2.jpg") > > thresh = filter.threshold_otsu(image) > > binary = image > thresh > > imag= color.colorconv.rgb2grey(binary) > > img = array(imag) > > edge_canny = canny(img) > > edge_sobel = sobel(img) > > contours = measure.find_contours(imag,0.9,'high') > > print contours > > fig, (ax0, ax1) = plt.subplots(ncols=2) > > ax0.imshow(imag ,cmap=plt.cm.gray) > > ax0.set_title('Roberts Edge Detection') > > ax0.axis('off') > > ax1.imshow(edge_canny, cmap=plt.cm.gray) > > ax1.set_title('Sobel Edge Detection') > > ax1.axis('off') > > > *returns array:* > > > [array([[ 135. , 72.9 ], > [ 134. , 72.9 ], > [ 133. , 72.9 ], > ..., > [ 1. , 21.52941176], > [ 0.47058824, 21. ], > [ 0. , 20.9 ]]), array([[ 0. , > 104.35137034], > [ 1. , 104.35137034], > [ 1.64862966, 105. ], > [ 2. , 105.1 ], > [ 3. , 105.35137034], > [ 3.1 , 105. ], > [ 3.1 , 104. ], > [ 3.1 , 103. ], > [ 4. , 102.1 ], > [ 4.1 , 102. ], > [ 5. , 101.1 ], > [ 5.9 , 102. ], > [ 6. , 102.1 ], > [ 7. , 102.1 ], > [ 8. , 102.1 ], > [ 8.1 , 102. ], > [ 9. , 101.1 ], > [ 9.1 , 101. ], > [ 10. , 100.1 ], > [ 11. , 100.1 ], > [ 11.1 , 100. ], > [ 12. , 99.1 ], > [ 13. , 99.1 ], > [ 13.9 , 100. ], > [ 13.9 , 101. ], > [ 13.89222977, 102. ], > [ 13. , 102.89222977], > [ 12. , 102.89222977], > [ 11.10777023, 102. ], > [ 11. , 101.9 ], > [ 10.9 , 102. ], > [ 10.9 , 103. ], > [ 10.9 , 104. ], > [ 10.9 , 105. ], > [ 10. , 105.9 ], > [ 9.9 , 106. ], > [ 10. , 106.1 ], > [ 11. , 106.1 ], > [ 12. , 106.1 ], > [ 13. , 106.1 ], > [ 14. , 106.1 ], > [ 15. , 106.1 ], > [ 16. , 106.35137034], > [ 16.64862966, 107. ], > [ 17. , 107.1 ], > [ 18. , 107.1 ], > [ 18.1 , 107. ], > [ 19. , 106.1 ], > [ 19.1 , 106. ], > [ 20. , 105.1 ], > [ 20.1 , 105. ], > [ 20. , 104.9 ], > [ 19. , 104.9 ], > [ 18. , 104.9 ], > [ 17.9 , 105. ], > [ 17. , 105.9 ], > [ 16. , 105.9 ], > [ 15.1 , 105. ], > [ 15. , 104.9 ], > [ 14.1 , 104. ], > [ 14. , 103.9 ], > [ 13.1 , 103. ], > [ 14. , 102.1 ], > [ 14.1 , 102. ], > [ 14.1 , 101. ], > [ 15. , 100.1 ], > [ 15.1 , 100. ], > [ 16. , 99.1 ], > [ 16.1 , 99. ], > [ 17. , 98.1 ], > [ 18. , 98.10777023], > [ 18.89222977, 99. ], > [ 18. , 99.89222977], > [ 17.9 , 100. ], > [ 17.9 , 101. ], > [ 18. , 101.1 ], > [ 18.9 , 102. ], > [ 18.9 , 103. ], > [ 19. , 103.1 ], > [ 19.1 , 103. ], > [ 19.1 , 102. ], > [ 19.1 , 101. ], > [ 19.1 , 100. ], > [ 19.35137034, 99. ], > [ 20. , 98.35137034], > [ 20.64862966, 99. ], > [ 21. , 99.1 ], > [ 22. , 99.1 ], > [ 23. , 99.1 ], > [ 23.9 , 100. ], > [ 24. , 100.1 ], > [ 25. , 100.1 ], > [ 26. , 100.1 ], > [ 27. , 100.1 ], > [ 27.9 , 101. ], > [ 28. , 101.1 ], > [ 29. , 101.1 ], > [ 30. , 101.1 ], > [ 31. , 101.1 ], > [ 32. , 101.1 ], > [ 32.9 , 102. ], > [ 33. , 102.1 ], > [ 34. , 102.1 ], > [ 34.9 , 103. ], > [ 35. , 103.1 ], > [ 36. , 103.1 ], > [ 37. , 103.1 ], > [ 37.9 , 104. ], > [ 38. , 104.1 ], > [ 39. , 104.1 ], > [ 40. , 104.47058824], > [ 40.52941176, 105. ], > [ 41. , 105.1 ], > [ 42. , 105.1 ], > [ 43. , 105.47058824], > [ 43.52941176, 106. ], > [ 44. , 106.1 ], > [ 45. , 106.1 ], > [ 45.9 , 107. ], > [ 46. , 107.1 ], > [ 47. , 107.1 ], > [ 48. , 107.1 ], > [ 48.9 , 108. ], > [ 49. , 108.1 ], > [ 50. , 108.1 ], > [ 51. , 108.1 ], > [ 52. , 108.1 ], > [ 53. , 108.35137034], > [ 53.64862966, 109. ], > [ 54. , 109.1 ], > [ 55. , 109.1 ], > [ 56. , 109.1 ], > [ 56.9 , 110. ], > [ 57. , 110.1 ], > [ 58. , 110.1 ], > [ 59. , 110.1 ], > [ 60. , 110.1 ], > [ 60.9 , 111. ], > [ 61. , 111.1 ], > [ 62. , 111.1 ], > [ 63. , 111.1 ], > [ 64. , 111.1 ], > [ 64.9 , 112. ], > [ 65. , 112.1 ], > [ 66. , 112.1 ], > [ 67. , 112.1 ], > [ 68. , 112.1 ], > [ 68.9 , 113. ], > [ 69. , 113.1 ], > [ 70. , 113.1 ], > [ 70.9 , 114. ], > [ 70. , 114.9 ], > [ 69.9 , 115. ], > [ 70. , 115.1 ], > [ 70.9699321 , 116. ], > [ 71. , 116.0300679 ], > [ 72. , 116.1 ], > [ 73. , 116.1 ], > [ 74. , 116.35137034], > [ 74.64862966, 117. ], > [ 75. , 117.1 ], > [ 76. , 117.1 ], > [ 77. , 117.1 ], > [ 78. , 117.1 ], > [ 78.9699321 , 118. ], > [ 79. , 118.0300679 ], > [ 80. , 118.1 ], > [ 81. , 118.1 ], > [ 82. , 118.1 ], > [ 83. , 118.1 ], > [ 83.9699321 , 119. ], > [ 84. , 119.0300679 ], > [ 85. , 119.1 ], > [ 86. , 119.1 ], > [ 87. , 119.1 ], > [ 88. , 119.1 ], > [ 89. , 119.1 ], > [ 90. , 119.1 ], > [ 91. , 119.1 ], > [ 92. , 119.1 ], > [ 92.9699321 , 120. ], > [ 93. , 120.0300679 ], > [ 93.13129412, 120. ], > [ 94. , 119.35137034], > [ 95. , 119.1 ], > [ 96. , 119.35137034], > [ 97. , 119.35137034], > [ 98. , 119.35137034], > [ 99. , 119.1 ], > [ 100. , 119.1 ], > [ 101. , 119.1 ], > [ 102. , 119.1 ], > [ 103. , 119.0300679 ], > [ 103.13129412, 119. ], > [ 103. , 118.9699321 ], > [ 102. , 118.9 ], > [ 101. , 118.9 ], > [ 100. , 118.9 ], > [ 99. , 118.9 ], > [ 98. , 118.9 ], > [ 97. , 118.9 ], > [ 96. , 118.9 ], > [ 95. , 118.64862966], > [ 94. , 118.64862966], > [ 93. , 118.9 ], > [ 92.1 , 118. ], > [ 93. , 117.1 ], > [ 94. , 117.35137034], > [ 95. , 117.35137034], > [ 96. , 117.1 ], > [ 97. , 117.1 ], > [ 98. , 117.1 ], > [ 99. , 117.1 ], > [ 100. , 117.1 ], > [ 101. , 117.1 ], > [ 102. , 117.1 ], > [ 103. , 117.1 ], > [ 104. , 117.1 ], > [ 105. , 117.1 ], > [ 106. , 117.1 ], > [ 107. , 117.1 ], > [ 108. , 117.1 ], > [ 109. , 117.1 ], > [ 109.1 , 117. ], > [ 110. , 116.1 ], > [ 110.1 , 116. ], > [ 110. , 115.9 ], > [ 109. , 115.9 ], > [ 108. , 115.9 ], > [ 107.1 , 115. ], > [ 107. , 114.9 ], > [ 106. , 114.9 ], > [ 105.9 , 115. ], > [ 105. , 115.9 ], > [ 104. , 115.9 ], > [ 103. , 115.9 ], > [ 102.1 , 115. ], > [ 102. , 114.9 ], > [ 101.1 , 114. ], > [ 101.1 , 113. ], > [ 101. , 112.89222977], > [ 100.10777023, 112. ], > [ 101. , 111.10777023], > [ 101.1 , 111. ], > [ 101.47058824, 110. ], > [ 102. , 109.47058824], > [ 102.1 , 109. ], > [ 103. , 108.1 ], > [ 103.1 , 108. ], > [ 104. , 107.1 ], > [ 105. , 107.1 ], > [ 105.1 , 107. ], > [ 106. , 106.1 ], > [ 107. , 106.1 ], > [ 108. , 106.1 ], > [ 109. , 106.1 ], > [ 110. , 106.1 ], > [ 110.1 , 106. ], > [ 111. , 105.1 ], > [ 112. , 105.10777023], > [ 112.89222977, 106. ], > [ 112.9 , 107. ], > [ 112.9 , 108. ], > [ 113. , 108.47058824], > [ 113.47058824, 108. ], > [ 113.47058824, 107. ], > [ 113.10777023, 106. ], > [ 113.10777023, 105. ], > [ 113.47058824, 104. ], > [ 113.47058824, 103. ], > [ 113.47058824, 102. ], > [ 114. , 101.47058824], > [ 115. , 101.47058824], > [ 115.52941176, 102. ], > [ 115.52941176, 103. ], > [ 116. , 103.47058824], > [ 116.52941176, 104. ], > [ 116. , 104.52941176], > [ 115.52941176, 105. ], > [ 115.52941176, 106. ], > [ 116. , 106.47058824], > [ 116.52941176, 107. ], > [ 117. , 107.47058824], > [ 117.52941176, 108. ], > [ 117.52941176, 109. ], > [ 117.52941176, 110. ], > [ 117. , 110.52941176], > [ 116.52941176, 111. ], > [ 117. , 111.47058824], > [ 118. , 111.47058824], > [ 118.52941176, 112. ], > [ 118. , 112.52941176], > [ 117.52941176, 113. ], > [ 118. , 113.47058824], > [ 119. , 113.47058824], > [ 119.52941176, 114. ], > [ 119.52941176, 115. ], > [ 119. , 115.52941176], > [ 118.52941176, 116. ], > [ 119. , 116.47058824], > [ 119.52941176, 117. ], > [ 119.52941176, 118. ], > [ 119. , 118.52941176], > [ 118.47058824, 118. ], > [ 118. , 117.52941176], > [ 117.52941176, 118. ], > [ 118. , 118.47058824], > [ 118.52941176, 119. ], > [ 119. , 119.47058824], > [ 119.52941176, 120. ], > [ 119.52941176, 121. ], > [ 119.52941176, 122. ], > [ 120. , 122.47058824], > [ 120.52941176, 123. ], > [ 120.52941176, 124. ], > [ 120.52941176, 125. ], > [ 120.52941176, 126. ], > [ 120.52941176, 127. ], > [ 120. , 127.52941176], > [ 119. , 127.52941176], > [ 118. , 127.52941176], > [ 117.52941176, 128. ], > [ 118. , 128.47058824], > [ 118.52941176, 129. ]]), array([[ 3. , 27.9], > [ 2.1, 27. ], > [ 3. , 26.1], > [ 3.9, 27. ], > [ 3. , 27.9]]), array([[ 13. , 34.52941176], > [ 12. , 34.9 ], > [ 11. , 34.9 ], > [ 10. , 34.9 ], > [ 9. , 34.9 ], > [ 8. , 34.9 ], > [ 7. , 34.9 ], > [ 6. , 34.9 ], > [ 5. , 34.9 ], > [ 4.1 , 34. ], > [ 5. , 33.1 ], > [ 6. , 33.1 ], > [ 7. , 33.1 ], > [ 8. , 33.1 ], > [ 9. , 33.1 ], > [ 10. , 33.1 ], > [ 11. , 33.1 ], > [ 12. , 33.1 ], > [ 13. , 33.47058824], > [ 13.52941176, 34. ], > [ 13. , 34.52941176]]), array([[ 7. , 89.9], > [ 6.1, 89. ], > [ 7. , 88.1], > [ 7.9, 89. ], > [ 7. , 89.9]]), array([[ 9.1 , 104. ], > [ 9. , 103.9 ], > [ 8. , 103.9 ], > [ 7.9 , 104. ], > [ 7. , 104.9 ], > [ 6.9 , 105. ], > [ 7. , 105.1 ], > [ 8. , 105.1 ], > [ 8.47058824, 105. ], > [ 9. , 104.47058824], > [ 9.1 , 104. ]]), array([[ 8. , 90.9], > [ 7.1, 90. ], > [ 8. , 89.1], > [ 8.9, 90. ], > [ 8. , 90.9]]), array([[ 10. , 91.9], > [ 9. , 91.9], > [ 8.1, 91. ], > [ 9. , 90.1], > [ 10. , 90.1], > [ 10.9, 91. ], > [ 10. , 91.9]]), array([[ 10.35137034, 108. ], > [ 10. , 107.9 ], > [ 9.9 , 108. ], > [ 10. , 108.1 ], > [ 10.35137034, 108. ]]), array([[ 12. , 92.9], > [ 11. , 92.9], > [ 10.1, 92. ], > [ 11. , 91.1], > [ 12. , 91.1], > [ 12.9, 92. ], > [ 12. , 92.9]]), array([[ 15. , 97.64862966], > [ 14.9 , 98. ], > [ 14. , 98.9 ], > [ 13. , 98.9 ], > [ 12. , 98.9 ], > [ 11.1 , 98. ], > [ 12. , 97.1 ], > [ 13. , 97.1 ], > [ 13.1 , 97. ], > [ 14. , 96.1 ], > [ 15. , 96.35137034], > [ 15.64862966, 97. ], > [ 15. , 97.64862966]]), array([[ 17.1 , 109. > ], > [ 17. , 108.9 ], > [ 16. , 108.64862966], > [ 15.35137034, 108. ], > [ 15. , 107.9 ], > [ 14. , 107.9 ], > [ 13. , 107.9 ], > [ 12. , 107.9 ], > [ 11.64862966, 108. ], > [ 12. , 108.1 ], > [ 12.9699321 , 109. ], > [ 13. , 109.0300679 ], > [ 14. , 109.1 ], > [ 15. , 109.1 ], > [ 16. , 109.1 ], > [ 17. , 109.1 ], > [ 17.1 , 109. ]]), array([[ 14. , 93.9], > [ 13. , 93.9], > [ 12.1, 93. ], > [ 13. , 92.1], > [ 14. , 92.1], > [ 14.9, 93. ], > [ 14. , 93.9]]), array([[ 16. , 94.9], > [ 15. , 94.9], > [ 14.1, 94. ], > [ 15. , 93.1], > [ 16. , 93.1], > [ 16.9, 94. ], > [ 16. , 94.9]]), array([[ 19. , 35.52941176], > [ 18. , 35.52941176], > [ 17. , 35.52941176], > [ 16. , 35.9 ], > [ 15.1 , 35. ], > [ 16. , 34.1 ], > [ 17. , 34.47058824], > [ 18. , 34.47058824], > [ 19. , 34.47058824], > [ 19.52941176, 35. ], > [ 19. , 35.52941176]]), array([[ 18. , 95.9], > [ 17. , 95.9], > [ 16.1, 95. ], > [ 17. , 94.1], > [ 18. , 94.1], > [ 18.9, 95. ], > [ 18. , 95.9]]), array([[ 21. , 96.64862966], > [ 20. , 96.9 ], > [ 19. , 96.9 ], > [ 18.1 , 96. ], > [ 19. , 95.1 ], > [ 20. , 95.1 ], > [ 21. , 95.35137034], > [ 21.64862966, 96. ], > [ 21. , 96.64862966]]), array([[ 23. , 97.9], > [ 22. , 97.9], > [ 21.1, 97. ], > [ 22. , 96.1], > [ 23. , 96.1], > [ 23.9, 97. ], > [ 23. , 97.9]]), array([[ 25.0300679 , 103. ], > [ 25.1 , 102. ], > [ 25. , 101.9 ], > [ 24.9 , 102. ], > [ 24. , 102.9 ], > [ 23.9 , 103. ], > [ 23.64862966, 104. ], > [ 23. , 104.64862966], > [ 22.9 , 105. ], > [ 22. , 105.9699321 ], > [ 21.9699321 , 106. ], > [ 22. , 106.0300679 ], > [ 22.0300679 , 106. ], > [ 23. , 105.1 ], > [ 23.35137034, 105. ], > [ 24. , 104.35137034], > [ 24.1 , 104. ], > [ 25. , 103.0300679 ], > [ 25.0300679 , 103. ]]), array([[ 26. , 98.9], > [ 25. , 98.9], > [ 24.1, 98. ], > [ 25. , 97.1], > [ 26. , 97.1], > [ 26.9, 98. ], > [ 26. , 98.9]]), array([[ 27.0300679, 103. ], > [ 27. , 102.9699321], > [ 26.9699321, 103. ], > [ 27. , 103.0300679], > [ 27.0300679, 103. ]]), array([[ 30. , 99.52941176], > [ 29. , 99.9 ], > [ 28. , 99.9 ], > [ 27.1 , 99. ], > [ 28. , 98.1 ], > [ 29. , 98.1 ], > [ 30. , 98.47058824], > [ 30.52941176, 99. ], > [ 30. , 99.52941176]]), array([[ 31. , 69.9 ], > [ 30. , 69.9 ], > [ 29. , 69.52941176], > [ 28.47058824, 69. ], > [ 29. , 68.47058824], > [ 29.1 , 68. ], > [ 30. , 67.1 ], > [ 31. , 67.1 ], > [ 31.9 , 68. ], > [ 31.9 , 69. ], > [ 31. , 69.9 ]]), array([[ 76. , 94.9 > ], > [ 75.9 , 95. ], > [ 75.9 , 96. ], > [ 75.9 , 97. ], > [ 75.9 , 98. ], > [ 75.9 , 99. ], > [ 75.9 , 100. ], > [ 75.9 , 101. ], > [ 75.9 , 102. ], > [ 75. , 102.9 ], > [ 74.9 , 103. ], > [ 74.9 , 104. ], > [ 74.9 , 105. ], > [ 74.9 , 106. ], > [ 74. , 106.9 ], > [ 73.9 , 107. ], > [ 73.9 , 108. ], > [ 73.9 , 109. ], > [ 73. , 109.9 ], > [ 72.9 , 110. ], > [ 72.9 , 111. ], > [ 72. , 111.9 ], > [ 71. , 111.9 ], > [ 70. , 111.9 ], > [ 69. , 111.9 ], > [ 68. , 111.89222977], > [ 67.10777023, 111. ], > [ 67. , 110.9 ], > [ 66. , 110.9 ], > [ 65. , 110.9 ], > [ 64.1 , 110. ], > [ 64. , 109.9 ], > [ 63. , 109.9 ], > [ 62. , 109.9 ], > [ 61. , 109.9 ], > [ 60.1 , 109. ], > [ 60. , 108.9 ], > [ 59. , 108.9 ], > [ 58. , 108.9 ], > [ 57. , 108.9 ], > [ 56.1 , 108. ], > [ 56. , 107.9 ], > [ 55. , 107.9 ], > [ 54. , 107.9 ], > [ 53. , 107.9 ], > [ 52.1 , 107. ], > [ 52. , 106.9 ], > [ 51. , 106.9 ], > [ 50. , 106.9 ], > [ 49.1 , 106. ], > [ 49. , 105.9 ], > [ 48. , 105.9 ], > [ 47. , 105.9 ], > [ 46. , 105.52941176], > [ 45.47058824, 105. ], > [ 45. , 104.9 ], > [ 44. , 104.9 ], > [ 43. , 104.9 ], > [ 42.1 , 104. ], > [ 42. , 103.9 ], > [ 41. , 103.9 ], > [ 40. , 103.9 ], > [ 39.1 , 103. ], > [ 39. , 102.9 ], > [ 38. , 102.9 ], > [ 37. , 102.89222977], > [ 36.10777023, 102. ], > [ 36. , 101.9 ], > [ 35. , 101.9 ], > [ 34.1 , 101. ], > [ 34. , 100.9 ], > [ 33. , 100.52941176], > [ 32. , 100.9 ], > [ 31.1 , 100. ], > [ 32. , 99.1 ], > [ 33. , 99.47058824], > [ 34. , 99.1 ], > [ 34.1 , 99. ], > [ 34.1 , 98. ], > [ 35. , 97.1 ], > [ 35.1 , 97. ], > [ 35.1 , 96. ], > [ 35.1 , 95. ], > [ 35.1 , 94. ], > [ 35.1 , 93. ], > [ 35.1 , 92. ], > [ 35.47058824, 91. ], > [ 36. , 90.47058824], > [ 36.1 , 90. ], > [ 36.1 , 89. ], > [ 36.1 , 88. ], > [ 36.1 , 87. ], > [ 36.1 , 86. ], > [ 36.1 , 85. ], > [ 36.1 , 84. ], > [ 36.1 , 83. ], > [ 36.1 , 82. ], > [ 36.1 , 81. ], > [ 36.1 , 80. ], > [ 36.1 , 79. ], > [ 36.1 , 78. ], > [ 36.1 , 77. ], > [ 36.1 , 76. ], > [ 36.1 , 75. ], > [ 36.1 , 74. ], > [ 36.1 , 73. ], > [ 36.1 , 72. ], > [ 36.1 , 71. ], > [ 36.1 , 70. ], > [ 36.1 , 69. ], > [ 36.1 , 68. ], > [ 36.1 , 67. ], > [ 36.1 , 66. ], > [ 36.1 , 65. ], > [ 36.1 , 64. ], > [ 36.1 , 63. ], > [ 36.1 , 62. ], > [ 36.1 , 61. ], > [ 36.1 , 60. ], > [ 36.1 , 59. ], > [ 36.1 , 58. ], > [ 36.1 , 57. ], > [ 36.1 , 56. ], > [ 36.1 , 55. ], > [ 36.1 , 54. ], > [ 36.1 , 53. ], > [ 36. , 52.52941176], > [ 35.47058824, 52. ], > [ 35.47058824, 51. ], > [ 35.1 , 50. ], > [ 35.1 , 49. ], > [ 35.1 , 48. ], > [ 35.1 , 47. ], > [ 35.1 , 46. ], > [ 35.1 , 45. ], > [ 35.1 , 44. ], > [ 35. , 43.9 ], > [ 34.1 , 43. ], > [ 34.1 , 42. ], > [ 34.1 , 41. ], > [ 34.1 , 40. ], > [ 34.1 , 39. ], > [ 34. , 38.9 ], > [ 33.1 , 38. ], > [ 33.1 , 37. ], > [ 33. , 36.9 ], > [ 32. , 36.9 ], > [ 31. , 36.89222977], > [ 30. , 36.52941176], > [ 29.47058824, 36. ], > [ 30. , 35.47058824], > [ 31. , 35.10777023], > [ 32. , 35.1 ], > [ 33. , 35.1 ], > [ 34. , 35.1 ], > [ 35. , 35.1 ], > [ 35.1 , 35. ], > [ 36. , 34.1 ], > [ 37. , 34.1 ], > [ 38. , 34.1 ], > [ 39. , 34.1 ], > [ 39.1 , 34. ], > [ 40. , 33.1 ], > [ 41. , 33.1 ], > [ 42. , 33.1 ], > [ 43. , 33.1 ], > [ 44. , 33.1 ], > [ 44.47058824, 33. ], > [ 45. , 32.47058824], > [ 46. , 32.1 ], > [ 47. , 32.1 ], > [ 48. , 32.1 ], > [ 49. , 32.1 ], > [ 50. , 32.1 ], > [ 50.1 , 32. ], > [ 51. , 31.1 ], > [ 52. , 31.1 ], > [ 53. , 31.1 ], > [ 54. , 31.1 ], > [ 55. , 31.1 ], > [ 55.1 , 31. ], > [ 56. , 30.1 ], > [ 57. , 30.1 ], > [ 58. , 30.1 ], > [ 59. , 30.1 ], > [ 60. , 30.1 ], > [ 61. , 30.1 ], > [ 62. , 30.1 ], > [ 62.1 , 30. ], > [ 63. , 29.1 ], > [ 64. , 29.1 ], > [ 65. , 29.1 ], > [ 66. , 29.1 ], > [ 67. , 29.1 ], > [ 67.47058824, 29. ], > [ 68. , 28.47058824], > [ 69. , 28.1 ], > [ 70. , 28.1 ], > [ 70.9 , 29. ], > [ 70.9 , 30. ], > [ 71. , 30.1 ], > [ 71.9 , 31. ], > [ 71.9 , 32. ], > [ 72. , 32.1 ], > [ 72.9 , 33. ], > [ 72.9 , 34. ], > [ 73. , 34.47058824], > [ 73.52941176, 35. ], > [ 73.9 , 36. ], > [ 73.9 , 37. ], > [ 73.9 , 38. ], > [ 74. , 38.1 ], > [ 74.9 , 39. ], > [ 74.9 , 40. ], > [ 74.9 , 41. ], > [ 74.9 , 42. ], > [ 74.9 , 43. ], > [ 74.9 , 44. ], > [ 75. , 44.47058824], > [ 75.52941176, 45. ], > [ 75.9 , 46. ], > [ 75.9 , 47. ], > [ 75.9 , 48. ], > [ 75.9 , 49. ], > [ 75.9 , 50. ], > [ 75.9 , 51. ], > [ 75.9 , 52. ], > [ 75.9 , 53. ], > [ 75.9 , 54. ], > [ 75.9 , 55. ], > [ 76. , 55.47058824], > [ 76.52941176, 56. ], > [ 76.9 , 57. ], > [ 76.9 , 58. ], > [ 76.9 , 59. ], > [ 76.9 , 60. ], > [ 76.9 , 61. ], > [ 76.9 , 62. ], > [ 76.9 , 63. ], > [ 76.9 , 64. ], > [ 76.9 , 65. ], > [ 76.9 , 66. ], > [ 76.9 , 67. ], > [ 76.9 , 68. ], > [ 76.9 , 69. ], > [ 76.9 , 70. ], > [ 76.9 , 71. ], > [ 76.9 , 72. ], > [ 76.9 , 73. ], > [ 76.9 , 74. ], > [ 76.9 , 75. ], > [ 76.9 , 76. ], > [ 76.9 , 77. ], > [ 76.9 , 78. ], > [ 76.9 , 79. ], > [ 76.9 , 80. ], > [ 76.9 , 81. ], > [ 76.9 , 82. ], > [ 76.9 , 83. ], > [ 76.9 , 84. ], > [ 76.9 , 85. ], > [ 76.9 , 86. ], > [ 76.9 , 87. ], > [ 76.9 , 88. ], > [ 76.9 , 89. ], > [ 76.9 , 90. ], > [ 76.9 , 91. ], > [ 76.9 , 92. ], > [ 76.9 , 93. ], > [ 76.9 , 94. ], > [ 76. , 94.9 ]]), array([[ 40.47058824, 61. > ], > [ 40. , 60.52941176], > [ 39.47058824, 60. ], > [ 39. , 59.52941176], > [ 38.9 , 60. ], > [ 39. , 60.47058824], > [ 39.52941176, 61. ], > [ 40. , 61.1 ], > [ 40.47058824, 61. ]]), array([[ 48.0300679 , 13. ], > [ 48. , 12.9699321 ], > [ 47. , 12.9699321 ], > [ 46. , 12.9 ], > [ 45. , 12.9 ], > [ 44.1 , 12. ], > [ 44. , 11.9 ], > [ 43. , 11.9 ], > [ 42. , 11.9 ], > [ 41.9 , 12. ], > [ 41. , 12.9 ], > [ 40. , 12.9 ], > [ 39.64862966, 13. ], > [ 40. , 13.1 ], > [ 41. , 13.1 ], > [ 42. , 13.1 ], > [ 43. , 13.1 ], > [ 44. , 13.0300679 ], > [ 45. , 13.1 ], > [ 46. , 13.1 ], > [ 47. , 13.0300679 ], > [ 48. , 13.0300679 ], > [ 48.0300679 , 13. ]]), array([[ 41.1, 22. ], > [ 41. , 21.9], > [ 40. , 21.9], > [ 39.9, 22. ], > [ 40. , 22.1], > [ 41. , 22.1], > [ 41.1, 22. ]]), array([[ 42.1 , 79. ], > [ 42.1 , 78. ], > [ 42.1 , 77. ], > [ 42. , 76.9 ], > [ 41.1 , 76. ], > [ 41. , 75.9 ], > [ 40. , 75.9 ], > [ 39.9 , 76. ], > [ 39.9 , 77. ], > [ 39.89222977, 78. ], > [ 40. , 78.47058824], > [ 41. , 78.47058824], > [ 41.52941176, 79. ], > [ 42. , 79.1 ], > [ 42.1 , 79. ]]), array([[ 49.13129412, 110. > ], > [ 49. , 109.9699321 ], > [ 48.9699321 , 110. ], > [ 49. , 110.0300679 ], > [ 49.13129412, 110. ]]), array([[ 50.1, 13. ], > [ 50. , 12.9], > [ 49.9, 13. ], > [ 50. , 13.1], > [ 50.1, 13. ]]), array([[ 58.0300679 , 112. ], > [ 58. , 111.9699321 ], > [ 57.86870588, 112. ], > [ 58. , 112.0300679 ], > [ 58.0300679 , 112. ]]), array([[ 60.1, 113. ], > [ 60. , 112.9], > [ 59.9, 113. ], > [ 60. , 113.1], > [ 60.1, 113. ]]), array([[ 64.1, 19. ], > [ 64. , 18.9], > [ 63.9, 19. ], > [ 64. , 19.1], > [ 64.1, 19. ]]), array([[ 70.1 , 52. ], > [ 70. , 51.52941176], > [ 69.52941176, 52. ], > [ 70. , 52.47058824], > [ 70.1 , 52. ]]), array([[ 72.35137034, 15. ], > [ 72. , 14.9 ], > [ 71. , 14.9 ], > [ 70.9 , 15. ], > [ 71. , 15.1 ], > [ 72. , 15.1 ], > [ 72.35137034, 15. ]]), array([[ 75.47058824, 15. ], > [ 75. , 14.9 ], > [ 74.64862966, 15. ], > [ 75. , 15.1 ], > [ 75.47058824, 15. ]]), array([[ 79.0300679, 16. ], > [ 79. , 15.9699321], > [ 78.9699321, 16. ], > [ 79. , 16.0300679], > [ 79.0300679, 16. ]]), array([[ 81. , 57.89222977], > [ 80.10777023, 57. ], > [ 81. , 56.10777023], > [ 81.89222977, 57. ], > [ 81. , 57.89222977]]), array([[ 99.10777023, 21. ], > [ 99. , 20.9 ], > [ 98. , 20.9 ], > [ 97. , 20.52941176], > [ 96.47058824, 20. ], > [ 96. , 19.9 ], > [ 95. , 19.9 ], > [ 94. , 19.9 ], > [ 93. , 19.9 ], > [ 92. , 19.9 ], > [ 91. , 19.9 ], > [ 90. , 19.52941176], > [ 89. , 19.9 ], > [ 88.52941176, 20. ], > [ 88. , 20.52941176], > [ 87. , 20.9 ], > [ 86.52941176, 21. ], > [ 87. , 21.47058824], > [ 88. , 21.47058824], > [ 88.52941176, 22. ], > [ 89. , 22.47058824], > [ 90. , 22.47058824], > [ 91. , 22.47058824], > [ 92. , 22.47058824], > [ 93. , 22.47058824], > [ 93.52941176, 23. ], > [ 94. , 23.1 ], > [ 95. , 23.1 ], > [ 95.47058824, 23. ], > [ 96. , 22.47058824], > [ 96.52941176, 23. ], > [ 97. , 23.1 ], > [ 97.47058824, 23. ], > [ 98. , 22.47058824], > [ 98.47058824, 22. ], > [ 99. , 21.47058824], > [ 99.10777023, 21. ]]), array([[ 90. , 31.9 ], > [ 89.1 , 31. ], > [ 89.1 , 30. ], > [ 89.47058824, 29. ], > [ 90. , 28.47058824], > [ 90.52941176, 29. ], > [ 90.9 , 30. ], > [ 90.9 , 31. ], > [ 90. , 31.9 ]]), array([[ 92. , 35.9 ], > [ 91.1 , 35. ], > [ 91. , 34.52941176], > [ 90.47058824, 34. ], > [ 90.1 , 33. ], > [ 90.1 , 32. ], > [ 91. , 31.1 ], > [ 91.9 , 32. ], > [ 91.9 , 33. ], > [ 92. , 33.1 ], > [ 92.9 , 34. ], > [ 92.9 , 35. ], > [ 92. , 35.9 ]]), array([[ 100. , > 111.52941176], > [ 99. , 111.9 ], > [ 98.9 , 112. ], > [ 98. , 112.9 ], > [ 97. , 112.89222977], > [ 96.10777023, 112. ], > [ 96.1 , 111. ], > [ 96.1 , 110. ], > [ 97. , 109.1 ], > [ 97.47058824, 109. ], > [ 97. , 108.9 ], > [ 96.9 , 109. ], > [ 96. , 109.9 ], > [ 95.52941176, 110. ], > [ 95. , 110.52941176], > [ 94.9 , 111. ], > [ 94. , 111.9 ], > [ 93.9 , 112. ], > [ 93. , 112.9 ], > [ 92.9 , 113. ], > [ 92.9 , 114. ], > [ 93. , 114.1 ], > [ 93.1 , 114. ], > [ 93.1 , 113. ], > [ 94. , 112.1 ], > [ 94.1 , 112. ], > [ 95. , 111.1 ], > [ 95.9 , 112. ], > [ 95.9 , 113. ], > [ 95.52941176, 114. ], > [ 95. , 114.52941176], > [ 94.89222977, 115. ], > [ 94. , 115.89222977], > [ 93.9 , 116. ], > [ 93. , 116.9 ], > [ 92.9 , 117. ], > [ 92. , 117.9 ], > [ 91. , 117.9 ], > [ 90.1 , 117. ], > [ 90.1 , 116. ], > [ 90.1 , 115. ], > [ 90.1 , 114. ], > [ 91. , 113.1 ], > [ 91.1 , 113. ], > [ 91.47058824, 112. ], > [ 92. , 111.47058824], > [ 92.1 , 111. ], > [ 93. , 110.1 ], > [ 93.1 , 110. ], > [ 94. , 109.1 ], > [ 94.1 , 109. ], > [ 95. , 108.1 ], > [ 95.1 , 108. ], > [ 96. , 107.1 ], > [ 97. , 107.1 ], > [ 98. , 107.47058824], > [ 98.52941176, 108. ], > [ 99. , 108.1 ], > [ 99.9 , 109. ], > [ 100. , 109.47058824], > [ 100.52941176, 110. ], > [ 100.52941176, 111. ], > [ 100. , 111.52941176]]), array([[ 100. , > 41.52941176], > [ 99. , 41.9 ], > [ 98. , 41.52941176], > [ 97.47058824, 41. ], > [ 97. , 40.9 ], > [ 96. , 40.89222977], > [ 95.10777023, 40. ], > [ 95. , 39.9 ], > [ 94.1 , 39. ], > [ 94. , 38.9 ], > [ 93.1 , 38. ], > [ 93. , 37.9 ], > [ 92.1 , 37. ], > [ 92.1 , 36. ], > [ 93. , 35.1 ], > [ 93.9 , 36. ], > [ 94. , 36.1 ], > [ 94.9 , 37. ], > [ 95. , 37.10777023], > [ 95.89222977, 38. ], > [ 96. , 38.1 ], > [ 96.9 , 39. ], > [ 97. , 39.1 ], > [ 98. , 39.47058824], > [ 98.52941176, 40. ], > [ 99. , 40.1 ], > [ 100. , 40.47058824], > [ 100.52941176, 41. ], > [ 100. , 41.52941176]]), array([[ 94.0300679, 122. > ], > [ 94. , 121.9699321], > [ 93. , 121.9699321], > [ 92.9699321, 122. ], > [ 93. , 122.0300679], > [ 94. , 122.0300679], > [ 94.0300679, 122. ]]), array([[ 95. , 22.52941176], > [ 94.47058824, 22. ], > [ 95. , 21.47058824], > [ 95.52941176, 22. ], > [ 95. , 22.52941176]]), array([[ 102. , 28.9 > ], > [ 101. , 28.9 ], > [ 100. , 28.9 ], > [ 99. , 28.52941176], > [ 98. , 28.9 ], > [ 97. , 28.9 ], > [ 96. , 28.52941176], > [ 95.47058824, 28. ], > [ 96. , 27.47058824], > [ 97. , 27.1 ], > [ 98. , 27.1 ], > [ 99. , 27.47058824], > [ 100. , 27.1 ], > [ 101. , 27.1 ], > [ 102. , 27.1 ], > [ 102.9 , 28. ], > [ 102. , 28.9 ]]), array([[ 99. , 36.9 > ], > [ 98. , 36.52941176], > [ 97. , 36.9 ], > [ 96.1 , 36. ], > [ 96.1 , 35. ], > [ 96.1 , 34. ], > [ 96.1 , 33. ], > [ 96.1 , 32. ], > [ 96.1 , 31. ], > [ 97. , 30.1 ], > [ 98. , 30.1 ], > [ 98.9 , 31. ], > [ 98.9 , 32. ], > [ 98. , 32.9 ], > [ 97.9 , 33. ], > [ 97.9 , 34. ], > [ 97.9 , 35. ], > [ 98. , 35.47058824], > [ 98.10777023, 35. ], > [ 99. , 34.10777023], > [ 99.89222977, 35. ], > [ 99.9 , 36. ], > [ 99. , 36.9 ]]), array([[ 99. , > 107.52941176], > [ 98.47058824, 107. ], > [ 99. , 106.47058824], > [ 99.52941176, 107. ], > [ 99. , 107.52941176]]), array([[ 99. , > 115.52941176], > [ 98.47058824, 115. ], > [ 99. , 114.47058824], > [ 99.52941176, 115. ], > [ 99. , 115.52941176]]), array([[ 106. , 37.9 > ], > [ 105.89222977, 38. ], > [ 105. , 38.89222977], > [ 104.10777023, 38. ], > [ 104. , 37.9 ], > [ 103.1 , 37. ], > [ 103. , 36.9 ], > [ 102.9 , 37. ], > [ 102.9 , 38. ], > [ 102. , 38.9 ], > [ 101.1 , 38. ], > [ 101.1 , 37. ], > [ 101. , 36.9 ], > [ 100.1 , 36. ], > [ 100.1 , 35. ], > [ 100.1 , 34. ], > [ 101. , 33.1 ], > [ 101.1 , 33. ], > [ 101.1 , 32. ], > [ 102. , 31.1 ], > [ 103. , 31.1 ], > [ 103.1 , 31. ], > [ 104. , 30.1 ], > [ 105. , 30.1 ], > [ 105.9 , 31. ], > [ 106. , 31.1 ], > [ 106.9 , 32. ], > [ 106. , 32.9 ], > [ 105.9 , 33. ], > [ 106. , 33.1 ], > [ 106.9 , 34. ], > [ 106.9 , 35. ], > [ 106.9 , 36. ], > [ 106.9 , 37. ], > [ 106. , 37.9 ]]), array([[ 102. , > 42.52941176], > [ 101. , 42.9 ], > [ 100.1 , 42. ], > [ 101. , 41.1 ], > [ 102. , 41.47058824], > [ 102.52941176, 42. ], > [ 102. , 42.52941176]]), array([[ 106.47058824, 21. > ], > [ 106. , 20.9 ], > [ 105. , 20.9 ], > [ 104. , 20.9 ], > [ 103. , 20.9 ], > [ 102.9 , 21. ], > [ 103. , 21.1 ], > [ 104. , 21.47058824], > [ 104.52941176, 22. ], > [ 105. , 22.1 ], > [ 105.47058824, 22. ], > [ 106. , 21.47058824], > [ 106.47058824, 21. ]]), array([[ 103. , > 29.52941176], > [ 102.47058824, 29. ], > [ 103. , 28.47058824], > [ 103.52941176, 29. ], > [ 103. , 29.52941176]]), array([[ 107. , > 43.52941176], > [ 106. , 43.9 ], > [ 105. , 43.9 ], > [ 104. , 43.52941176], > [ 103.47058824, 43. ], > [ 104. , 42.47058824], > [ 105. , 42.1 ], > [ 106. , 42.1 ], > [ 107. , 42.47058824], > [ 107.52941176, 43. ], > [ 107. , 43.52941176]]), array([[ 107. , > 105.52941176], > [ 106. , 105.9 ], > [ 105.1 , 105. ], > [ 105.1 , 104. ], > [ 105.47058824, 103. ], > [ 106. , 102.47058824], > [ 106.52941176, 103. ], > [ 106.9 , 104. ], > [ 107. , 104.47058824], > [ 107.52941176, 105. ], > [ 107. , 105.52941176]]), array([[ 108.1 , 112. > ], > [ 108. , 111.9 ], > [ 107.89222977, 112. ], > [ 107. , 112.89222977], > [ 106.9 , 113. ], > [ 107. , 113.1 ], > [ 107.1 , 113. ], > [ 108. , 112.1 ], > [ 108.1 , 112. ]]), array([[ 114. , 45.9], > [ 113. , 45.9], > [ 112. , 45.9], > [ 111.1, 45. ], > [ 111. , 44.9], > [ 110. , 44.9], > [ 109. , 44.9], > [ 108. , 44.9], > [ 107.1, 44. ], > [ 108. , 43.1], > [ 109. , 43.1], > [ 110. , 43.1], > [ 111. , 43.1], > [ 112. , 43.1], > [ 113. , 43.1], > [ 114. , 43.1], > [ 114.9, 44. ], > [ 114.9, 45. ], > [ 114. , 45.9]]), array([[ 108.1, 109. ], > [ 108. , 108.9], > [ 107.9, 109. ], > [ 108. , 109.1], > [ 108.1, 109. ]]), array([[ 110.1 , 34. ], > [ 110. , 33.9 ], > [ 109.9 , 34. ], > [ 110. , 34.47058824], > [ 110.1 , 34. ]]), array([[ 111. , 104.9], > [ 110. , 104.9], > [ 109.1, 104. ], > [ 110. , 103.1], > [ 111. , 103.1], > [ 111.9, 104. ], > [ 111. , 104.9]]), array([[ 111.1, 37. ], > [ 111.1, 36. ], > [ 111. , 35.9], > [ 110.9, 36. ], > [ 110.9, 37. ], > [ 111. , 37.1], > [ 111.1, 37. ]]), array([[ 114.1 , 115. ], > [ 114.10777023, 114. ], > [ 114. , 113.52941176], > [ 113.47058824, 113. ], > [ 113.47058824, 112. ], > [ 113.47058824, 111. ], > [ 113. , 110.52941176], > [ 112.47058824, 110. ], > [ 112. , 109.52941176], > [ 111.9 , 110. ], > [ 112. , 110.47058824], > [ 112.52941176, 111. ], > [ 112.9 , 112. ], > [ 112.9 , 113. ], > [ 112.9 , 114. ], > [ 112.9 , 115. ], > [ 112.52941176, 116. ], > [ 112. , 116.52941176], > [ 111.9 , 117. ], > [ 112. , 117.1 ], > [ 112.47058824, 117. ], > [ 113. , 116.47058824], > [ 113.47058824, 116. ], > [ 114. , 115.47058824], > [ 114.1 , 115. ]]), array([[ 113. , > 101.52941176], > [ 112.47058824, 101. ], > [ 113. , 100.47058824], > [ 113.52941176, 101. ], > [ 113. , 101.52941176]]), array([[ 115.47058824, 119. > ], > [ 115.47058824, 118. ], > [ 115. , 117.52941176], > [ 114.52941176, 118. ], > [ 114.52941176, 119. ], > [ 114. , 119.52941176], > [ 113.9 , 120. ], > [ 113.9 , 121. ], > [ 113.9 , 122. ], > [ 113.9 , 123. ], > [ 114. , 123.47058824], > [ 114.1 , 123. ], > [ 114.1 , 122. ], > [ 114.10777023, 121. ], > [ 114.47058824, 120. ], > [ 115. , 119.47058824], > [ 115.47058824, 119. ]]), array([[ 135. , 65.9 > ], > [ 134. , 65.9 ], > [ 133. , 65.9 ], > [ 132. , 65.9 ], > [ 131. , 65.9 ], > [ 130. , 65.52941176], > [ 129.47058824, 65. ], > [ 129. , 64.9 ], > [ 128. , 64.9 ], > [ 127. , 64.9 ], > [ 126. , 64.52941176], > [ 125.47058824, 64. ], > [ 125. , 63.9 ], > [ 124. , 63.9 ], > [ 123. , 63.89222977], > [ 122. , 63.9 ], > [ 121. , 63.52941176], > [ 120. , 63.9 ], > [ 119. , 63.9 ], > [ 118. , 63.9 ], > [ 117.9 , 64. ], > [ 117. , 64.9 ], > [ 116. , 64.52941176], > [ 115.47058824, 64. ], > [ 115. , 63.9 ], > [ 114.9 , 64. ], > [ 114.9 , 65. ], > [ 115. , 65.1 ], > [ 116. , 65.1 ], > [ 116.9 , 66. ], > [ 117. , 66.1 ], > [ 118. , 66.1 ], > [ 119. , 66.1 ], > [ 119.9 , 67. ], > [ 120. , 67.1 ], > [ 121. , 67.1 ], > [ 122. , 67.1 ], > [ 123. , 67.47058824], > [ 123.52941176, 68. ], > [ 124. , 68.1 ], > [ 125. , 68.1 ], > [ 126. , 68.1 ], > [ 127. , 68.1 ], > [ 128. , 68.47058824], > [ 128.52941176, 69. ], > [ 129. , 69.1 ], > [ 130. , 69.1 ], > [ 131. , 69.1 ], > [ 132. , 69.1 ], > [ 133. , 69.47058824], > [ 133.52941176, 70. ], > [ 134. , 70.1 ], > [ 135. , 70.1 ]]), array([[ 115. , > 92.52941176], > [ 114.47058824, 92. ], > [ 114.47058824, 91. ], > [ 115. , 90.47058824], > [ 115.52941176, 91. ], > [ 115.52941176, 92. ], > [ 115. , 92.52941176]]), array([[ 115. , > 97.52941176], > [ 114.47058824, 97. ], > [ 114.47058824, 96. ], > [ 115. , 95.47058824], > [ 115.52941176, 96. ], > [ 115.52941176, 97. ], > [ 115. , 97.52941176]]), array([[ 123. , > 53.64862966], > [ 122.35137034, 53. ], > [ 123. , 52.35137034], > [ 123.64862966, 53. ], > [ 123. , 53.64862966]]), array([[ 135. , > 47.64862966], > [ 134.35137034, 47. ], > [ 134.1 , 46. ], > [ 134.1 , 45. ], > [ 134.1 , 44. ], > [ 134.1 , 43. ], > [ 134.0300679 , 42. ], > [ 134. , 41.9699321 ], > [ 133.1 , 41. ], > [ 133.1 , 40. ], > [ 133.1 , 39. ], > [ 133. , 38.9 ], > [ 132.1 , 38. ], > [ 132.1 , 37. ], > [ 132.1 , 36. ], > [ 132.0300679 , 35. ], > [ 132. , 34.9699321 ], > [ 131.1 , 34. ], > [ 131.1 , 33. ], > [ 131. , 32.9 ], > [ 130.1 , 32. ], > [ 130. , 31.52941176], > [ 129. , 31.9 ], > [ 128.1 , 31. ], > [ 128.1 , 30. ], > [ 129. , 29.1 ], > [ 129.1 , 29. ], > [ 129. , 28.9 ], > [ 128.9 , 29. ], > [ 128. , 29.9 ], > [ 127. , 29.9 ], > [ 126. , 29.9 ], > [ 125.9 , 30. ], > [ 126. , 30.1 ], > [ 127. , 30.1 ], > [ 127.9 , 31. ], > [ 128. , 31.1 ], > [ 128.9 , 32. ], > [ 129. , 32.1 ], > [ 129.9 , 33. ], > [ 129.9 , 34. ], > [ 129.9 , 35. ], > [ 129.9 , 36. ], > [ 130. , 36.1 ], > [ 130.9 , 37. ], > [ 130.9 , 38. ], > [ 130.9 , 39. ], > [ 131. , 39.1 ], > [ 131.9 , 40. ], > [ 131.9 , 41. ], > [ 131.9 , 42. ], > [ 131.9 , 43. ], > [ 131.9 , 44. ], > [ 132. , 44.35137034], > [ 132.64862966, 45. ], > [ 132.9 , 46. ], > [ 132. , 46.9699321 ], > [ 131.1 , 46. ], > [ 131. , 45.9 ], > [ 130.1 , 45. ], > [ 130. , 44.9 ], > [ 129. , 44.9 ], > [ 128.0300679 , 44. ], > [ 128. , 43.9699321 ], > [ 127. , 43.9 ], > [ 126. , 43.9 ], > [ 125.9 , 44. ], > [ 125.9 , 45. ], > [ 125.9 , 46. ], > [ 125.9 , 47. ], > [ 126. , 47.1 ], > [ 127. , 47.1 ], > [ 127.9 , 48. ], > [ 128. , 48.1 ], > [ 129. , 48.1 ], > [ 130. , 48.1 ], > [ 131. , 48.13129412], > [ 132. , 48.13129412], > [ 132.64862966, 49. ], > [ 132.9 , 50. ], > [ 133. , 50.1 ], > [ 134. , 50.1 ], > [ 135. , 50.1 ]])] > >>> > Click here to Reply or Forward > Why this ad?Ads ? > Best CTET Coaching Delhi > Classroom Coaching by Experts with Study Material & Mock Tests. Apply > successmantraclasses.in/Laxmi_Nagar > 2.15 GB (14%) of 15 GB used > Manage > ?2013 Google - Terms & Privacy > Last account activity: 41 minutes ago > Details > scikit-image > Add to circles > Show details > Ads > Download Android Apps > Largest Collection of Android Apps. Save Data Cost. Try Mobogenie Now! > MoboGenie.com/Download-Android-Apps > Tata Housing Premium Home > Ariana,Bhubneswar > Prosperity in the Canopy of Nature > projects.tatahousing.in > Test Your Aptitude > with NIIT BJ Scholarship Test. Boost up your IT Career. Apply! > NIITCloudCampus.com/bjs > Embedded Linux 3.8 Kernal > 256 MB with i.MX287 Processor LOW Price, Ships Same Day! > www.crystalfontz.com > Government Job > Apply for Jobs in the Government Sector. 100% Free, Register Now! > Quikr.com/Government-Jobs > Buy 1 Get 1 Free > Comfortable & Stylish Women Shoes. Free Shipping, COD, Shop Now! > jabong.com/Sandals/Fastest_Delivery > ICICI? Car Insurance > Free Quick Quotes In 30 secs .Now, Also Use Fb to login & Insure > ICICILombard.com/Car_Insurance > Jobs In TCS > Apply today - Upload your profile A Unique 4th Generation Job Portal > www.wisdomjobs.com > > > > > On Thu, Sep 5, 2013 at 12:19 PM, Juan Nunez-Iglesias wrote: > >> Hi Payal, >> >> I think you're misunderstanding the purpose of "find_boundaries"... Not >> quite your fault since the documentation is pretty sparse there. >> >> I'll use my favourite fuzzball as an example: >> >> [image: Inline image 1] >> >> "find_boundaries" is meant to take in a segmentation, which is an image >> in which each region has a different integer label, like this one: >> >> [image: Inline image 2] >> >> Then, find_boundaries merely looks for pixels where the neighbouring >> labels are different: >> >> [image: Inline image 3] >> >> It's not doing any edge detection per se, it's just a tool for displaying >> segmentations when it is easier to look at edges than at regions (above). I >> think what you are after is edge detection? Maybe an image like this one: >> >> [image: Inline image 4] >> ? >> >> For that, you should directly use the edge detection algorithms, such as >> Sobel or Canny, without previously thresholding your image. Have a close >> look at the examples gallery to figure out if any are close to what you are >> after, and try to apply the code there to your own image: >> >> http://scikit-image.org/docs/dev/auto_examples/ >> >> Some of the more pertinent ones, I think: >> http://scikit-image.org/docs/dev/auto_examples/plot_canny.html >> http://scikit-image.org/docs/dev/auto_examples/plot_edge_filter.html >> >> http://scikit-image.org/docs/dev/auto_examples/plot_join_segmentations.html >> http://scikit-image.org/docs/dev/auto_examples/plot_label.html >> http://scikit-image.org/docs/dev/auto_examples/plot_marked_watershed.html >> >> http://scikit-image.org/docs/dev/auto_examples/plot_random_walker_segmentation.html >> http://scikit-image.org/docs/dev/auto_examples/plot_watershed.html >> >> http://scikit-image.org/docs/dev/auto_examples/applications/plot_coins_segmentation.html >> >> Note that in the edge detection examples, Canny/Sobel is applied to the >> image *before* any thresholding ? unlike the example code you provided. >> >> Juan. >> >> >> On Wed, Sep 4, 2013 at 5:31 PM, Payal Gupta wrote: >> >>> hello everyone... >>> i will try this code,in this i want to do read a image then do edge >>> detection after that find the boundaries of image object. but >>> find_boundaries return me a bool array but i need a integer array. is it >>> any solution of this. >>> >>> >>> code:: >>> >>> import Image >>> >>> from skimage import segmentation as seg,io,filter >>> >>> imge = io.imread("IMG_1.jpg") >>> >>> thresh = filter.threshold_otsu(imge) >>> >>> binary = imge> thresh >>> >>> edge_canny = filter.canny(binary) >>> >>> bimg =seg.find_boundaries(binary) >>> >>> print(bimg) >>> >>> fig, (ax0, ax1) = plt.subplots(ncols=2) >>> >>> ax0.imshow(bimg,cmap=plt.cm.gray) >>> ax1.imshow(binary,cmap=plt.cm.gray) >>> >>> >>> On Tue, Sep 3, 2013 at 7:42 PM, St?fan van der Walt wrote: >>> >>>> >>>> On 3 Sep 2013 11:45, "Payal Gupta" wrote: >>>> > >>>> > thanks it working but i confused when i use function of skimage >>>> library. i want to change rgb image to a graylevel image but inbuilt >>>> function rgb2gray not convert gray level image. >>>> > reply. >>>> >>>> If you want help on this list, please provide code examples of what you >>>> are attempting. >>>> >>>> St?fan >>>> >>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "scikit-image" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >>>> To unsubscribe from this group and all of its topics, send an email to >>>> scikit-image+unsubscribe at googlegroups.com. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "scikit-image" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to scikit-image+unsubscribe at googlegroups.com. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "scikit-image" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >> To unsubscribe from this group and all of its topics, send an email to >> scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screen Shot 2013-09-05 at 4.09.48 PM.png Type: image/png Size: 507844 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: label_im.png Type: image/png Size: 2610 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 159022.jpg Type: image/jpeg Size: 19541 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: boundary_im.png Type: image/png Size: 3072 bytes Desc: not available URL: From jni.soma at gmail.com Wed Sep 11 10:04:49 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Thu, 12 Sep 2013 00:04:49 +1000 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: Hi Payal, Please explain clearly what you are trying to do. We can't help you without that. For example, what are the images you're using? What are you trying to find within them? Your code is very confused: image = io.imread("IMG_2.jpg") > What is this image? > thresh = filter.threshold_otsu(image) > binary = image > thresh > Why are you thresholding here? > imag= color.colorconv.rgb2grey(binary) > img = array(imag) > Converting a binary image using rgb2grey makes no sense. > edge_canny = canny(img) > edge_sobel = sobel(img) > contours = measure.find_contours(imag,0.9,'high') > I don't think this function is what you want. If I'm not mistaken, find_countours is used for isocline contour plots, such as this: https://en.wikipedia.org/wiki/File:Contour2D.svg print contours > fig, (ax0, ax1) = plt.subplots(ncols=2) > ax0.imshow(imag ,cmap=plt.cm.gray) > ax0.set_title('Roberts Edge Detection') > ax0.axis('off') > ax1.imshow(edge_canny, cmap=plt.cm.gray) > ax1.set_title('Sobel Edge Detection') > ax1.axis('off') Did you attach the images produced by this plot? Juan. -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Thu Sep 12 05:30:36 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Thu, 12 Sep 2013 02:30:36 -0700 (PDT) Subject: Get border pixels of labelled region In-Reply-To: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> Message-ID: <60bf0459-27af-4798-8c30-44b9863a1279@googlegroups.com> hi Juan.. > image = io.imread("IMG_2.jpg") > i attach a image. > thresh = filter.threshold_otsu(image) > binary = image > thresh > thresholding do b'coz of i want binary image. > imag= color.colorconv.rgb2grey(binary) > img = array(imag) > it done b'coz after thresholding image have some rgb component but after do rgb2grey no rgb component so i do this. > > contours = measure.find_contours(imag,0.9,'high') > i want close contour array like in matlab bwboundaries works. do you know it? > print contours > fig, (ax0, ax1) = plt.subplots(ncols=2) > ax0.imshow(imag ,cmap=plt.cm.gray) > ax0.set_title('Roberts Edge Detection') > ax0.axis('off') > ax1.imshow(edge_canny, cmap=plt.cm.gray) > ax1.set_title('Sobel Edge Detection') > ax1.axis('off') see the attachment ... reply me -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: figure_2.png Type: image/png Size: 49503 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: IMG_1.JPG Type: image/jpeg Size: 18063 bytes Desc: not available URL: From erpayal2010 at gmail.com Thu Sep 12 06:24:21 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Thu, 12 Sep 2013 03:24:21 -0700 (PDT) Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: <81dbe35a-1dbe-4364-b9b5-d6f9c5516461@googlegroups.com> hi Juan... i have done it.... :) :) plz solve the contour problem. :( :( reply me On Thursday, September 12, 2013 9:19:36 AM UTC+5:30, Juan Nunez-Iglesias wrote: > > On Thu, Sep 12, 2013 at 2:58 AM, Payal Gupta > > wrote: > >> hello... >> i m also use this prog to count white pixel and black pixel bt i cant >> save an image and cant count the pixel. >> can you help me. >> > > "white pixels" and "black pixels" will mean different things with > different images. Can you send us a sample image? > -------------- next part -------------- An HTML attachment was scrubbed... URL: From dkin at walla.co.il Thu Sep 12 12:19:17 2013 From: dkin at walla.co.il (Dan) Date: Thu, 12 Sep 2013 09:19:17 -0700 (PDT) Subject: Intensity plot of along the line Message-ID: Hi, Is there a way to generate an intensity plot of along the line using scikit-image (like Plot Profile option in imageJ) (example: http://imagej.1557.x6.nabble.com/file/n3682337/cracks.png). Thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL: From tcaswell at uchicago.edu Thu Sep 12 12:29:08 2013 From: tcaswell at uchicago.edu (Thomas A Caswell) Date: Thu, 12 Sep 2013 11:29:08 -0500 Subject: Intensity plot of along the line In-Reply-To: References: Message-ID: scipy.ndimage.interpolation.map_coordinates ( http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation.map_coordinates.html) + matplotlib will do what you want. Tom On Thu, Sep 12, 2013 at 11:19 AM, Dan wrote: > Hi, > > Is there a way to generate an intensity plot of along the line using > scikit-image (like Plot Profile option in imageJ) (example: > http://imagej.1557.x6.nabble.com/file/n3682337/cracks.png). > > Thanks. > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- Thomas A Caswell PhD Candidate University of Chicago Nagel and Gardel labs tcaswell at uchicago.edu jfi.uchicago.edu/~tcaswell o: 773.702.7204 -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Wed Sep 11 23:49:36 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Thu, 12 Sep 2013 13:49:36 +1000 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> Message-ID: On Thu, Sep 12, 2013 at 2:58 AM, Payal Gupta wrote: > hello... > i m also use this prog to count white pixel and black pixel bt i cant save > an image and cant count the pixel. > can you help me. > "white pixels" and "black pixels" will mean different things with different images. Can you send us a sample image? -------------- next part -------------- An HTML attachment was scrubbed... URL: From silvertrumpet999 at gmail.com Thu Sep 12 21:29:56 2013 From: silvertrumpet999 at gmail.com (Josh Warner) Date: Thu, 12 Sep 2013 18:29:56 -0700 (PDT) Subject: Intensity plot of along the line In-Reply-To: <52320449.6090400@mitotic-machine.org> References: <52320449.6090400@mitotic-machine.org> Message-ID: +1 for the viewer recommendation. It's located in viewer_examples/plugins/lineprofile.py. On Thursday, September 12, 2013 1:13:29 PM UTC-5, Guillaume wrote: There's a line profile tool in the Tony Yu's ImageViewer.. > > > On 12/09/2013 18:29, Thomas A Caswell wrote: > > scipy.ndimage.interpolation.map_coordinates ( > http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation.map_coordinates.html) > + matplotlib will do what you want. > > Tom > > > On Thu, Sep 12, 2013 at 11:19 AM, Dan >wrote: > >> Hi, >> >> Is there a way to generate an intensity plot of along the line using >> scikit-image (like Plot Profile option in imageJ) (example: >> http://imagej.1557.x6.nabble.com/file/n3682337/cracks.png). >> >> Thanks. >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image... at googlegroups.com . >> For more options, visit https://groups.google.com/groups/opt_out. >> > > > > -- > Thomas A Caswell > PhD Candidate University of Chicago > Nagel and Gardel labs > tcas... at uchicago.edu > jfi.uchicago.edu/~tcaswell > o: 773.702.7204 > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image... at googlegroups.com . > For more options, visit https://groups.google.com/groups/opt_out. > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From guillaume at mitotic-machine.org Thu Sep 12 14:13:29 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Thu, 12 Sep 2013 20:13:29 +0200 Subject: Intensity plot of along the line In-Reply-To: References: Message-ID: <52320449.6090400@mitotic-machine.org> There's a line profile tool in the Tony Yu's ImageViewer.. On 12/09/2013 18:29, Thomas A Caswell wrote: > scipy.ndimage.interpolation.map_coordinates > (http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation.map_coordinates.html) > + matplotlib will do what you want. > > Tom > > > On Thu, Sep 12, 2013 at 11:19 AM, Dan > wrote: > > Hi, > > Is there a way to generate an intensity plot of along the line > using scikit-image (like Plot Profile option in imageJ) (example: > http://imagej.1557.x6.nabble.com/file/n3682337/cracks.png). > > Thanks. > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, > send an email to scikit-image+unsubscribe at googlegroups.com > . > For more options, visit https://groups.google.com/groups/opt_out. > > > > > -- > Thomas A Caswell > PhD Candidate University of Chicago > Nagel and Gardel labs > tcaswell at uchicago.edu > jfi.uchicago.edu/~tcaswell > o: 773.702.7204 > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Thu Sep 12 20:37:59 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Fri, 13 Sep 2013 10:37:59 +1000 Subject: Get border pixels of labelled region In-Reply-To: <81dbe35a-1dbe-4364-b9b5-d6f9c5516461@googlegroups.com> References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> <81dbe35a-1dbe-4364-b9b5-d6f9c5516461@googlegroups.com> Message-ID: Hi Payal, I think we're getting somewhere. =) Thanks for the image. Questions: 1) Are you looking to segment out different cars? That is, do you want each car to have its own contour? With your current thresholding, you can see that the four cars on the right are all connected, so you would get a single contour of the whole blob, rather than a contour of each car. 2) I just saw the docfor bwboundaries. Do you want the interior holes of the objects to have its own contour, or do you want just a contour *around* each object and don't care about the interior? Also, do you care about parent/child object relationships? My guess is no to both these questions. For example, do you want a contour around the windshield of each car? Comments: Note that when you do rgb2gray on a thresholded RGB image, you no longer have a binary image, but a grayscale image with levels 0, 0.333, 0.667, and 1.0. I think you probably mean to do rgb2gray followed by threshold. Either way, my suspicion is that you want to segment the cars first (get one binary blob object per car), then find their contours. Am I right? Juan. On Thu, Sep 12, 2013 at 8:24 PM, Payal Gupta wrote: > hi Juan... > i have done it.... :) :) > plz solve the contour problem. :( :( > reply me > > On Thursday, September 12, 2013 9:19:36 AM UTC+5:30, Juan Nunez-Iglesias > wrote: > >> On Thu, Sep 12, 2013 at 2:58 AM, Payal Gupta wrote: >> >>> hello... >>> i m also use this prog to count white pixel and black pixel bt i cant >>> save an image and cant count the pixel. >>> can you help me. >>> >> >> "white pixels" and "black pixels" will mean different things with >> different images. Can you send us a sample image? >> > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fboulogne at sciunto.org Fri Sep 13 06:31:08 2013 From: fboulogne at sciunto.org (=?ISO-8859-1?Q?Fran=E7ois_Boulogne?=) Date: Fri, 13 Sep 2013 12:31:08 +0200 Subject: Intensity plot of along the line In-Reply-To: References: <52320449.6090400@mitotic-machine.org> Message-ID: <5232E96C.8000405@sciunto.org> Le 13/09/2013 03:29, Josh Warner a ??????crit : > > +1 for the viewer recommendation. It's located in > |viewer_examples/plugins/lineprofile.py|. > > I'm wondering why this code doesn't use draw.line(). Any obvious reason? Thx. -- Fran??????ois Boulogne. http://www.sciunto.org GPG fingerprint: 25F6 C971 4875 A6C1 EDD1 75C8 1AA7 216E 32D5 F22F -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Fri Sep 13 03:26:21 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Fri, 13 Sep 2013 12:56:21 +0530 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> <81dbe35a-1dbe-4364-b9b5-d6f9c5516461@googlegroups.com> Message-ID: hi juan.... i can't understand array after using find_contour which return a ndarray. it is main prob i wanna find out contour array. On Fri, Sep 13, 2013 at 6:07 AM, Juan Nunez-Iglesias wrote: > Hi Payal, > > I think we're getting somewhere. =) Thanks for the image. > > Questions: > 1) Are you looking to segment out different cars? That is, do you want > each car to have its own contour? With your current thresholding, you can > see that the four cars on the right are all connected, so you would get a > single contour of the whole blob, rather than a contour of each car. > 2) I just saw the docfor bwboundaries. Do you want the interior holes of the objects to have its > own contour, or do you want just a contour *around* each object and don't > care about the interior? Also, do you care about parent/child object > relationships? My guess is no to both these questions. For example, do you > want a contour around the windshield of each car? > > Comments: > > Note that when you do rgb2gray on a thresholded RGB image, you no longer > have a binary image, but a grayscale image with levels 0, 0.333, 0.667, and > 1.0. I think you probably mean to do rgb2gray followed by threshold. > > Either way, my suspicion is that you want to segment the cars first (get > one binary blob object per car), then find their contours. Am I right? > > Juan. > > > On Thu, Sep 12, 2013 at 8:24 PM, Payal Gupta wrote: > >> hi Juan... >> i have done it.... :) :) >> plz solve the contour problem. :( :( >> reply me >> >> On Thursday, September 12, 2013 9:19:36 AM UTC+5:30, Juan Nunez-Iglesias >> wrote: >> >>> On Thu, Sep 12, 2013 at 2:58 AM, Payal Gupta wrote: >>> >>>> hello... >>>> i m also use this prog to count white pixel and black pixel bt i cant >>>> save an image and cant count the pixel. >>>> can you help me. >>>> >>> >>> "white pixels" and "black pixels" will mean different things with >>> different images. Can you send us a sample image? >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image+unsubscribe at googlegroups.com. >> >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pierre.villeneuve at gmail.com Fri Sep 13 18:21:33 2013 From: pierre.villeneuve at gmail.com (Pierre Villeneuve) Date: Fri, 13 Sep 2013 15:21:33 -0700 (PDT) Subject: Any plans for 0.9 release? Message-ID: I am eagerly awaiting the new RANSAC model fitting tools in the current dev version. I am working on Windows 8 x64 and it turns into a total mess when I try to compile skimage myself. I normally rely on the binaries at Chris Gohlke's site, but he only has the current stable version 0.8.2. I am just curious to know if there is a planned timeframe for releasing 0.9? Thanks! -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Fri Sep 13 04:49:30 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Fri, 13 Sep 2013 18:49:30 +1000 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> <81dbe35a-1dbe-4364-b9b5-d6f9c5516461@googlegroups.com> Message-ID: The input is a grayscale image, not a binary image. It finds contours of a given intensity threshold. The output is a list of arrays. Each array has shape (Q, 2), and it is a set of x, y coordinates of the points in the contour. If you want to look at the contours, you need to convert this to an image somehow. This example uses matplotlib's `plot` function to draw the contours on the image: http://scikit-image.org/docs/dev/auto_examples/plot_contours.html#example-plot-contours-py Alternately, you can round the contour coordinates to int and use those to make a new image: conts = find_contours(image, threshold) contour_image = zeros_like(image) for c in conts: c = np.round(c).astype(int) coords = (c[:, 0], c[:, 1]) contour_image[coords] = 1 imshow(contour_image) On Fri, Sep 13, 2013 at 5:26 PM, Payal Gupta wrote: > hi juan.... > > i can't understand array after using find_contour which return a ndarray. > it is main prob i wanna find out contour array. > > > On Fri, Sep 13, 2013 at 6:07 AM, Juan Nunez-Iglesias wrote: > >> Hi Payal, >> >> I think we're getting somewhere. =) Thanks for the image. >> >> Questions: >> 1) Are you looking to segment out different cars? That is, do you want >> each car to have its own contour? With your current thresholding, you can >> see that the four cars on the right are all connected, so you would get a >> single contour of the whole blob, rather than a contour of each car. >> 2) I just saw the docfor bwboundaries. Do you want the interior holes of the objects to have its >> own contour, or do you want just a contour *around* each object and don't >> care about the interior? Also, do you care about parent/child object >> relationships? My guess is no to both these questions. For example, do you >> want a contour around the windshield of each car? >> >> Comments: >> >> Note that when you do rgb2gray on a thresholded RGB image, you no longer >> have a binary image, but a grayscale image with levels 0, 0.333, 0.667, and >> 1.0. I think you probably mean to do rgb2gray followed by threshold. >> >> Either way, my suspicion is that you want to segment the cars first (get >> one binary blob object per car), then find their contours. Am I right? >> >> Juan. >> >> >> On Thu, Sep 12, 2013 at 8:24 PM, Payal Gupta wrote: >> >>> hi Juan... >>> i have done it.... :) :) >>> plz solve the contour problem. :( :( >>> reply me >>> >>> On Thursday, September 12, 2013 9:19:36 AM UTC+5:30, Juan Nunez-Iglesias >>> wrote: >>> >>>> On Thu, Sep 12, 2013 at 2:58 AM, Payal Gupta wrote: >>>> >>>>> hello... >>>>> i m also use this prog to count white pixel and black pixel bt i cant >>>>> save an image and cant count the pixel. >>>>> can you help me. >>>>> >>>> >>>> "white pixels" and "black pixels" will mean different things with >>>> different images. Can you send us a sample image? >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "scikit-image" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to scikit-image+unsubscribe at googlegroups.com. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "scikit-image" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >> To unsubscribe from this group and all of its topics, send an email to >> scikit-image+unsubscribe at googlegroups.com. >> >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Fri Sep 13 18:02:55 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Sat, 14 Sep 2013 00:02:55 +0200 Subject: Intensity plot of along the line In-Reply-To: References: Message-ID: On Thu, Sep 12, 2013 at 6:29 PM, Thomas A Caswell wrote: > scipy.ndimage.interpolation.map_coordinates > (http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation.map_coordinates.html) > + matplotlib will do what you want. For the record, map_coordinates is quite hard to use--have a look at skimage.transform.warp as well. St?fan From guillaume at mitotic-machine.org Fri Sep 13 18:14:57 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Sat, 14 Sep 2013 00:14:57 +0200 Subject: Intensity plot of along the line In-Reply-To: <5232E96C.8000405@sciunto.org> References: <52320449.6090400@mitotic-machine.org> <5232E96C.8000405@sciunto.org> Message-ID: <52338E61.9040303@mitotic-machine.org> No, none, G. On 13/09/2013 12:31, Fran?ois Boulogne wrote: > Le 13/09/2013 03:29, Josh Warner a ?crit : >> >> +1 for the viewer recommendation. It's located in >> |viewer_examples/plugins/lineprofile.py|. >> >> > > I'm wondering why this code doesn't use draw.line(). Any obvious reason? > Thx. > -- > Fran?ois Boulogne. > http://www.sciunto.org > GPG fingerprint: 25F6 C971 4875 A6C1 EDD1 75C8 1AA7 216E 32D5 F22F > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Fri Sep 13 18:53:28 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Sat, 14 Sep 2013 00:53:28 +0200 Subject: Any plans for 0.9 release? In-Reply-To: References: Message-ID: Dear Pierre We are certainly due for a release, and while the next week is very busy, I'm hoping to work on that in the two weeks following. I think we're looking at around 15 October. In the mean time, you may use the RANSAC tools without compiling by simply adding the appropriate Python files into the correct locations. Regards St?fan On Sat, Sep 14, 2013 at 12:21 AM, Pierre Villeneuve wrote: > I am eagerly awaiting the new RANSAC model fitting tools in the current dev > version. I am working on Windows 8 x64 and it turns into a total mess when > I try to compile skimage myself. I normally rely on the binaries at Chris > Gohlke's site, but he only has the current stable version 0.8.2. I am just > curious to know if there is a planned timeframe for releasing 0.9? Thanks! > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From pierre.villeneuve at gmail.com Sat Sep 14 14:52:50 2013 From: pierre.villeneuve at gmail.com (Pierre Villeneuve) Date: Sat, 14 Sep 2013 11:52:50 -0700 (PDT) Subject: Any plans for 0.9 release? In-Reply-To: References: Message-ID: Stefan, Thanks for the reply. I was in fact hoping the solution would be this simple. Don't rush the release then just for me :) It looks like I'll be all set! Thanks again. On Friday, September 13, 2013 3:53:28 PM UTC-7, Stefan van der Walt wrote: > > Dear Pierre > > We are certainly due for a release, and while the next week is very > busy, I'm hoping to work on that in the two weeks following. I think > we're looking at around 15 October. In the mean time, you may use the > RANSAC tools without compiling by simply adding the appropriate Python > files into the correct locations. > > Regards > St?fan > > On Sat, Sep 14, 2013 at 12:21 AM, Pierre Villeneuve > > wrote: > > I am eagerly awaiting the new RANSAC model fitting tools in the current > dev > > version. I am working on Windows 8 x64 and it turns into a total mess > when > > I try to compile skimage myself. I normally rely on the binaries at > Chris > > Gohlke's site, but he only has the current stable version 0.8.2. I am > just > > curious to know if there is a planned timeframe for releasing 0.9? > Thanks! > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an > > email to scikit-image... at googlegroups.com . > > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From google at terre-adelie.org Wed Sep 18 16:27:37 2013 From: google at terre-adelie.org (=?ISO-8859-1?Q?J=E9r=F4me?= Kieffer) Date: Wed, 18 Sep 2013 22:27:37 +0200 Subject: Keypoint matching and ORSA like algorithm Message-ID: <20130918222737.f901088124be300fb30dff46@terre-adelie.org> Hi all, I am working on image alignment using SIFT algorithm; but this also applies to SURF. Sometimes one needs to "refine" matching because of a few wrong match in the list. The ORSA algorithm looks adapted (Moisan-Stival ORSA (Optimized Random Sampling Algorithm) algorithm to filter out the false matches using the epipolar geometry constraint) but it uses only the X and Y coordinate of the keypoint and not the angle + orientation. Maybe using those informations it would be easier to spot those outliers, no ? Do you know an algorithm using those informations as well ? Thanks, -- J?r?me Kieffer From stefan at sun.ac.za Wed Sep 18 17:36:59 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Wed, 18 Sep 2013 23:36:59 +0200 Subject: Keypoint matching and ORSA like algorithm In-Reply-To: <20130918222737.f901088124be300fb30dff46@terre-adelie.org> References: <20130918222737.f901088124be300fb30dff46@terre-adelie.org> Message-ID: Hi Jerome On Wed, Sep 18, 2013 at 10:27 PM, J?r?me Kieffer wrote: > Sometimes one needs to "refine" matching because of a few wrong match > in the list. The ORSA algorithm looks adapted (Moisan-Stival ORSA > (Optimized Random Sampling Algorithm) algorithm to filter out the false > matches using the epipolar geometry constraint) but it uses only the X > and Y coordinate of the keypoint and not the angle + orientation. Maybe > using those informations it would be easier to spot those outliers, no ? > > Do you know an algorithm using those informations as well ? Using RANSAC (included in skimage as well), you can define any criterium you choose for inliers. Regards St?fan From google at terre-adelie.org Thu Sep 19 01:18:57 2013 From: google at terre-adelie.org (=?ISO-8859-1?Q?J=E9r=F4me?= Kieffer) Date: Thu, 19 Sep 2013 07:18:57 +0200 Subject: Keypoint matching and ORSA like algorithm In-Reply-To: References: <20130918222737.f901088124be300fb30dff46@terre-adelie.org> Message-ID: <20130919071857.7fe1ff95288a9164dbd23590@terre-adelie.org> Hello S?fan, On Wed, 18 Sep 2013 23:36:59 +0200 St?fan van der Walt wrote: > > Do you know an algorithm using those informations as well ? > > Using RANSAC (included in skimage as well), you can define any > criterium you choose for inliers. Wonderful, I will have a look. Cheers, -- J?r?me Kieffer From almar.klein at gmail.com Thu Sep 19 05:36:04 2013 From: almar.klein at gmail.com (Almar Klein) Date: Thu, 19 Sep 2013 11:36:04 +0200 Subject: ndarray subclasses Message-ID: Hi, Many functions in skimage return a numpy array, but the meaning of that array can differ significantly: sometimes it represents an image, sometimes a set of locations or vectors, etc. Skimage also has the Image class (that inherits from np.ndarray), which I believe is mostly there to make the image be shown as an image in IPython notebook. What about taking this idea a bit further? In particular, I am thinking about two things: 1) Allowing extra attributes for the Image class, like "sampling" that specifies the distance between the pixels. This attribute can then be used by algorithms to take anisotropy into account, and visualization toolkits could use it to scale the image in the correct way automatically. This may not seem a very common use case for 2D images, but 3D data is usually not isotropic. Other attributes that I think may be of use for the Image class are "origin" that specifies the location of the topleft pixel relative to an arbitrary coordinate frame, and "meta" for the meta data (e.g. EXIF tags). 2) Using a PointSet class to represent numpy arrays that are point sets or vector sets. Also such a class can make working with point data much easier, both in internal algorithms, and for the end-user. An example class can be seen here: https://gist.github.com/almarklein/6620956 it allow things like appending/removing/inserting/popping individual points, and calculating things like normals, angles, distances, etc. I would like to stress that both Image and PointSet class do (and should) inherit from np.ndarray, such that they are completely compatible with existing code in skimage and other packages. I am interested to learn whether these ideas can find their way into skimage or not, Almar -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Thu Sep 19 05:41:57 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Thu, 19 Sep 2013 11:41:57 +0200 Subject: ndarray subclasses In-Reply-To: References: Message-ID: Hi Almar On Thu, Sep 19, 2013 at 11:36 AM, Almar Klein wrote: > Skimage also has the Image class (that inherits from np.ndarray), which I > believe is mostly there to make the image be shown as an image in IPython > notebook. What about taking this idea a bit further? In particular, I am > thinking about two things: > > 1) Allowing extra attributes for the Image class, like "sampling" that > specifies the distance between the pixels. This attribute can then be used > by algorithms to take anisotropy into account, and visualization toolkits > could use it to scale the image in the correct way automatically. This may > not seem a very common use case for 2D images, but 3D data is usually not > isotropic. We tried making this the default output of imread, but it caused some problems (e.g. when you slice out a scalar, or sum, you get an Image object out!), so we're back to vanilla arrays. That said, the Image object is still quite useful. The Image class has a dictionary container for adding any type of meta-data you want (e.g., origin, sampling distance, etc.) so I don't know if it is necessary to explicitly specify what those fields should be. > 2) Using a PointSet class to represent numpy arrays that are point sets or > vector sets. Also such a class can make working with point data much easier, > both in internal algorithms, and for the end-user. > > An example class can be seen here: > https://gist.github.com/almarklein/6620956 it allow things like > appending/removing/inserting/popping individual points, and calculating > things like normals, angles, distances, etc. In this case, I see an argument for having such a class, since it behaves differently from a traditional image, and may need to be resampled to a regular grid, etc. The computation of normals, angles, etc. could be be utility functions outside the class (I guess I'm a minimalist when it comes to class design). Regards St?fan From almar.klein at gmail.com Thu Sep 19 06:03:28 2013 From: almar.klein at gmail.com (Almar Klein) Date: Thu, 19 Sep 2013 12:03:28 +0200 Subject: ndarray subclasses In-Reply-To: References: Message-ID: On 19 September 2013 11:41, St?fan van der Walt wrote: > Hi Almar > > On Thu, Sep 19, 2013 at 11:36 AM, Almar Klein > wrote: > > Skimage also has the Image class (that inherits from np.ndarray), which I > > believe is mostly there to make the image be shown as an image in IPython > > notebook. What about taking this idea a bit further? In particular, I am > > thinking about two things: > > > > 1) Allowing extra attributes for the Image class, like "sampling" that > > specifies the distance between the pixels. This attribute can then be > used > > by algorithms to take anisotropy into account, and visualization toolkits > > could use it to scale the image in the correct way automatically. This > may > > not seem a very common use case for 2D images, but 3D data is usually not > > isotropic. > > We tried making this the default output of imread, but it caused some > problems (e.g. when you slice out a scalar, or sum, you get an Image > object out!), so we're back to vanilla arrays. I've had the same problem with my own "Image" class. You can solve this pretty well by overloading __getitem__ and __array_wrap__. A small example: https://gist.github.com/almarklein/6621363 That said, the Image > object is still quite useful. The Image class has a dictionary > container for adding any type of meta-data you want (e.g., origin, > sampling distance, etc.) so I don't know if it is necessary to > explicitly specify what those fields should be. > I suppose that the most important bit is that functions that support anisotropy should look whether a "sampling" attribute is present in the given array. > 2) Using a PointSet class to represent numpy arrays that are point sets or > > vector sets. Also such a class can make working with point data much > easier, > > both in internal algorithms, and for the end-user. > > > > An example class can be seen here: > > https://gist.github.com/almarklein/6620956 it allow things like > > appending/removing/inserting/ > popping individual points, and calculating > > things like normals, angles, distances, etc. > > In this case, I see an argument for having such a class, since it > behaves differently from a traditional image, and may need to be > resampled to a regular grid, etc. > I do not necessarily mean that a PointSet represents an image (although it could), but more generally to for instance store the locations of detected feature points. The computation of normals, angles, > etc. could be be utility functions outside the class (I guess I'm a > minimalist when it comes to class design). > You're probably be right about that. The most important bit is the manipulation of individual points inside the pointset. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Thu Sep 19 09:17:01 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Thu, 19 Sep 2013 15:17:01 +0200 Subject: ndarray subclasses In-Reply-To: References: Message-ID: On Thu, Sep 19, 2013 at 12:03 PM, Almar Klein wrote: > I suppose that the most important bit is that functions that support > anisotropy should look whether a "sampling" attribute is present in the > given array. I don't think we currently have any of these, but for now we can probably include a `sampling` argument to functions that support it. > I do not necessarily mean that a PointSet represents an image (although it > could), but more generally to for instance store the locations of detected > feature points. How do you think this would fit into the scope of image processing? (Asked out of curiosity, not at all to put the idea down.) St?fan From kevin.keraudren at googlemail.com Thu Sep 19 11:46:34 2013 From: kevin.keraudren at googlemail.com (Kevin Keraudren) Date: Thu, 19 Sep 2013 16:46:34 +0100 Subject: ndarray subclasses In-Reply-To: References: Message-ID: <523B1C5A.5040009@googlemail.com> Le 19/09/2013 10:36, Almar Klein a ??????crit : > > 1) Allowing extra attributes for the Image class, like "sampling" that > specifies the distance between the pixels. This attribute can then be > used by algorithms to take anisotropy into account, and visualization > toolkits could use it to scale the image in the correct way > automatically. This may not seem a very common use case for 2D images, > but 3D data is usually not isotropic. > > Other attributes that I think may be of use for the Image class are > "origin" that specifies the location of the topleft pixel relative to > an arbitrary coordinate frame, and "meta" for the meta data (e.g. EXIF > tags). Hi, I am not related to the development of scikit-image but I guess its goal is to work on images in general and not get too specialised, for instance in Medical images. I am working on a Python interface for a C++ medical imaging library, and I chose to subclass np.ndarray, images keeping a header information ( 'dim', 'orientation', 'origin' and 'pixelSize'), the main feature is to keep track of those spatial coordinate when we slice or resample the array. As St??????fan pointed out " when you slice out a scalar, or sum, you get an Image object out!", but this has not been an issue so far, I just hide it by overriding: def __str__(self): if len(self.shape) == 0: return str(self.view(np.ndarray)) else: return self.__repr__() The documentation I placed online might give you more ideas on what could be done with a subclass of np.ndarray dedicated to images: http://www.doc.ic.ac.uk/~kpk09/irtk/#irtk.imread May I ask: if you were to add sampling information and spatial coordinates, such as an origin for the top-left pixel, how would you input that information into scikit-image, could you read it directly from the input files or would you need some user input? Kind regards, Kevin -------------- next part -------------- An HTML attachment was scrubbed... URL: From almar.klein at gmail.com Fri Sep 20 07:55:58 2013 From: almar.klein at gmail.com (Almar Klein) Date: Fri, 20 Sep 2013 13:55:58 +0200 Subject: ndarray subclasses In-Reply-To: <523B1C5A.5040009@googlemail.com> References: <523B1C5A.5040009@googlemail.com> Message-ID: > > On Thu, Sep 19, 2013 at 12:03 PM, Almar Klein > wrote: > > I suppose that the most important bit is that functions that support > > anisotropy should look whether a "sampling" attribute is present in the > > given array. > > I don't think we currently have any of these, but for now we can > probably include a `sampling` argument to functions that support it. > Mmm, you seem to be right, but you're *going* to :) The new marching cubes algorithm has a sampling argument, and I think Josh spoke about adding it so some morphological operators. I hope to do a PR on the MCP algorithm soon, which will add support for anisotropy as well. > I do not necessarily mean that a PointSet represents an image (although > it > > could), but more generally to for instance store the locations of > detected > > feature points. > > How do you think this would fit into the scope of image processing? > (Asked out of curiosity, not at all to put the idea down.) > That's a good point. I think a PointSet class fits image processing because many image processing algorithms either accept or produce some form of locations or vectors. I would still call it "image processing" when you process the resulting locations/vectors. However, such algorithms probably fall out the scope of scikit-image. So probably a better place for a PointSet class would be Scipy, but I have a feeling they would not be interested in including it. I am not related to the development of scikit-image but I guess its goal is > to work on images in general and not get too specialised, for instance in > Medical images. > I agree with that. I think that the only parameter of interest to scikit image is the "sampling" to deal with anisotropic arrays. So in that sense, it should be sufficient that sciki-image provides an Image class to which arbitrary attributes can be attached. Functions in scikit-image can the check if the array has a "sampling" attribute, and use it. If it returns an array with the same shape, it would be nice to also set the sampling on that. May I ask: if you were to add sampling information and spatial coordinates, > such as an origin for the top-left pixel, how would you input that > information into scikit-image, could you read it directly from the input > files or would you need some user input? > I am not sure I understand. In most cases the attributes are added to the image (i.e. numpy array) when it is read. -------------- next part -------------- An HTML attachment was scrubbed... URL: From silvertrumpet999 at gmail.com Fri Sep 20 21:07:31 2013 From: silvertrumpet999 at gmail.com (Josh Warner) Date: Fri, 20 Sep 2013 18:07:31 -0700 (PDT) Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: Indeed, marching cubes has anisotropic support presently. `random_walker` also does, though I think my original API for it is poor (only supports anisotropic `depth`, rather than true arbitrary anisotropy via `sampling`). I have an improvement/generalization PR for that in the works. I believe the most recent SLIC improvements also added a `sampling` parameter. On Friday, September 20, 2013 6:55:58 AM UTC-5, Almar Klein wrote: > > On Thu, Sep 19, 2013 at 12:03 PM, Almar Klein > >> wrote: >> > I suppose that the most important bit is that functions that support >> > anisotropy should look whether a "sampling" attribute is present in the >> > given array. >> >> I don't think we currently have any of these, but for now we can >> probably include a `sampling` argument to functions that support it. >> > > Mmm, you seem to be right, but you're *going* to :) The new marching > cubes algorithm has a sampling argument, and I think Josh spoke about > adding it so some morphological operators. I hope to do a PR on the MCP > algorithm soon, which will add support for anisotropy as well. > > > > I do not necessarily mean that a PointSet represents an image (although >> it >> > could), but more generally to for instance store the locations of >> detected >> > feature points. >> >> How do you think this would fit into the scope of image processing? >> (Asked out of curiosity, not at all to put the idea down.) >> > > That's a good point. I think a PointSet class fits image processing > because many image processing algorithms either accept or produce some form > of locations or vectors. I would still call it "image processing" when you > process the resulting locations/vectors. However, such algorithms probably > fall out the scope of scikit-image. > > So probably a better place for a PointSet class would be Scipy, but I have > a feeling they would not be interested in including it. > > > I am not related to the development of scikit-image but I guess its goal >> is to work on images in general and not get too specialised, for instance >> in Medical images. >> > > I agree with that. I think that the only parameter of interest to scikit > image is the "sampling" to deal with anisotropic arrays. So in that sense, > it should be sufficient that sciki-image provides an Image class to which > arbitrary attributes can be attached. Functions in scikit-image can the > check if the array has a "sampling" attribute, and use it. If it returns an > array with the same shape, it would be nice to also set the sampling on > that. > > > May I ask: if you were to add sampling information and spatial >> coordinates, such as an origin for the top-left pixel, how would you input >> that information into scikit-image, could you read it directly from the >> input files or would you need some user input? >> > > I am not sure I understand. In most cases the attributes are added to the > image (i.e. numpy array) when it is read. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.t.wilson.bak at googlemail.com Sat Sep 21 05:12:49 2013 From: r.t.wilson.bak at googlemail.com (Robin Wilson) Date: Sat, 21 Sep 2013 02:12:49 -0700 (PDT) Subject: binary_fill_holes, but creating separate regions inside each other Message-ID: <5c8658b8-71d2-4a74-a7b8-33bcdef858a5@googlegroups.com> Hi, I am currently using various skimage functions to perform a customised edge-based image segmentation. Once I've got the outlines of my segments, I am using binary_fill_holes to fill them so I get a binary 'blobs' image, which I can then label, and use for processing. However, when I have an image like this 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 binary_fill_holes simply fills the entire, outer shape - and thus the shape in the middle gets lost. Is there any simple way to do a fill so that I get two regions: the outer ('donut-shaped') region and the inner region? Or will I have to develop and implement my own algorithm to do this? Any advice would be great, Thanks, Robin -------------- next part -------------- An HTML attachment was scrubbed... URL: From jaime.frio at gmail.com Sat Sep 21 09:55:19 2013 From: jaime.frio at gmail.com (=?ISO-8859-1?Q?Jaime_Fern=E1ndez_del_R=EDo?=) Date: Sat, 21 Sep 2013 06:55:19 -0700 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: On Sat, Sep 21, 2013 at 1:04 AM, Juan Nunez-Iglesias wrote: > On Sat, Sep 21, 2013 at 11:07 AM, Josh Warner wrote: > >> I believe the most recent SLIC improvements also added a `sampling` >> parameter. >> > > I called it "spacing"... We should probably agree on a terminology > library-wide. Incidentally, Josh, I called it "spacing" because of your > SciPy talk. ;) > I know the real world is just a particular case we shouldn't be too concerned about, but isn't "sampling" or "spacing" basically what everyone else calls "resolution"? -- (\__/) ( O.o) ( > <) Este es Conejo. Copia a Conejo en tu firma y ay?dale en sus planes de dominaci?n mundial. -------------- next part -------------- An HTML attachment was scrubbed... URL: From gezuru at gmail.com Sat Sep 21 14:39:07 2013 From: gezuru at gmail.com (Danilo) Date: Sat, 21 Sep 2013 11:39:07 -0700 (PDT) Subject: Postprocessing Book Scans/Photos Message-ID: <6bd7d29d-1cca-49b7-8cf5-9ab6645885b5@googlegroups.com> Hi all Recently I stumbled upon http://www.booksorber.com/, a project that postprocesses photos taken of books, so that they can be exported as nice PDFs. It's really a great idea, and it probably works nicely using high quality photos with nice lighting, but there are some quirks (especially the UI!). And as it's not open source, I cannot improve upon it. That got me thinking on how hard it would be to implement the same thing using Python. Then I found scikit-image... Therefore, my questions: - Do you know of similar attempts to solve the book scanning problem, preferrably using Python? - Can scikit-image already do such tasks? This includes book border detection, text border detection, color balance correction, de-skewing, finger removal and other things to make the text as readable as possible. Unfortunately I don't know too much about image processing algorithms, so I'd be happy about any pointers and suggestions. Would be great if such a software could be created as an open source effort. In the end, open source always wins :) Danilo -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsch at demuc.de Sat Sep 21 06:25:12 2013 From: jsch at demuc.de (=?iso-8859-1?Q?Johannes_Sch=F6nberger?=) Date: Sat, 21 Sep 2013 12:25:12 +0200 Subject: binary_fill_holes, but creating separate regions inside each other In-Reply-To: <5c8658b8-71d2-4a74-a7b8-33bcdef858a5@googlegroups.com> References: <5c8658b8-71d2-4a74-a7b8-33bcdef858a5@googlegroups.com> Message-ID: <0FEB9F17-7C57-4A77-8231-DCEA41FBBFCC@demuc.de> Hi Robin, This should do the job (regionprops syntax requires the dev version - but also possible with 0.8.x): import numpy as np from skimage.measure import regionprops from skimage.morphology import label a = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 0, 0, 0, 1], [0, 1, 0, 1, 1, 1, 1, 0, 1], [0, 1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 0, 1, 1, 1, 1, 0, 1], [0, 1, 0, 0, 0, 0, 0, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1]]) label_a = label(a, background=0) regions = regionprops(label_a+1) print label_a for props in regions: print props.image print props.filled_image Am 21.09.2013 um 11:12 schrieb Robin Wilson : > Hi, > > I am currently using various skimage functions to perform a customised edge-based image segmentation. Once I've got the outlines of my segments, I am using binary_fill_holes to fill them so I get a binary 'blobs' image, which I can then label, and use for processing. > > However, when I have an image like this > > 0 0 0 0 0 0 0 0 0 > 0 1 1 1 1 1 1 1 1 > 0 1 0 0 0 0 0 0 1 > 0 1 0 1 1 1 1 0 1 > 0 1 0 1 0 0 1 0 1 > 0 1 0 1 0 0 1 0 1 > 0 1 0 1 0 0 1 0 1 > 0 1 0 1 1 1 1 0 1 > 0 1 0 0 0 0 0 0 1 > 0 1 1 1 1 1 1 1 1 > > binary_fill_holes simply fills the entire, outer shape - and thus the shape in the middle gets lost. > > Is there any simple way to do a fill so that I get two regions: the outer ('donut-shaped') region and the inner region? Or will I have to develop and implement my own algorithm to do this? > > Any advice would be great, > > Thanks, > > Robin > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From jni.soma at gmail.com Sat Sep 21 04:04:45 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Sat, 21 Sep 2013 18:04:45 +1000 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: On Sat, Sep 21, 2013 at 11:07 AM, Josh Warner wrote: > I believe the most recent SLIC improvements also added a `sampling` > parameter. > I called it "spacing"... We should probably agree on a terminology library-wide. Incidentally, Josh, I called it "spacing" because of your SciPy talk. ;) For what it's worth, I still favour keeping all of these attributes separate and using vanilla numpy arrays, at the very least for images. For example, with the "spacing" parameter, I think it's much, much better for documentation and code readability to have it be an explicit input to the function, rather than an implied input via a field in an "Image" class. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jaime.frio at gmail.com Sat Sep 21 23:20:50 2013 From: jaime.frio at gmail.com (=?ISO-8859-1?Q?Jaime_Fern=E1ndez_del_R=EDo?=) Date: Sat, 21 Sep 2013 20:20:50 -0700 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: On Sat, Sep 21, 2013 at 7:37 PM, Juan Nunez-Iglesias wrote: > On Sat, Sep 21, 2013 at 11:55 PM, Jaime Fern?ndez del R?o < > jaime.frio at gmail.com> wrote: > >> I called it "spacing"... We should probably agree on a terminology >>> library-wide. Incidentally, Josh, I called it "spacing" because of your >>> SciPy talk. ;) >>> >> >> I know the real world is just a particular case we shouldn't be too >> concerned about, but isn't "sampling" or "spacing" basically what everyone >> else calls "resolution"? >> > > Not exactly. The resolution is the minimum distance at which you can > distinguish two points. If you upscale your image just by doubling up each > pixel along each dimension, your pixel spacing/sampling is half but your > resolution hasn't changed. > > Similarly, stick a crappy lens in front of a sensor with very tiny pixel > spacing, and your image resolution is limited by the lens, but your pixel > spacing is unchanged. > Ah, interesting distinction, hadn't thought of it like that. Nevertheless, the term "resolution" is very often used to have a different meaning from what you describe, virtually indistinguishable from "sampling" or "spacing", e.g. in the TIFF standard ( http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf, page 19): XResolution Tag = 282 (11A.H) Type = RATIONAL The number of pixels per ResolutionUnit in the ImageWidth (typically, horizontal - see Orientation) direction. So a pixel replicated TIFF image has twice the resolution, as per the above official definition, not the same resolution with twice the sampling. -------------- next part -------------- An HTML attachment was scrubbed... URL: From fboulogne at sciunto.org Sun Sep 22 02:56:27 2013 From: fboulogne at sciunto.org (=?ISO-8859-1?Q?Fran=E7ois_Boulogne?=) Date: Sun, 22 Sep 2013 08:56:27 +0200 Subject: Fwd: [SciPy-Dev] Scipy 1.0 roadmap In-Reply-To: References: Message-ID: <523E949B.4060009@sciunto.org> Hi devs, FYI, I forward you this email from Ralf. In the roadmap, there is one entry for ndimage. Cheers Fran?ois. -------- Message original -------- Sujet: [SciPy-Dev] Scipy 1.0 roadmap Date : Sat, 21 Sep 2013 20:54:09 +0200 De : Ralf Gommers R?pondre ? : SciPy Developers List Pour : SciPy Developers List Hi all, At EuroScipy Pauli, David and I sat together and drafted a roadmap for Scipy 1.0. We then discussed this offline with some of the other currently most active core devs, to get it into a state that's ready for discussion on this list. So here it is: https://github.com/scipy/scipy/pull/2908 Our aim is for this roadmap to help guide us towards a 1.0 version, which will contain only code that we consider to be "of sufficient quality". Also, it will help to communicate to new and potential developers where their contributions are especially needed. In order to discuss/review this roadmap without generating a monster thread, I propose the following: - topics like "do we need a roadmap?" or "what does 1.0-ready really mean?" are discussed on this thread. - things in the General section (API changes, documentation/test/build guidelines, etc.), are discussed on this thread as well. - for discussion of module-specific content, start a new thread and name it "1.0 roadmap: ". - for minor things, comment on the PR. Cheers, Ralf -------------- next part -------------- _______________________________________________ SciPy-Dev mailing list SciPy-Dev at scipy.org http://mail.scipy.org/mailman/listinfo/scipy-dev From jni.soma at gmail.com Sat Sep 21 22:37:44 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Sun, 22 Sep 2013 12:37:44 +1000 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: On Sat, Sep 21, 2013 at 11:55 PM, Jaime Fern?ndez del R?o < jaime.frio at gmail.com> wrote: > I called it "spacing"... We should probably agree on a terminology >> library-wide. Incidentally, Josh, I called it "spacing" because of your >> SciPy talk. ;) >> > > I know the real world is just a particular case we shouldn't be too > concerned about, but isn't "sampling" or "spacing" basically what everyone > else calls "resolution"? > Not exactly. The resolution is the minimum distance at which you can distinguish two points. If you upscale your image just by doubling up each pixel along each dimension, your pixel spacing/sampling is half but your resolution hasn't changed. Similarly, stick a crappy lens in front of a sensor with very tiny pixel spacing, and your image resolution is limited by the lens, but your pixel spacing is unchanged. Often, the sensor is the limiting factor, which is why we confuse the two. =) -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Sat Sep 21 23:57:30 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Sun, 22 Sep 2013 13:57:30 +1000 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: On Sun, Sep 22, 2013 at 1:20 PM, Jaime Fern?ndez del R?o < jaime.frio at gmail.com> wrote: > So a pixel replicated TIFF image has twice the resolution, as per the > above official definition, not the same resolution with twice the sampling. > Even in this case, what we call sampling/spacing is the *inverse* of that definition of resolution. -------------- next part -------------- An HTML attachment was scrubbed... URL: From almar.klein at gmail.com Sun Sep 22 13:48:59 2013 From: almar.klein at gmail.com (Almar Klein) Date: Sun, 22 Sep 2013 19:48:59 +0200 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: On 22 September 2013 05:57, Juan Nunez-Iglesias wrote: > On Sun, Sep 22, 2013 at 1:20 PM, Jaime Fern?ndez del R?o < > jaime.frio at gmail.com> wrote: > >> So a pixel replicated TIFF image has twice the resolution, as per the >> above official definition, not the same resolution with twice the sampling. >> > > Even in this case, what we call sampling/spacing is the *inverse* of that > definition of resolution. > I think strictly speaking, the term "resolution" is a measure for visibility of detail. The term is used a lot to simply denote the *number* of pixels, e.g. 800x600, 1024x768, etc. Spacing/sampling is really just a a measure (usually in mm) that specifies the distance between two pixels. If you know the number of pixels, and the sampling, you know the image size in physical units. - Almar -------------- next part -------------- An HTML attachment was scrubbed... URL: From guillaume at mitotic-machine.org Sun Sep 22 16:28:58 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Sun, 22 Sep 2013 22:28:58 +0200 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> Message-ID: <523F530A.40100@mitotic-machine.org> I fully agree on the abuse of the 'resolution' term, yet that is the term used in TIFF header tags: http://www.awaresystems.be/imaging/tiff/tifftags/xresolution.html, although stupidly enough they only allow inches or centimeters as units. Open Microscopy Environment, which are the ones trying to standardize things in my field of research have tags called: PhysicalSizeX, PhysicalSizeY, PhysicalSizeZ, which I find more explicit. As a skimage (very happy) user, I must say I find **very** convenient that vanilla ndarrays are accepted throughout the libary, because image metadata is a problem best kept away from the calculus, except in issues of the 'sampling case' type, where I agree it is nicer to have it as a clear function argument. Best, Guillaume On 22/09/2013 19:48, Almar Klein wrote: > > > > On 22 September 2013 05:57, Juan Nunez-Iglesias > wrote: > > On Sun, Sep 22, 2013 at 1:20 PM, Jaime Fern?ndez del R?o > > wrote: > > So a pixel replicated TIFF image has twice the resolution, as > per the above official definition, not the same resolution > with twice the sampling. > > > Even in this case, what we call sampling/spacing is the *inverse* > of that definition of resolution. > > > I think strictly speaking, the term "resolution" is a measure for > visibility of detail. The term is used a lot to simply denote the > *number* of pixels, e.g. 800x600, 1024x768, etc. Spacing/sampling is > really just a a measure (usually in mm) that specifies the distance > between two pixels. If you know the number of pixels, and the > sampling, you know the image size in physical units. > > - Almar > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -------------- next part -------------- An HTML attachment was scrubbed... URL: From almar.klein at gmail.com Mon Sep 23 03:24:10 2013 From: almar.klein at gmail.com (Almar Klein) Date: Mon, 23 Sep 2013 09:24:10 +0200 Subject: ndarray subclasses In-Reply-To: <523F530A.40100@mitotic-machine.org> References: <523B1C5A.5040009@googlemail.com> <523F530A.40100@mitotic-machine.org> Message-ID: > > As a skimage (very happy) user, I must say I find **very** convenient that > vanilla ndarrays are accepted throughout the libary, because image metadata > is a problem best kept away from the calculus, except in issues of the > 'sampling case' type, where I agree it is nicer to have it as a clear > function argument. > Just to be clear, I think skimage should *always* accept vanilla ndarrays, and I agree that functions that can deal with anisotropy should have an explicit (and optional) "sampling" argument. I think my suggestion would be that such a function should check if the array has a sampling attribute, and use that if the sampling argument is not given. In that way, we could do "im = imerode(imdilate(my_image_with_sampling_attr)", and things would just work in the correct manner. - Almar On 22 September 2013 05:57, Juan Nunez-Iglesias wrote: > On Sun, Sep 22, 2013 at 1:20 PM, Jaime Fern?ndez del R?o < > jaime.frio at gmail.com> wrote: > >> So a pixel replicated TIFF image has twice the resolution, as per the >> above official definition, not the same resolution with twice the sampling. >> > > Even in this case, what we call sampling/spacing is the *inverse* of > that definition of resolution. > I think strictly speaking, the term "resolution" is a measure for visibility of detail. The term is used a lot to simply denote the *number* of pixels, e.g. 800x600, 1024x768, etc. Spacing/sampling is really just a a measure (usually in mm) that specifies the distance between two pixels. If you know the number of pixels, and the sampling, you know the image size in physical units. - Almar -- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tcaswell at uchicago.edu Mon Sep 23 11:43:42 2013 From: tcaswell at uchicago.edu (Thomas A Caswell) Date: Mon, 23 Sep 2013 10:43:42 -0500 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> <523F530A.40100@mitotic-machine.org> Message-ID: On Mon, Sep 23, 2013 at 2:24 AM, Almar Klein wrote: > As a skimage (very happy) user, I must say I find **very** convenient that >> vanilla ndarrays are accepted throughout the libary, because image metadata >> is a problem best kept away from the calculus, except in issues of the >> 'sampling case' type, where I agree it is nicer to have it as a clear >> function argument. >> > Just to be clear, I think skimage should *always* accept vanilla ndarrays, > and I agree that functions that can deal with anisotropy should have an > explicit (and optional) "sampling" argument. > > I think my suggestion would be that such a function should check if the > array has a sampling attribute, and use that if the sampling argument is > not given. In that way, we could do "im = > imerode(imdilate(my_image_with_sampling_attr)", and things would just work > in the correct manner. > > My concern with this proposal is now the user has two independent ways to pass in the same information. If inconsistent information is passed in the library has to make a decision about which one takes precedence. This adds to the complexity of the function and can only lead to confusion on the part of the users when they think the precedence should have the opposite order. If you have a function `f(array, meta_data)` then I would add a thin wrapper for the sub-classed arrays as such: `s_f(sub_classed_array): return f(sub_classed_array, sub_classed_array.get_metadata())`. This adds a lot more functions, but they can probably be auto-generated and don't add much complexity. Maybe make them class methods of the sub-array class so they do not pollute the namespace. Tom > - Almar > > > On 22 September 2013 05:57, Juan Nunez-Iglesias wrote: > >> On Sun, Sep 22, 2013 at 1:20 PM, Jaime Fern?ndez del R?o < >> jaime.frio at gmail.com> wrote: >> >>> So a pixel replicated TIFF image has twice the resolution, as per the >>> above official definition, not the same resolution with twice the sampling. >>> >> >> Even in this case, what we call sampling/spacing is the *inverse* of >> that definition of resolution. >> > > I think strictly speaking, the term "resolution" is a measure for > visibility of detail. The term is used a lot to simply denote the *number* > of pixels, e.g. 800x600, 1024x768, etc. Spacing/sampling is really just a > a measure (usually in mm) that specifies the distance between two pixels. > If you know the number of pixels, and the sampling, you know the image size > in physical units. > > - Almar > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- Thomas A Caswell PhD Candidate University of Chicago Nagel and Gardel labs tcaswell at uchicago.edu jfi.uchicago.edu/~tcaswell o: 773.702.7204 -------------- next part -------------- An HTML attachment was scrubbed... URL: From jturner at gemini.edu Mon Sep 23 12:59:50 2013 From: jturner at gemini.edu (James Turner) Date: Mon, 23 Sep 2013 13:59:50 -0300 Subject: ndarray subclasses In-Reply-To: References: <523B1C5A.5040009@googlemail.com> <523F530A.40100@mitotic-machine.org> Message-ID: <52407386.9030209@gemini.edu> Maybe it's worth mentioning that astropy has also done a bit of (incomplete) work on an nddata class that adds things like metadata, error and mask information to ndarray. I think it's a wrapper rather than a subclass. This might not be how you would do it for skimage but it's just FYI (not particularly astronomy specific)... http://docs.astropy.org/en/latest/nddata/index.html Just regarding "sampling" vs "resolution", IMHO the common use of resolution to describe pixel density in computing is somewhat erroneous. There isn't really a good substitute term for describing the intrinsic analogue (eg. optical) resolution of an image or waveform before it's digitized (bandwidth?) and (as someone else pointed out) the digitized sampling density/spacing doesn't necessarily tell you how much detail you have anyway. Cheers, JAmes. On 23/09/13 12:43, Thomas A Caswell wrote: > On Mon, Sep 23, 2013 at 2:24 AM, Almar Klein > wrote: > > As a skimage (very happy) user, I must say I find **very** convenient > that vanilla ndarrays are accepted throughout the libary, because image > metadata is a problem best kept away from the calculus, except in issues > of the 'sampling case' type, where I agree it is nicer to have it as a > clear function argument. > > Just to be clear, I think skimage should *always* accept vanilla ndarrays, > and I agree that functions that can deal with anisotropy should have an > explicit (and optional) "sampling" argument. > > I think my suggestion would be that such a function should check if the > array has a sampling attribute, and use that if the sampling argument is not > given. In that way, we could do "im = > imerode(imdilate(my_image_with_sampling_attr)", and things would just work > in the correct manner. > > > My concern with this proposal is now the user has two independent ways to pass > in the same information. If inconsistent information is passed in the library > has to make a decision about which one takes precedence. This adds to the > complexity of the function and can only lead to confusion on the part of the > users when they think the precedence should have the opposite order. > > If you have a function `f(array, meta_data)` then I would add a thin wrapper for > the sub-classed arrays as such: `s_f(sub_classed_array): return > f(sub_classed_array, sub_classed_array.get_metadata())`. This adds a lot more > functions, but they can probably be auto-generated and don't add much > complexity. Maybe make them class methods of the sub-array class so they do not > pollute the namespace. > > Tom > > - Almar > > >> On 22 September 2013 05:57, Juan Nunez-Iglesias > > wrote: >> >> On Sun, Sep 22, 2013 at 1:20 PM, Jaime Fern??????ndez del R??????o >> > wrote: >> >> So a pixel replicated TIFF image has twice the resolution, as per >> the above official definition, not the same resolution with twice >> the sampling. >> >> >> Even in this case, what we call sampling/spacing is the *inverse* of >> that definition of resolution. >> >> >> I think strictly speaking, the term "resolution" is a measure for >> visibility of detail. The term is used a lot to simply denote the *number* >> of pixels, e.g. 800x600, 1024x768, etc. Spacing/sampling is really just a >> a measure (usually in mm) that specifies the distance between two pixels. >> If you know the number of pixels, and the sampling, you know the image >> size in physical units. >> >> - Almar >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image+unsubscribe at googlegroups.com >> . >> For more options, visit https://groups.google.com/groups/opt_out. > > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com > . > For more options, visit https://groups.google.com/groups/opt_out. > > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com > . > For more options, visit https://groups.google.com/groups/opt_out. > > > > > -- > Thomas A Caswell > PhD Candidate University of Chicago > Nagel and Gardel labs > tcaswell at uchicago.edu > jfi.uchicago.edu/~tcaswell > o: 773.702.7204 > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email > to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From stefan at sun.ac.za Tue Sep 24 18:02:15 2013 From: stefan at sun.ac.za (=?iso-8859-1?Q?St=E9fan?= van der Walt) Date: Wed, 25 Sep 2013 00:02:15 +0200 Subject: ndarray subclasses In-Reply-To: References: <523F530A.40100@mitotic-machine.org> Message-ID: <20130924220215.GA10544@shinobi> On Mon, 23 Sep 2013 10:43:42 -0500, Thomas A Caswell wrote: > My concern with this proposal is now the user has two independent ways to > pass in the same information. If inconsistent information is passed in the > library has to make a decision about which one takes precedence. This adds > to the complexity of the function and can only lead to confusion on the > part of the users when they think the precedence should have the opposite > order. Let's postpone this API decision until we have more certainty on how it'd be used. For now, my_func(image, sampling=image.sampling) is quite adequate. It still allows the user to add sampling information to their images, if they'd so wish. St??????fan From guillaume at mitotic-machine.org Fri Sep 27 04:04:05 2013 From: guillaume at mitotic-machine.org (Guillaume Gay) Date: Fri, 27 Sep 2013 10:04:05 +0200 Subject: import error on linux In-Reply-To: References: Message-ID: <52453BF5.2040109@mitotic-machine.org> Hi Payal, You really need to be more detailed and specific with your problems. What version of linux are you using, what version of python and how did you install skimage? What error message did you get? G. Le 27/09/2013 09:22, Payal Gupta a ?crit : > hello.... > > i am using skimage library on raspberry pi which have linux platform > but i cant import skimage module on this. > what do i do? > anybody know this prob. > reply > -- > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From erpayal2010 at gmail.com Fri Sep 27 03:22:35 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Fri, 27 Sep 2013 12:52:35 +0530 Subject: import error on linux Message-ID: hello.... i am using skimage library on raspberry pi which have linux platform but i cant import skimage module on this. what do i do? anybody know this prob. reply -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at mumford.me.uk Fri Sep 27 08:05:00 2013 From: stuart at mumford.me.uk (Stuart Mumford) Date: Fri, 27 Sep 2013 13:05:00 +0100 Subject: Image alignment and feature extraction Message-ID: Hello, After having spoken to people at scipy this year I have seen a lot of work going into feature extraction and description. I was wondering what the status of this was and what still needs to be done before I (/we, SunPy) can use it to align our images? Stuart P.S. expect more emails regarding image warping in the next month ;) -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at mumford.me.uk Fri Sep 27 09:18:15 2013 From: stuart at mumford.me.uk (Stuart Mumford) Date: Fri, 27 Sep 2013 14:18:15 +0100 Subject: Image alignment and feature extraction In-Reply-To: References: Message-ID: Hi, OK I need to plead ignorance here, is there a decent reference on / can someone explain to me: a) what ORB is :p b) What the difference between FAST, oFAST and rBRIEF and STAR (and FREAK?) is and which one likely to be the most appropriate for random pictures of the Sun? c) What else needs to be done to turn this feature detection and description work into registration? Thanks!! Stuart On 27 September 2013 14:08, St?fan van der Walt wrote: > Hi Stuart > > On Fri, Sep 27, 2013 at 2:05 PM, Stuart Mumford > wrote: > > After having spoken to people at scipy this year I have seen a lot of > work > > going into feature extraction and description. I was wondering what the > > status of this was and what still needs to be done before I (/we, SunPy) > can > > use it to align our images? > > Google Summer of Code is just ending, and Ankit posted the result of > his and Johannes's work on ORB: > > > http://skimager.blogspot.com/2013/09/oriented-fast-and-rotated-brieforb-hi.html > > We also have STAR (Censure) features, so registration is finally within > reach! > > > P.S. expect more emails regarding image warping in the next month ;) > > Bring it on! > > Cheers > St?fan > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Fri Sep 27 09:08:19 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Fri, 27 Sep 2013 15:08:19 +0200 Subject: Image alignment and feature extraction In-Reply-To: References: Message-ID: Hi Stuart On Fri, Sep 27, 2013 at 2:05 PM, Stuart Mumford wrote: > After having spoken to people at scipy this year I have seen a lot of work > going into feature extraction and description. I was wondering what the > status of this was and what still needs to be done before I (/we, SunPy) can > use it to align our images? Google Summer of Code is just ending, and Ankit posted the result of his and Johannes's work on ORB: http://skimager.blogspot.com/2013/09/oriented-fast-and-rotated-brieforb-hi.html We also have STAR (Censure) features, so registration is finally within reach! > P.S. expect more emails regarding image warping in the next month ;) Bring it on! Cheers St?fan From stefan at sun.ac.za Fri Sep 27 09:16:40 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Fri, 27 Sep 2013 15:16:40 +0200 Subject: import error on linux In-Reply-To: <52453BF5.2040109@mitotic-machine.org> References: <52453BF5.2040109@mitotic-machine.org> Message-ID: On Fri, Sep 27, 2013 at 10:04 AM, Guillaume Gay wrote: > You really need to be more detailed and specific with your problems. But, Guillaume, I don't understand--haven't you also not had success running skimage on a Raspberry Pi? I know I certainly haven't :) Let us know your config and error message, Payal, we'll see what we can do. Happy weekend! St?fan From silvertrumpet999 at gmail.com Fri Sep 27 19:55:18 2013 From: silvertrumpet999 at gmail.com (Josh Warner) Date: Fri, 27 Sep 2013 16:55:18 -0700 (PDT) Subject: import error on linux In-Reply-To: References: <52453BF5.2040109@mitotic-machine.org> Message-ID: <7a4273c7-3b75-4153-b5c2-e280b6f01511@googlegroups.com> I ordered a Raspberry Pi-compatible board not long ago, and look forward to when I can test and answer questions like this firsthand. In the meantime, it looks like certain required packages for NumPy and SciPy are not included in the default distribution, and binaries may not be available. It is, however, reported possible to compile and install the required dependencies for Scikit-Image. It may take some time to compile, but it is possible. This blog post may be an excellent place to start. I have not tried if myself yet, but the method looks sound: http://wyolum.com/numpyscipymatplotlib-on-raspberry-pi/ Run the commands from the first group on that page - including the optional bracketed ones - in order. Then, additionally, run: sudo easy_install cython sudo easy_install scikit-image I'm confident this can be done. Let us know if you run into trouble. Josh On Friday, September 27, 2013 8:16:40 AM UTC-5, Stefan van der Walt wrote: On Fri, Sep 27, 2013 at 10:04 AM, Guillaume Gay > > wrote: > > You really need to be more detailed and specific with your problems. > > But, Guillaume, I don't understand--haven't you also not had success > running skimage on a Raspberry Pi? I know I certainly haven't :) > > Let us know your config and error message, Payal, we'll see what we can > do. > > Happy weekend! > St?fan > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jni.soma at gmail.com Fri Sep 27 09:44:30 2013 From: jni.soma at gmail.com (Juan Nunez-Iglesias) Date: Fri, 27 Sep 2013 23:44:30 +1000 Subject: Image alignment and feature extraction In-Reply-To: References: Message-ID: To paraphrase the great Dave Barry: Random Pictures of the Sun would be an excellent name for a rock band. =D (Or a blog, failing that!) I'll leave the actual questions to more qualified posters. ;) On Fri, Sep 27, 2013 at 11:18 PM, Stuart Mumford wrote: > Hi, > > OK I need to plead ignorance here, is there a decent reference on / can > someone explain to me: > a) what ORB is :p > b) What the difference between FAST, oFAST and rBRIEF and STAR (and > FREAK?) is and which one likely to be the most appropriate for random > pictures of the Sun? > c) What else needs to be done to turn this feature detection and > description work into registration? > > Thanks!! > Stuart > > > On 27 September 2013 14:08, St?fan van der Walt wrote: > >> Hi Stuart >> >> On Fri, Sep 27, 2013 at 2:05 PM, Stuart Mumford >> wrote: >> > After having spoken to people at scipy this year I have seen a lot of >> work >> > going into feature extraction and description. I was wondering what the >> > status of this was and what still needs to be done before I (/we, >> SunPy) can >> > use it to align our images? >> >> Google Summer of Code is just ending, and Ankit posted the result of >> his and Johannes's work on ORB: >> >> >> http://skimager.blogspot.com/2013/09/oriented-fast-and-rotated-brieforb-hi.html >> >> We also have STAR (Censure) features, so registration is finally within >> reach! >> >> > P.S. expect more emails regarding image warping in the next month ;) >> >> Bring it on! >> >> Cheers >> St?fan >> >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at mumford.me.uk Fri Sep 27 19:13:07 2013 From: stuart at mumford.me.uk (Stuart Mumford) Date: Sat, 28 Sep 2013 00:13:07 +0100 Subject: Image alignment and feature extraction In-Reply-To: References: Message-ID: Hey Ankit, Thanks for your response, it's very helpful. >> b) What the difference between FAST, oFAST and rBRIEF and STAR (and FREAK?) is and which one likely to be the most appropriate for random pictures of the Sun? > > Currently, I cannot answer this question in complete confidence, partly because I am yet to complete and test FREAK and partly because I am not aware of the data, or the kind of solar images that are going to be aligned. Can you give some examples of pairs of images that are required to be aligned in Solar Physics. Some queries that one would have about the data are like : Are the solar images that need to be aligned generated from the same camera but at different time intervals? Generally yes. Sometimes one series of images taken with the same camera at different times is aligned, primarily to compensate for small variation in telescope pointing, and then that is used for other images which are assumed to have the same pointing. >Is the scaling or the zoom factor changing? This would be unlikely. >Is it only the Sun's rotation about its axis that is generating these two different images or some other factor is also involved? Generally solar rotation is compensated for by using models of the rotation rather than image registration. >Currently, ORB is the best bet, because of its speed and invariance to both scaling and rotation. Shiny. > >> c) What else needs to be done to turn this feature detection and description work into registration? > > Image Registration Pipeline can be summarized as : Detect features(keypoints) --> Compute Descriptors --> Match keypoints --> Treat one image as the reference and Estimate the Geometric Transformation required to get the second image using the matches. ORB does the first three and the 4th stage is what needs to be done. These slides[3] explain it better. So the RANSAC algorithm from those slides? Thanks again. Stuart -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Sat Sep 28 05:37:10 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Sat, 28 Sep 2013 02:37:10 -0700 (PDT) Subject: import error on linux In-Reply-To: References: Message-ID: hello guys... i have used 32 bit linux on raspberry pi i install cython when i import skimage then no problem but when i imoprt from skimage import io then it return that read "skimage/io/__init__.py" line 14 in module or "skimage/io/collection.py",line 12 in module like that it return i cant't understand these file lines. so what what you think where is problem? reply soon.... :( On Friday, September 27, 2013 12:52:35 PM UTC+5:30, Payal Gupta wrote: > > hello.... > > i am using skimage library on raspberry pi which have linux platform but > i cant import skimage module on this. > > what do i do? > anybody know this prob. > reply > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Sat Sep 28 05:37:53 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Sat, 28 Sep 2013 02:37:53 -0700 (PDT) Subject: import error on linux In-Reply-To: References: Message-ID: <2a6acfa7-65ee-4db3-b97b-29d8f183080a@googlegroups.com> python version 2.7 On Friday, September 27, 2013 12:52:35 PM UTC+5:30, Payal Gupta wrote: > > hello.... > > i am using skimage library on raspberry pi which have linux platform but > i cant import skimage module on this. > > what do i do? > anybody know this prob. > reply > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Sat Sep 28 05:41:42 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Sat, 28 Sep 2013 02:41:42 -0700 (PDT) Subject: import error on linux In-Reply-To: References: Message-ID: hi josh... after installing cython module of skimage import on python??? me too install cython bt unfortunate skimage module not imported. On Friday, September 27, 2013 12:52:35 PM UTC+5:30, Payal Gupta wrote: > > hello.... > > i am using skimage library on raspberry pi which have linux platform but > i cant import skimage module on this. > > what do i do? > anybody know this prob. > reply > -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaaagrawal at gmail.com Fri Sep 27 18:15:11 2013 From: aaaagrawal at gmail.com (Ankit Agrawal) Date: Sat, 28 Sep 2013 03:45:11 +0530 Subject: Image alignment and feature extraction In-Reply-To: References: Message-ID: Hi Stuart, OK I need to plead ignorance here, is there a decent reference on / can > someone explain to me: > a) what ORB is :p > ORB is a feature detection and description pipeline like SIFT and contains Oriented FAST(oFAST) and Rotated BRIEF(rBRIEF) as its feature detector and feature descriptor respectively. In short, Oriented FAST feature detector is the FAST corner detector computed along with its orientation(which is computed as in [1] Section 3.2). Rotated BRIEF is the BRIEF feature descriptor computed by rotating the test-decision pairs along the orientation of oFAST. Refer [2] and [1]. b) What the difference between FAST, oFAST and rBRIEF and STAR (and FREAK?) > is and which one likely to be the most appropriate for random pictures of > the Sun? > Currently, I cannot answer this question in complete confidence, partly because I am yet to complete and test FREAK and partly because I am not aware of the data, or the kind of solar images that are going to be aligned. Can you give some examples of pairs of images that are required to be aligned in Solar Physics. Some queries that one would have about the data are like : Are the solar images that need to be aligned generated from the same camera but at different time intervals? Is the scaling or the zoom factor changing? Is it only the Sun's rotation about its axis that is generating these two different images or some other factor is also involved? Currently, ORB is the best bet, because of its speed and invariance to both scaling and rotation. c) What else needs to be done to turn this feature detection and > description work into registration? > Image Registration Pipeline can be summarized as : Detect features(keypoints) --> Compute Descriptors --> Match keypoints --> Treat one image as the reference and Estimate the Geometric Transformation required to get the second image using the matches. ORB does the first three and the 4th stage is what needs to be done. These slides[3] explain it better. [1] http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf [2] http://cvlabwww.epfl.ch/~lepetit/papers/calonder_eccv10.pdf [3] http://cs.haifa.ac.il/hagit/courses/CP/Lectures/CP05_FeaturesRegistX4.pdf -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsch at demuc.de Sat Sep 28 03:00:15 2013 From: jsch at demuc.de (=?windows-1252?Q?Johannes_Sch=F6nberger?=) Date: Sat, 28 Sep 2013 09:00:15 +0200 Subject: Image alignment and feature extraction In-Reply-To: References: Message-ID: <1768884268.1628866.1380351615592.open-xchange@localhost> Step 4 is also part of skimage. See skimage.transform.ProjectiveTransform.estimate in conjunction with the RANSAC function in skimage.measure. > Am 28.09.2013 um 00:15 schrieb "Ankit Agrawal" : > > Hi Stuart, > >> OK I need to plead ignorance here, is there a decent reference on / can someone explain to me: >> a) what ORB is :p > ORB is a feature detection and description pipeline like SIFT and contains Oriented FAST(oFAST) and Rotated BRIEF(rBRIEF) as its feature detector and feature descriptor respectively. In short, Oriented FAST feature detector is the FAST corner detector computed along with its orientation(which is computed as in [1] Section 3.2). Rotated BRIEF is the BRIEF feature descriptor computed by rotating the test-decision pairs along the orientation of oFAST. Refer [2] and [1]. > >> b) What the difference between FAST, oFAST and rBRIEF and STAR (and FREAK?) is and which one likely to be the most appropriate for random pictures of the Sun? > Currently, I cannot answer this question in complete confidence, partly because I am yet to complete and test FREAK and partly because I am not aware of the data, or the kind of solar images that are going to be aligned. Can you give some examples of pairs of images that are required to be aligned in Solar Physics. Some queries that one would have about the data are like : Are the solar images that need to be aligned generated from the same camera but at different time intervals? Is the scaling or the zoom factor changing? Is it only the Sun's rotation about its axis that is generating these two different images or some other factor is also involved? Currently, ORB is the best bet, because of its speed and invariance to both scaling and rotation. > >> c) What else needs to be done to turn this feature detection and description work into registration? > Image Registration Pipeline can be summarized as : Detect features(keypoints) --> Compute Descriptors --> Match keypoints --> Treat one image as the reference and Estimate the Geometric Transformation required to get the second image using the matches. ORB does the first three and the 4th stage is what needs to be done. These slides[3] explain it better. > > [1] http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf > [2] http://cvlabwww.epfl.ch/~lepetit/papers/calonder_eccv10.pdf > [3] http://cs.haifa.ac.il/hagit/courses/CP/Lectures/CP05_FeaturesRegistX4.pdf > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at mumford.me.uk Sat Sep 28 06:40:04 2013 From: stuart at mumford.me.uk (Stuart Mumford) Date: Sat, 28 Sep 2013 11:40:04 +0100 Subject: Image transformation. In-Reply-To: References: Message-ID: Hello, While having a more thorough look at the transform module with respect to the image registration discussion, I thought it might be worth picking your brains on another solar based image processing issue we are having. When images are collected from basically all telescopes, ground or space based, a large amount of processing is required to get them to the point where you can do science on them. This normally involves dark frame or noise removal, scaling etc. The last step is to compensate for the telescope pointing, which is generally a translate, rotate and rescale operation. It is this last step that we are currently trying to port from the 'standard' IDL package into SunPy for the AIA instrument on NASAs SDO satellite. A rotate, translate and rescale transform is not hard, the problem is we really need to replicate the same algorithm as used in IDL so that the processing of the data is the same irrespective of the language used to process it. Without trying to show you all the gritty detail of the pipeline there is a function (for which the source code is available) called rot that is called to do the transform (here: http://www.astro.washington.edu/docs/idl/cgi-bin/getpro/library32.html?ROT) this function however calls a closed source routine called poly_2D which is described here: http://www.exelisvis.com/docs/POLY_2D.html To my untrained eye this looks a little like http://scikit-image.org/docs/dev/api/skimage.transform.html#polynomialtransform? However for polynomial transform there is no discussion about interpolation like there is for poly_2D? We have implemented a routine in SunPy which does a cubic affine transform in an attempt to replicate the behaviour but our testing so far is still a fair way off from the IDL implementation. Any advice would be as always much appreciated. Stuart -------------- next part -------------- An HTML attachment was scrubbed... URL: From erpayal2010 at gmail.com Sat Sep 28 03:43:55 2013 From: erpayal2010 at gmail.com (Payal Gupta) Date: Sat, 28 Sep 2013 13:13:55 +0530 Subject: Get border pixels of labelled region In-Reply-To: References: <6893cdb1-c810-4ec8-9950-b746963a0481@googlegroups.com> <39E0D615-C4D3-44AB-9267-9D404FDD41F1@demuc.de> <6156c56a-57b1-433a-ae20-8fb1d8f0f339@googlegroups.com> <5224D8E5.2080805@mitotic-machine.org> <52258C7B.80205@mitotic-machine.org> <81dbe35a-1dbe-4364-b9b5-d6f9c5516461@googlegroups.com> Message-ID: hello everyone... i have problem to install skimage library on raspberry pi. how can i solve this problem.... please tell me... reply soon.... On Fri, Sep 13, 2013 at 2:19 PM, Juan Nunez-Iglesias wrote: > The input is a grayscale image, not a binary image. It finds contours of a > given intensity threshold. > > The output is a list of arrays. Each array has shape (Q, 2), and it is a > set of x, y coordinates of the points in the contour. If you want to look > at the contours, you need to convert this to an image somehow. This example > uses matplotlib's `plot` function to draw the contours on the image: > > http://scikit-image.org/docs/dev/auto_examples/plot_contours.html#example-plot-contours-py > > Alternately, you can round the contour coordinates to int and use those > to make a new image: > > conts = find_contours(image, threshold) > contour_image = zeros_like(image) > for c in conts: > c = np.round(c).astype(int) > coords = (c[:, 0], c[:, 1]) > contour_image[coords] = 1 > imshow(contour_image) > > > On Fri, Sep 13, 2013 at 5:26 PM, Payal Gupta wrote: > >> hi juan.... >> >> i can't understand array after using find_contour which return a ndarray. >> it is main prob i wanna find out contour array. >> >> >> On Fri, Sep 13, 2013 at 6:07 AM, Juan Nunez-Iglesias wrote: >> >>> Hi Payal, >>> >>> I think we're getting somewhere. =) Thanks for the image. >>> >>> Questions: >>> 1) Are you looking to segment out different cars? That is, do you want >>> each car to have its own contour? With your current thresholding, you can >>> see that the four cars on the right are all connected, so you would get a >>> single contour of the whole blob, rather than a contour of each car. >>> 2) I just saw the docfor bwboundaries. Do you want the interior holes of the objects to have its >>> own contour, or do you want just a contour *around* each object and don't >>> care about the interior? Also, do you care about parent/child object >>> relationships? My guess is no to both these questions. For example, do you >>> want a contour around the windshield of each car? >>> >>> Comments: >>> >>> Note that when you do rgb2gray on a thresholded RGB image, you no longer >>> have a binary image, but a grayscale image with levels 0, 0.333, 0.667, and >>> 1.0. I think you probably mean to do rgb2gray followed by threshold. >>> >>> Either way, my suspicion is that you want to segment the cars first (get >>> one binary blob object per car), then find their contours. Am I right? >>> >>> Juan. >>> >>> >>> On Thu, Sep 12, 2013 at 8:24 PM, Payal Gupta wrote: >>> >>>> hi Juan... >>>> i have done it.... :) :) >>>> plz solve the contour problem. :( :( >>>> reply me >>>> >>>> On Thursday, September 12, 2013 9:19:36 AM UTC+5:30, Juan >>>> Nunez-Iglesias wrote: >>>> >>>>> On Thu, Sep 12, 2013 at 2:58 AM, Payal Gupta wrote: >>>>> >>>>>> hello... >>>>>> i m also use this prog to count white pixel and black pixel bt i cant >>>>>> save an image and cant count the pixel. >>>>>> can you help me. >>>>>> >>>>> >>>>> "white pixels" and "black pixels" will mean different things with >>>>> different images. Can you send us a sample image? >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "scikit-image" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to scikit-image+unsubscribe at googlegroups.com. >>>> >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "scikit-image" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. >>> To unsubscribe from this group and all of its topics, send an email to >>> scikit-image+unsubscribe at googlegroups.com. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "scikit-image" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to scikit-image+unsubscribe at googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "scikit-image" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scikit-image/rXRS0KT2PdU/unsubscribe. > To unsubscribe from this group and all of its topics, send an email to > scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsch at demuc.de Sat Sep 28 08:28:53 2013 From: jsch at demuc.de (=?windows-1252?Q?Johannes_Sch=F6nberger?=) Date: Sat, 28 Sep 2013 14:28:53 +0200 Subject: Image transformation. In-Reply-To: References: Message-ID: <796E76EB-1793-4614-BF9B-B4DCDF6FA3A7@demuc.de> Hi, You would have to do the following: 1. Setup the transformation object with the appropriate coefficients: tform = skimage.transform.PolynomialTransform(?) 2. Warp the image: img_warped = skimage.transform.warp(img, tform, order=INTERP_ORDER) INTERP_ORDER equals the Interp argument in Poly_2D of IDL. Let us know if the documentation can be improved in any way. Regards, Johannes Am 28.09.2013 um 12:40 schrieb Stuart Mumford : > Hello, > > While having a more thorough look at the transform module with respect to the image registration discussion, I thought it might be worth picking your brains on another solar based image processing issue we are having. > > When images are collected from basically all telescopes, ground or space based, a large amount of processing is required to get them to the point where you can do science on them. This normally involves dark frame or noise removal, scaling etc. The last step is to compensate for the telescope pointing, which is generally a translate, rotate and rescale operation. > > It is this last step that we are currently trying to port from the 'standard' IDL package into SunPy for the AIA instrument on NASAs SDO satellite. > > A rotate, translate and rescale transform is not hard, the problem is we really need to replicate the same algorithm as used in IDL so that the processing of the data is the same irrespective of the language used to process it. > > Without trying to show you all the gritty detail of the pipeline there is a function (for which the source code is available) called rot that is called to do the transform (here: http://www.astro.washington.edu/docs/idl/cgi-bin/getpro/library32.html?ROT) this function however calls a closed source routine called poly_2D which is described here: http://www.exelisvis.com/docs/POLY_2D.html > > To my untrained eye this looks a little like http://scikit-image.org/docs/dev/api/skimage.transform.html#polynomialtransform ? However for polynomial transform there is no discussion about interpolation like there is for poly_2D? > > We have implemented a routine in SunPy which does a cubic affine transform in an attempt to replicate the behaviour but our testing so far is still a fair way off from the IDL implementation. > > Any advice would be as always much appreciated. > > Stuart > > > -- > You received this message because you are subscribed to the Google Groups "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. From stuart at mumford.me.uk Sat Sep 28 10:40:03 2013 From: stuart at mumford.me.uk (Stuart Mumford) Date: Sat, 28 Sep 2013 15:40:03 +0100 Subject: Image transformation. In-Reply-To: <796E76EB-1793-4614-BF9B-B4DCDF6FA3A7@demuc.de> References: <796E76EB-1793-4614-BF9B-B4DCDF6FA3A7@demuc.de> Message-ID: Hello, Thanks for your response. skimage.transform.warp calls scipy map_coordinates dosen't it? I believe that does not use the same interpolation method as the IDL routines. I wonder if that could be worked around though. Thanks again, I will look into it more. Stuart On 28 September 2013 13:28, Johannes Sch?nberger wrote: > Hi, > > You would have to do the following: > > 1. Setup the transformation object with the appropriate coefficients: > > tform = skimage.transform.PolynomialTransform(?) > > 2. Warp the image: > > img_warped = skimage.transform.warp(img, tform, order=INTERP_ORDER) > > INTERP_ORDER equals the Interp argument in Poly_2D of IDL. > > > Let us know if the documentation can be improved in any way. > > Regards, Johannes > > Am 28.09.2013 um 12:40 schrieb Stuart Mumford : > > > Hello, > > > > While having a more thorough look at the transform module with respect > to the image registration discussion, I thought it might be worth picking > your brains on another solar based image processing issue we are having. > > > > When images are collected from basically all telescopes, ground or space > based, a large amount of processing is required to get them to the point > where you can do science on them. This normally involves dark frame or > noise removal, scaling etc. The last step is to compensate for the > telescope pointing, which is generally a translate, rotate and rescale > operation. > > > > It is this last step that we are currently trying to port from the > 'standard' IDL package into SunPy for the AIA instrument on NASAs SDO > satellite. > > > > A rotate, translate and rescale transform is not hard, the problem is we > really need to replicate the same algorithm as used in IDL so that the > processing of the data is the same irrespective of the language used to > process it. > > > > Without trying to show you all the gritty detail of the pipeline there > is a function (for which the source code is available) called rot that is > called to do the transform (here: > http://www.astro.washington.edu/docs/idl/cgi-bin/getpro/library32.html?ROT) > this function however calls a closed source routine called poly_2D which is > described here: http://www.exelisvis.com/docs/POLY_2D.html > > > > To my untrained eye this looks a little like > http://scikit-image.org/docs/dev/api/skimage.transform.html#polynomialtransform? However for polynomial transform there is no discussion about > interpolation like there is for poly_2D? > > > > We have implemented a routine in SunPy which does a cubic affine > transform in an attempt to replicate the behaviour but our testing so far > is still a fair way off from the IDL implementation. > > > > Any advice would be as always much appreciated. > > > > Stuart > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "scikit-image" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to scikit-image+unsubscribe at googlegroups.com. > > For more options, visit https://groups.google.com/groups/opt_out. > > -- > You received this message because you are subscribed to the Google Groups > "scikit-image" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to scikit-image+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsch at demuc.de Sat Sep 28 12:23:47 2013 From: jsch at demuc.de (=?windows-1252?Q?Johannes_Sch=F6nberger?=) Date: Sat, 28 Sep 2013 18:23:47 +0200 Subject: Image transformation. In-Reply-To: References: <796E76EB-1793-4614-BF9B-B4DCDF6FA3A7@demuc.de> Message-ID: > skimage.transform.warp calls scipy map_coordinates dosen't it? I believe that does not use the same interpolation method as the IDL routines. I wonder if that could be worked around though. In case of the PolynomialTransform it will always use map_coordinates, for linear transformations with a transformation matrix, it uses a much faster internal Cython implementation for order < 4. If you set order=3 it would use the same interpolation method as IDL, but you do not have the option to manually set the scaling of the sinc function. But it uses a sensible default for that. From silvertrumpet999 at gmail.com Sun Sep 29 01:31:46 2013 From: silvertrumpet999 at gmail.com (Josh Warner) Date: Sat, 28 Sep 2013 22:31:46 -0700 (PDT) Subject: import error on linux In-Reply-To: References: Message-ID: <6d996f51-e5c9-46d5-bb72-b3c6fc06cc4b@googlegroups.com> Sorry for the delay, I get a daily digest from this group. We need more information to even attempt to diagnose this problem. It would be good to know if you followed all of the steps in the blog post I linked, or if you just installed cython and scikit-image. If you did not previously install NumPy and SciPy, that will explain why nothing works. It also would be good to know how you installed scikit-image (compiled from source or using `easy_install`/`pip`), and if it appeared to complete successfully. Finally, we absolutely need the full traceback for the error message. All of the lines you don't understand are important, not just the first. They tell us exactly where the first error occurred. Paste in the entire error message you get when you attempt `from skimage import io`. Otherwise, you'll have to wait until I (or another friendly individual) makes a robust step-by-step tutorial on doing this. Regards, Josh On Saturday, September 28, 2013 4:41:42 AM UTC-5, Payal Gupta wrote: > > hi josh... > > after installing cython module of skimage import on python??? > > me too install cython bt unfortunate skimage module not imported. > > On Friday, September 27, 2013 12:52:35 PM UTC+5:30, Payal Gupta wrote: >> >> hello.... >> >> i am using skimage library on raspberry pi which have linux platform but >> i cant import skimage module on this. >> >> what do i do? >> anybody know this prob. >> reply >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan at sun.ac.za Sun Sep 29 03:17:18 2013 From: stefan at sun.ac.za (=?ISO-8859-1?Q?St=E9fan_van_der_Walt?=) Date: Sun, 29 Sep 2013 09:17:18 +0200 Subject: import error on linux In-Reply-To: <6d996f51-e5c9-46d5-bb72-b3c6fc06cc4b@googlegroups.com> References: <6d996f51-e5c9-46d5-bb72-b3c6fc06cc4b@googlegroups.com> Message-ID: On 29 Sep 2013 07:32, "Josh Warner" wrote: > > Otherwise, you'll have to wait until I (or another friendly individual) makes a robust step-by-step tutorial on doing this. I managed to get hold of a friend with a RBP, so we'll also attempt this later this week. St?fan -------------- next part -------------- An HTML attachment was scrubbed... URL: