[ITK] [ITK-users] Insight-users Digest, Vol 163, Issue 10
Erin McKay
erin at computerhead.com.au
Sat Nov 25 19:34:04 EST 2017
Not without an adapter, but my Mac Pro might be able to
Erin McKay
> On 26 Nov 2017, at 04:00, insight-users-request at itk.org wrote:
>
> Send Insight-users mailing list submissions to
> insight-users at itk.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
> http://public.kitware.com/mailman/listinfo/insight-users
> or, via email, send a message with subject or body 'help' to
> insight-users-request at itk.org
>
> You can reach the person managing the list at
> insight-users-owner at itk.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Insight-users digest..."
>
>
> Today's Topics:
>
> 1. Re: watershed on surface meshs (Richard Beare)
> 2. Re: watershed on surface meshs (Richard Beare)
> 3. U-Net: Convolutional Networks for image segmentation
> (Abdelkhalek Bakkari)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 25 Nov 2017 07:53:49 +1100
> From: Richard Beare <richard.beare at gmail.com>
> To: "Grothausmann, Roman Dr." <grothausmann.roman at mh-hannover.de>
> Cc: ITK Mailing List <insight-users at itk.org>, VTK Mailing List
> <vtkusers at vtk.org>
> Subject: Re: [ITK-users] watershed on surface meshs
> Message-ID:
> <CA+V7QS9QiBXHtiyjNf107XZtt94G3-72bXHcpEpN51Z5m4R+YQ at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> I don't recall an implementation of this anywhere. However you may be able
> to hack something together reasonably quickly. Watersheds are built around
> minimal paths, so depending on what complexity is available in the
> mesh-based shortest path tools. In the worst cast you could create a copy
> of the mesh for each seed region, compute the minimal distance to each non
> seed vertex, then do a vertex-wise min, tracking which mesh/seed region has
> the minimum, and that's your label. Not very efficient because you compute
> the entire mesh distance each time, and no obvious way to do a watershed
> line consistently, but perhaps that doesn't matter for testing the idea.
>
> On Fri, Nov 24, 2017 at 10:26 PM, Grothausmann, Roman Dr. <
> grothausmann.roman at mh-hannover.de> wrote:
>
>> Dear mailing list members,
>>
>>
>> I need to separate a mesh at "curved corners" (see attached PNG, using the
>> colored labels from a facet analysis do not suffice but go in the right
>> direction). So my current thought is to run vtkCurvature to get a Gaussian
>> curvature value per point/vertex and then try to separate regions of
>> positive values around local maxima. Just thresholding the result of
>> vtkCurvature does not fully separate each local max from neighboring ones,
>> but to my understanding a surface watershed would. I found two publications
>> by Mangan and Whitaker on this:
>>
>> Partitioning 3D surface meshes using watershed:
>> http://teacher.en.rmutt.ac.th/ktw/Resources/Full%20paper%20P
>> DF/Partitioning%203D%20surface%20meshes%20using%20watershed%
>> 20segmentation.pdf
>>
>> Surface Segmentation Using Morphological Watersheds:
>> https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd
>> =4&cad=rja&uact=8&ved=0ahUKEwjD0by1lafWAhVUGsAKHZ2MAbUQFgg_
>> MAM&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%
>> 2Fdownload%3Fdoi%3D10.1.1.464.2788%26rep%3Drep1%26type%
>> 3Dpdf&usg=AFQjCNGX-p9-ElQFcpsUyBRO0pCjBKCmNg
>>
>> Does anybody know about an implementation for this in VTK/ITK or another
>> open-source library? If not, would it be possible to transfer the ITK
>> watershed implementation for voxel data to mesh data, e.g. to crate a
>> VTKmorphWatershedFilter?
>>
>> Thanks for any help or hints.
>> Roman
>>
>>
>> --
>> Dr. Roman Grothausmann
>>
>> Tomographie und Digitale Bildverarbeitung
>> Tomography and Digital Image Analysis
>>
>> Medizinische Hochschule Hannover
>> Institut f?r Funktionelle und Angewandte Anatomie
>> OE 4120, Carl-Neuberg-Str. 1, 30625 Hannover, Deutschland
>>
>> Tel. +49 511 532-2900
>> grothausmann.roman at mh-hannover.de
>> http://www.mh-hannover.de/anatomie.html
>>
>> The ITK community is transitioning from this mailing list to
>> discourse.itk.org. Please join us there!
>> ________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/insight-users
>>
>>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://public.kitware.com/pipermail/insight-users/attachments/20171125/e2dfe88f/attachment-0001.html>
>
> ------------------------------
>
> Message: 2
> Date: Sat, 25 Nov 2017 14:16:42 +1100
> From: Richard Beare <richard.beare at gmail.com>
> To: "Grothausmann, Roman Dr." <grothausmann.roman at mh-hannover.de>
> Cc: ITK Mailing List <insight-users at itk.org>
> Subject: Re: [ITK-users] watershed on surface meshs
> Message-ID:
> <CA+V7QS9Xr0aWQ8MGD4s6zCSh+-qjUfXoLOLWWT5WhgbypexF_w at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Just remembered something that may be useful for testing. I wrote the
> following for doing watersheds on geospatial graphs using R/igraph.
> Certainly isn't efficient, but may be useful for testing if you can turn
> your mesh+curvature into something like a text file.
>
> This was set up for allocating points on maps to destinations based on
> travel time. It performed a kind of smoothing to smooth non-sensical travel
> time estimates, but the basic algorithm is there. It will take some
> fiddling. You could probably do something equivalent with python, probably
> doing better than this priorty queue, but using much the same approach with
> igraph.
>
> library(liqueueR)
>
> ## Mostly a copy of PriorityQueue from liqueueR
> StablePriorityQueue <- setRefClass("StablePriorityQueue",
> contains = "Queue",
> fields = list(
> count = "numeric",
> entries = "numeric",
> priorities = "numeric",
> prioritise = "function"
> ),
> methods = list(
> sort_ = function() {
> order = order(priorities, entries,
> decreasing = TRUE, partial = size():1)
> #
> data <<- data[order]
> priorities <<- priorities[order]
> entries <<- entries[order]
> },
> push = function(item, priority = NULL)
> {
> 'Inserts element into the queue,
> reordering according to priority.'
> callSuper(item)
> #
> if (is.null(priority)) priority =
> prioritise(item)
> #
> priorities <<- c(priorities,
> priority)
> entries <<- c(entries, count)
> count <<- count - 1
> #
> sort_()
> },
> pop = function(N = 1) {
> # 'Removes and returns head of queue
> (or raises error if queue is empty).'
> if (N > size()) stop("insufficient
> items in queue!")
> priorities <<-
> priorities[-seq_len(N)]
> entries <<- entries[-seq_len(N)]
> callSuper(N)
> },
> initialize = function(prioritise =
> NULL, ...) {
> 'Creates a PriorityQueue object.'
> callSuper(...)
> #
> ## to enforce FIFO order
> count <<- 0
> if (is.null(prioritise))
> .self$prioritise = function(x) 0
> else
> .self$prioritise = prioritise
> #
> .self
> }
> )
> )
>
>
>
> igraph.watershed <- function(Gr, labelfield, unlabelled, vertexid, alltimes)
> {
> Gres <- Gr
> ## Watershed, without marking boundary (Beucher)
> ## 1. find all marker nodes that have a background neighbour
> lablist <- which(vertex_attr(Gr, labelfield) != unlabelled)
> nlist <- ego(Gr, 1, lablist)
> uu <- which(map_lgl(nlist, ~any(vertex_attr(Gr, labelfield,
> .x)==unlabelled)))
> ## uu indexes the labelled vertexes
> ## need indexes into all vertexes
> uu <- lablist[uu]
> ## create priority queue
> qq <- StablePriorityQueue$new()
> ## Insert the boundary markers
> kk <- lapply(uu, qq$push, priority=0)
> all.labels <- get.vertex.attribute(Gr, labelfield)
> all.ids <- get.vertex.attribute(Gr, vertexid)
> alltimes <- subset(alltimes, from %in% all.ids, select=c("from",
> "Hospital", "minutes"))
> dd <- duplicated(alltimes[, c("from", "Hospital")])
> alltimes <- alltimes[!dd,]
> alltimes.wide <- spread_(alltimes, key="Hospital", value="minutes")
> ## Make the order the same as all.ids - so now we'll be able to index by
> number
> rownames(alltimes.wide) <- alltimes.wide$from
> alltimes.wide <- alltimes.wide[all.ids, ]
> cc <- 1:ncol(alltimes.wide)
> names(cc) <- colnames(alltimes.wide)
> while (qq$size() > 0) {
> vid <- qq$pop()
> ## Get the neighbours
> nb <- neighborhood(Gr, 1, vid, mode="all", mindist=1)[[1]]
> nlabs <- all.labels[nb]
> ## Are any neighbours unknown?
> ul <- nlabs==unlabelled
> if (any(ul)) {
> this.label <- all.labels[vid]
> nbb <- nb[ul]
> all.labels[nbb] <- this.label
> this.label.idx <- cc[this.label]
> priorities <- alltimes.wide[[this.label.idx]][nbb]
> kk <- map2(nbb, priorities, ~qq$push(.x, priority = .y* -1))
> }
> }
> return(data.frame(PlaceID=all.ids, Hospital=all.labels, stringsAsFactors
> = FALSE))
> }
>
>
>
>
> On Fri, Nov 24, 2017 at 10:26 PM, Grothausmann, Roman Dr. <
> grothausmann.roman at mh-hannover.de> wrote:
>
>> Dear mailing list members,
>>
>>
>> I need to separate a mesh at "curved corners" (see attached PNG, using the
>> colored labels from a facet analysis do not suffice but go in the right
>> direction). So my current thought is to run vtkCurvature to get a Gaussian
>> curvature value per point/vertex and then try to separate regions of
>> positive values around local maxima. Just thresholding the result of
>> vtkCurvature does not fully separate each local max from neighboring ones,
>> but to my understanding a surface watershed would. I found two publications
>> by Mangan and Whitaker on this:
>>
>> Partitioning 3D surface meshes using watershed:
>> http://teacher.en.rmutt.ac.th/ktw/Resources/Full%20paper%20P
>> DF/Partitioning%203D%20surface%20meshes%20using%20watershed%
>> 20segmentation.pdf
>>
>> Surface Segmentation Using Morphological Watersheds:
>> https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd
>> =4&cad=rja&uact=8&ved=0ahUKEwjD0by1lafWAhVUGsAKHZ2MAbUQFgg_
>> MAM&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%
>> 2Fdownload%3Fdoi%3D10.1.1.464.2788%26rep%3Drep1%26type%
>> 3Dpdf&usg=AFQjCNGX-p9-ElQFcpsUyBRO0pCjBKCmNg
>>
>> Does anybody know about an implementation for this in VTK/ITK or another
>> open-source library? If not, would it be possible to transfer the ITK
>> watershed implementation for voxel data to mesh data, e.g. to crate a
>> VTKmorphWatershedFilter?
>>
>> Thanks for any help or hints.
>> Roman
>>
>>
>> --
>> Dr. Roman Grothausmann
>>
>> Tomographie und Digitale Bildverarbeitung
>> Tomography and Digital Image Analysis
>>
>> Medizinische Hochschule Hannover
>> Institut f?r Funktionelle und Angewandte Anatomie
>> OE 4120, Carl-Neuberg-Str. 1, 30625 Hannover, Deutschland
>>
>> Tel. +49 511 532-2900
>> grothausmann.roman at mh-hannover.de
>> http://www.mh-hannover.de/anatomie.html
>>
>> The ITK community is transitioning from this mailing list to
>> discourse.itk.org. Please join us there!
>> ________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/insight-users
>>
>>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://public.kitware.com/pipermail/insight-users/attachments/20171125/cd6e3611/attachment-0001.html>
>
> ------------------------------
>
> Message: 3
> Date: Sat, 25 Nov 2017 11:49:11 +0000
> From: Abdelkhalek Bakkari <bakkari.abdelkhalek at hotmail.fr>
> To: ITK Users <insight-users at public.kitware.com>, "dzenanz at gmail.com"
> <dzenanz at gmail.com>
> Subject: [ITK-users] U-Net: Convolutional Networks for image
> segmentation
> Message-ID:
> <VI1PR0902MB204655751CE5A47AE540A14A83270 at VI1PR0902MB2046.eurprd09.prod.outlook.com>
>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Dear ITK users,
>
> I want to know if there is any ITK filter or an example related to U-Net Convolutional Networks.
>
> Thank you in advance.
>
> Kind regards,
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://public.kitware.com/pipermail/insight-users/attachments/20171125/abbcee54/attachment-0001.html>
>
> ------------------------------
>
> Subject: Digest Footer
>
> The ITK community is transitioning from this mailing list to discourse.itk.org. Please join us there!
> ____________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://public.kitware.com/mailman/listinfo/insight-users
>
>
> ------------------------------
>
> End of Insight-users Digest, Vol 163, Issue 10
> **********************************************
The ITK community is transitioning from this mailing list to discourse.itk.org. Please join us there!
________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
More information about the Community
mailing list