<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0717-5000</journal-id>
<journal-title><![CDATA[CLEI Electronic Journal]]></journal-title>
<abbrev-journal-title><![CDATA[CLEIej]]></abbrev-journal-title>
<issn>0717-5000</issn>
<publisher>
<publisher-name><![CDATA[Centro Latinoamericano de Estudios en Informática]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0717-50002013000200004</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[A volume segmentation approach based on GrabCut]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Ramírez J]]></surname>
<given-names><![CDATA[Esmitt]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Temoche]]></surname>
<given-names><![CDATA[Pablo]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Carmona]]></surname>
<given-names><![CDATA[Rhadamés]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Central University of Venezuela Faculty of Sciences Computer Science Department]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>08</month>
<year>2013</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>08</month>
<year>2013</year>
</pub-date>
<volume>16</volume>
<numero>2</numero>
<fpage>4</fpage>
<lpage>4</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_arttext&amp;pid=S0717-50002013000200004&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_abstract&amp;pid=S0717-50002013000200004&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_pdf&amp;pid=S0717-50002013000200004&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[Abstract The representation of an image as a flow network has gained an increased interest in research for the 2D and 3D segmentation field. One of these segmentation approaches consists in applying a minimum cut algorithm to separate the image in background and foreground. The most remarkable algorithm to segment a 2D image using this approach is GrabCut. This article presents a novel segmentation of 3D image using GrabCut implemented on the GPU. We proposed a scheme where a volume dataset is used as input, instead of a 2D image. The original GrabCut algorithm is adapted to be executed on the GPU efficiently. Our algorithm is fully parallel and is optimized to run on Nvidia CUDA. Tests performed showed excellent results with different volumes, reducing the computation time and maintaining a correct separation background/foreground.]]></p></abstract>
<abstract abstract-type="short" xml:lang="es"><p><![CDATA[Spanish abstract La representación de una imagen como una red de flujo ha ganado un creciente interés de investigación en el campo de la segmentación 2D y 3D. Uno de dichos enfoques consiste en aplicar un algoritmo de corte mínimo para separar la imagen en fondo (background) y primer plano (foreground). El algoritmo más notable para segmentar una imagen 2D empleando este enfoque es el algoritmo GrabCut. Este artículo presenta una segmentación novedosa de una imagen 3D usando GrabCut implementada en la GPU. Nosotros proponemos un esquema donde los datos volumétricos son usados como entrada en lugar de una imagen 2D. El algoritmo original de GrabCut es adaptado para ser ejecutado eficientemente en la GPU. Nuestro algoritmo es totalmente paralelo y está optimizado para ejecutarse con Nvidia CUDA. Las pruebas realizadas mostraron excelentes resultados con diferentes volúmenes, reduciendo el tiempo de cálculo y el manteniendo una correcta separación fondo/primer plano.]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[volume segmentation]]></kwd>
<kwd lng="en"><![CDATA[GrabCut]]></kwd>
<kwd lng="en"><![CDATA[flow network]]></kwd>
<kwd lng="en"><![CDATA[minimum cut]]></kwd>
<kwd lng="en"><![CDATA[Push-Relabel]]></kwd>
<kwd lng="es"><![CDATA[Segmentación de volúmenes]]></kwd>
<kwd lng="es"><![CDATA[GrabCut]]></kwd>
<kwd lng="es"><![CDATA[red de flujo]]></kwd>
<kwd lng="es"><![CDATA[corte mínimo]]></kwd>
<kwd lng="es"><![CDATA[Push-Relabel]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <div class="maketitle">   <b><font face="Verdana" size="4">A volume segmentation approach based on GrabCut</font></b>    <div class="author" >    <font face="Verdana" size="2"> <span  class="cmb-10x-x-120">Esmitt Ramírez J., Pablo Temoche </span><span  class="cmr-12">and </span><span  class="cmb-10x-x-120">Rhadamés Carmona</span> <br />    <span  class="cmr-12">Computer Graphics Center, Computer Science Department,</span> <br />       <span  class="cmr-12">Faculty of Sciences, Central University of Venezuela,</span> <br />                   <span  class="cmr-12">Caracas, Venezuela, 1010-A</span> <br /> <span  class="cmsy-10x-x-120">{</span><span  class="cmti-12"><a href="mailto:esmitt.ramirez@ciens.ucv.ve">esmitt.ramirez</a>, <a href="mailto:pablo.temoche@ciens.ucv.ve">pablo.temoche</a>, <a href="mailto:rhadames.carmona@ciens.ucv.ve">rhadames.carmona</a></span><span  class="cmsy-10x-x-120">}</span><span  class="cmti-12">@ciens.ucv.ve </span></font></div><font face="Verdana" size="2"><br /> </font>    <div class="date" ></div>    </div>        <div  class="abstract"  >     <div class="center"  > <!--l. 40-->    <p >     <div class="minipage"><!--l. 40-->    <p ><font face="Verdana" size="2"><span  class="cmbx-10">Abstract</span> <!--l. 43--></font>    <p > <font face="Verdana" size="2"> <!--l. 45--></font>    <p ><font face="Verdana" size="2">The representation of an image as a flow network has gained an increased interest in research for the 2D and 3D segmentation field. One of these segmentation approaches consists in applying a minimum cut algorithm to separate the image in background and foreground. The most remarkable algorithm to segment a 2D image using this approach is  GrabCut.  This  article  presents  a  novel  segmentation  of  3D  image  using  GrabCut implemented on the GPU. We proposed a scheme where a volume dataset is used as input, instead of a 2D image. The original GrabCut algorithm is adapted to be executed on the GPU efficiently. Our algorithm is fully parallel and is optimized to run on Nvidia CUDA. Tests performed showed excellent results with different volumes, reducing the computation time and maintaining a correct separation background/foreground. <!--l. 47-->   </font>     ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2"><span  class="cmbx-10">Spanish abstract</span> <!--l. 43--></font>    <p >    <p ><font face="Verdana" size="2">La representación de una imagen como una red de flujo ha ganado un creciente interés de  investigación  en  el  campo  de  la  segmentación  2D y  3D.  Uno  de  dichos  enfoques consiste  en  aplicar  un  algoritmo  de  corte  mínimo  para  separar  la  imagen  en  fondo (background) y primer plano (foreground). El algoritmo más notable para segmentar una imagen 2D empleando este enfoque es el algoritmo GrabCut. Este artículo presenta una segmentación novedosa de una imagen 3D usando GrabCut implementada en la GPU. Nosotros proponemos un esquema donde los datos volumétricos son usados como entrada en lugar de una imagen 2D. El algoritmo original de GrabCut es adaptado para ser ejecutado eficientemente en la GPU. Nuestro algoritmo es totalmente paralelo y está optimizado para ejecutarse con Nvidia CUDA. Las pruebas realizadas mostraron excelentes resultados con diferentes volúmenes, reduciendo el tiempo de cálculo y el manteniendo una correcta separación fondo/primer plano. </font> </div></div> </div> <!--l. 51-->    <p >   <font face="Verdana" size="2">   <span class="cmbx-10">Keywords: </span> volume segmentation, GrabCut, flow network, minimum cut, Push-Relabel. <!--l. 53--></font>    <p >    <font face="Verdana" size="2">    <span class="cmbx-10">Spanish keywords: </span> Segmentación de volúmenes, GrabCut, red de flujo, corte mínimo, Push-Relabel <!--l. 55--></font>    <p >   <font face="Verdana" size="2">Received 2012-05-30, Revised 2013-01-15, Accepted 2013-01-15 </font>        <p><font face="Verdana" size="2"><span class="titlemark">1   </span> <a   id="x1-10001"></a>Introduction</font></p>  <!--l. 60-->    <p ><font face="Verdana" size="2">The image segmentation is a process that consists in separating an image into two or more different regions. Each region is homogeneous in accordance with some similarity criteria predefined. When the image represents a volume (3D image), the process is called volume segmentation. <!--l. 62--></font>    <p >   <font face="Verdana" size="2">There are several approaches to perform a volume segmentation, though these algorithms require a significant processing time <span class="cite">(<a  href="#XBANKMAN00">1</a>,&#x00A0;<a  href="#XPrassni10">2</a>)</span>. Recently, a set of algorithms on the GPU (Graphics Processing Unit) have been developed to exploit their native parallelism, and obtain better time results than traditional algorithms executed in the CPU. Noticeable examples of these algorithms are developed in the CUDA (Compute Unified Device Architecture) developed by Nvidia <span class="cite">(<a  href="#Xnvidiaweb">3</a>)</span>. It provides a parallel computing architecture to make algorithms to be executed on multiples cores on the GPU. <!--l. 64--></font>    <p >   <font face="Verdana" size="2">Volume segmentation algorithms are highlighted between the algorithms executed using the GPU. Especially in the field of medicine, the segmentation takes an important role. Thus, when is necessary to extract a particular region to further medical diagnosis, volume segmentation is totally required. <!--l. 66--></font>    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">In this paper, we present an approach based on the GrabCut algorithm developed by Rother et al. <span class="cite">(<a  href="#XROTHER04">4</a>)</span>, for the volume segmentation using CUDA. Our contribution can be summarized as follow: </font>      <ul class="itemize1">      <li class="itemize"><font face="Verdana" size="2">An adaptation of the GrabCut algorithm to 3D image segmentation.      </font>      </li>      <li class="itemize"><font face="Verdana" size="2">A Push-Relabel maximum flow algorithm on the GPU.      </font>      </li>      <li class="itemize"><font face="Verdana" size="2">Introduction of some changes in the original formulation of the GrabCut algorithm.</font></li>    </ul> <!--l. 73-->    <p >   <font face="Verdana" size="2">Using our approach, first the user must select a ROI (Region Of Interest) inside the volume to be segmented. In image context, a ROI is defined as a section inside the image which indicates the area to be processed using a certain algorithm(s), see Figure <a  href="#x1-1001r1">1<!--tex4ht:ref: f --></a>. Following, the algorithm is executed and returns two sub-volumes: foreground (region of interest) and background (remaining). The algorithm builds a flow network <span class="cite">(<a  href="#XCORMEN01">5</a>)</span> based on the voxels color of the ROI (according to a transfer function). We created a parallel version of the algorithm Push-Relabel executed and stored on graphics hardware. At the same time, it provides a scheme for treatment of inactive threads on the GPU. Finally, results are studied and compared between two implementations of the same algorithm: CPU (sequential) versus the GPU (parallel). <!--l. 77--></font>    <p >   <hr class="figure">    <div class="figure"  >    <!--l. 79-->    <p ><font face="Verdana" size="2"><a   id="x1-1001r1"> <img  src="/img/revistas/cleiej/v16n2/2a04f1.jpg"></a> <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;1: </span><span   class="content">An example of a ROI selection inside an image.</span></font></div><!--tex4ht:label?: x1-1001r1 -->  <!--l. 83-->    <p >   </div><hr class="endfigure"> <!--l. 86-->    <p >   <font face="Verdana" size="2">This paper is organized as follow: Section <a  href="#x1-20002">2<!--tex4ht:ref: sec:graph --></a> presents an introduction to the area of segmentation as a graph problem. Section <a  href="#x1-30003">3<!--tex4ht:ref: sec:related --></a> describes previous works in the area. Following that, in Section <a  href="#x1-40004">4<!--tex4ht:ref: approach --></a>, we explain details of our proposal to the volume segmentation. Next, in Section <a  href="#x1-90005">5<!--tex4ht:ref: tests --></a>, experiments and performance, qualitative and memory consumption results are presented. Finally, conclusions and future works are presented in Section <a  href="#x1-140006">6<!--tex4ht:ref: conclusions --></a>. </font>        <p><font face="Verdana" size="2"><span class="titlemark">2   </span> <a   id="x1-20002"></a>Segmentation Based on Graph Algorithms</font></p> <!--l. 91-->    ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2">Several problems on image processing can be expressed in terms of energy minimization. In recent years, max flow minimum cut algorithms have emerge as tools for precise or approximate energy minimization <span class="cite">(<a  href="#XCollins_2004">6</a>)</span>. The idea consists in representing each pixel of the image as a graph node (using a pixel labeling approach), and connect each node with others using weighted edges. Then with this built graph, an energy function is applied with a minimal cut algorithm on the graph, which also minimizes energy. This statement was proposed by Greig et al. <span class="cite">(<a  href="#Xgreig">7</a>)</span> in 1989. With this, the minimal cut process in a graph can be computed efficiently by a maximum flow algorithm. <!--l. 93--></font>    <p >   <font face="Verdana" size="2">In 2001, Boykov et al. <span class="cite">(<a  href="#Xenergyfast">8</a>)</span> develop an approximation to the minimization of energy based on a representation of the image as a graph. Following, Boykov and Kolmogorov <span class="cite">(<a  href="#XBOY04">9</a>)</span> present an experimental comparison of the efficiency of min-cut/max-flow algorithms for segmentation. Several types of image features are considered to separate two components under energy minimization: color, gradient values, similarity and so on. <!--l. 95--></font>    <p >   <font face="Verdana" size="2">In graph theory, it is possible to define a graph as <img  src="/img/revistas/cleiej/v16n2/2a040x.png" alt="G = (V,A)  "  class="math" > which contains a set of nodes and edges. A cut is defined as a partition of a graph into two disjoint subsets. It is performed eliminating the set of edges <img  src="/img/revistas/cleiej/v16n2/2a041x.png" alt="  &#x2032; A "  class="math" > to obtain two subgraphs <img  src="/img/revistas/cleiej/v16n2/2a042x.png" alt="G1  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a043x.png" alt="G2  "  class="math" > such as <img  src="/img/revistas/cleiej/v16n2/2a044x.png" alt="G = G1 &#x222A; G2  "  class="math" >. A cut has a weight <img  src="/img/revistas/cleiej/v16n2/2a045x.png" alt="w  "  class="math" > obtained as a sum of all weights of edges removed, <img  src="/img/revistas/cleiej/v16n2/2a046x.png" alt="    &#x2211; w =   we  "  class="math" >. In a graph, there are several ways to obtain a cut. Furthermore, the minimal cut is the cut with the smallest weight of all possible cuts in the graph. <!--l. 97--></font>    <p >   <font face="Verdana" size="2">Following the min-cut/max-flow theorem <span class="cite">(<a  href="#XCORMEN01">5</a>)</span>, the minimal cut in a graph can be performed executing a max-flow algorithm. A <span  class="cmti-10">max-flow </span>algorithm consists in determining the maximum network flow that goes through a source node and reaches a target node. Thus, the saturated edges (edges with <img  src="/img/revistas/cleiej/v16n2/2a047x.png" alt="we = 0  "  class="math" >) are eliminated by the algorithm to obtain the minimal cut. Among the most used algorithms to compute the minimal cut, there are those proposed by Ford and Fulkerson <span class="cite">(<a  href="#XFORD62">10</a>)</span> and the ones proposed by Goldberg and Tarjan <span class="cite">(<a  href="#XGOLD88">11</a>)</span> called Push-Relabel. A remarkable technique where the min-cut/max-flow is implemented efficiently, is called GraphCut <span class="cite">(<a  href="#XBoykov01">12</a>)</span>. <!--l. 99--></font>    <p >   <font face="Verdana" size="2">Based on the GraphCut algorithm, Rother et al. <span class="cite">(<a  href="#XROTHER04">4</a>)</span> introduce a novel approach named GrabCut, where a graph is divided into two regions using the min-cut/max-flow theorem: background and foreground. An energy minimization function based on color similarity is applied to reach the segmentation. The next section presents a subset of notable works on volume segmentation area, focusing on the GrabCut. <!--l. 102--></font>    <p >        <p><font face="Verdana" size="2"><span class="titlemark">3   </span> <a   id="x1-30003"></a>Related Works</font></p> <!--l. 104-->    <p ><font face="Verdana" size="2">In literature, exist many algorithms of volume segmentation. In recent years, algorithms based on image-graph representations, which assign statistical values on weight edges and separate the graph on ROIs have considerable grown. Thus, there are several graph based approaches for image segmentation. Specifically, the GraphCut algorithm proposed by Boykov and Jolly <span class="cite">(<a  href="#XBoykov01">12</a>)</span> applies a minimal cut algorithm over the built graph and splits it up into 2 regions (foreground and background). Based on that, Boykov and Funka-Lea <span class="cite">(<a  href="#XBOYKOV06">13</a>)</span> present a complete review of detailed technical description of different proposals that use the GraphCut algorithm for image segmentation. More recently, there are numerous research works <span class="cite">(<a  href="#XPRICE10">14</a>,&#x00A0;<a  href="#XCOUPRIE11">15</a>,&#x00A0;<a  href="#XMALMBERG11">16</a>,&#x00A0;<a  href="#XLIM12">17</a>)</span> based on the GraphCut approach which extend it to improve the segmentation process in different scenarios. A notable work which uses the GraphCut approach is the GrabCut algorithm. In 2004, GrabCut was introduced by Rother et al. <span class="cite">(<a  href="#XROTHER04">4</a>)</span>. An example of the implementation of the original GrabCut algorithm over a particular problem is presented in <span class="cite">(<a  href="#XHAGADI11">18</a>)</span> where tumors are segmented using endoscopic images.  <!--l. 106--></font>    <p >   <font face="Verdana" size="2">Puranik and Krishnan <span class="cite">(<a  href="#XPURANIK10">19</a>)</span> present a complete and recent survey of volume segmentation algorithms for medical images which exist in the literature. In that work, they show a brief classification of segmentation algorithms in structural, statistical and hybrid techniques. In 2012, there is a significant research presented by Santle and Govindan in <span class="cite">(<a  href="#XSANTLE12">20</a>)</span> which shows a complete review of segmentation based on image-graph algorithms. <!--l. 108--></font>    <p >   <font face="Verdana" size="2">Nowadays, there are techniques which execute algorithms on the GPU <span class="cite">(<a  href="#XZHUGE09">21</a>,&#x00A0;<a  href="#XZHAI10">22</a>,&#x00A0;<a  href="#XSCMID11">23</a>)</span> to accelerate the volume segmentation process. In 2005, Schenke et al. <span class="cite">(<a  href="#XSCHENKE05">24</a>)</span> reviewed the GPU algorithms and classified them into pixel-based methods, edge-based methods and region-based methods. This classification is made according to the location where the segmentation process is applied. In the next section, we present our proposal to accomplish a volume segmentation based on GrabCut using GPU. <!--l. 111--></font>    ]]></body>
<body><![CDATA[<p >        <p><font face="Verdana" size="2"><span class="titlemark">4   </span> <a   id="x1-40004"></a>Approach</font></p> <!--l. 113-->    <p ><font face="Verdana" size="2">The GrabCut is an iterative and minimal user intervention algorithm, which combines statistical values based on the GraphCut algorithm <span class="cite">(<a  href="#XBoykov01">12</a>)</span> to separate an image in foreground and background. The input of the algorithm is an image and a region to segment. The region is defined by the user with a single rectangle. Figure <a  href="#x1-4001r2">2<!--tex4ht:ref: fig:original --></a>a shows how the user selects a box (in yellow color) inside the image to indicate the region of interest. Figure <a  href="#x1-4001r2">2<!--tex4ht:ref: fig:original --></a>b presents the results obtained after performing the GrabCut algorithm. <!--l. 116--></font>    <p >   <hr class="figure">    <div class="figure"  >  <!--l. 117-->    <p ><font face="Verdana" size="2"><a   id="x1-4001r2"> <img  src="/img/revistas/cleiej/v16n2/2a04f2.jpg"></a> <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;2: </span><span   class="content">Image segmentation using the GrabCut algorithm.</span></font></div><!--tex4ht:label?: x1-4001r2 -->  <!--l. 120-->    <p >   </div><hr class="endfigure"> <!--l. 122-->    <p >   <font face="Verdana" size="2">Our approach is an extension of the original 2D GrabCut to the 3D space. The algorithm requires the source volume and a sub-volume selected by the user. Then, the algorithm creates a flow network <span class="cite">(<a  href="#XCORMEN01">5</a>)</span> where each voxel is a graph node. Each node is linked to its neighbors using weight edges called N-Links (the maximum number of neighbors is 26). In a flow network there are two special nodes: source <img  src="/img/revistas/cleiej/v16n2/2a048x.png" alt="s  "  class="math" > and sink <img  src="/img/revistas/cleiej/v16n2/2a049x.png" alt="t  "  class="math" >. The source <img  src="/img/revistas/cleiej/v16n2/2a0410x.png" alt="s  "  class="math" > is connected to each voxel inside the user selection to compose the foreground. Thus, the sink node <img  src="/img/revistas/cleiej/v16n2/2a0411x.png" alt="t  "  class="math" > is connected to each voxel outside the user selection to the background. <!--l. 124--></font>    <p >   <font face="Verdana" size="2">All nodes are connected to the source through weighted edges called T-Links. The weights are calculated using Gaussian Mixture Models (GMM) <span class="cite">(<a  href="#XCHUA01">25</a>)</span>. The background and foreground groups are formed by <img  src="/img/revistas/cleiej/v16n2/2a0412x.png" alt="k  "  class="math" > gaussian components, with <img  src="/img/revistas/cleiej/v16n2/2a0413x.png" alt="k = 5  "  class="math" >. Each gaussian component belongs to a GMM and it is derived from the color statistics in each region of the image. The aim is to separate components which contain a group of similar color voxels. For this purpose there are several techniques, particularly in this paper a color quantization technique developed by Orchard and Bouman <span class="cite">(<a  href="#XORCH91">26</a>)</span> is used. <!--l. 126--></font>    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">Once the graph is built, the min-cut algorithm must be applied. In the paper presented by Rother et al. <span class="cite">(<a  href="#XROTHER04">4</a>)</span>, Ford-Fulkerson algorithm is used. In this proposal, we employ the Push-Relabel algorithm because it can be parallelized on the GPU. Thereby, once applied the min-cut, the graph is separated in foreground and background, and the process can be performed over again until all nodes are part of a group. <!--l. 128--></font>    <p >   <font face="Verdana" size="2">Figure <a  href="#x1-4002r3">3<!--tex4ht:ref: fig:schemegeneral --></a> shows an overview of our approach. First, the user selects the ROI (purple color box). With this selection, a list of matte values are created and the N-Links are constructed. For each voxel, a matte value indicates to which group belongs (background or foreground). If a voxel is inside the user selection then it belongs to the matte foreground group. Otherwise, it belongs to the matte background group. These matte values are modified during the algorithm execution.  <!--l. 130--></font>    <p >   <hr class="float">    <div class="float"  >  <font face="Verdana" size="2">  <a   id="x1-4002r3"> <img  src="/img/revistas/cleiej/v16n2/2a04f3.jpg" alt="PIC"   ></a> <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;3: </span><span   class="content">Steps of the proposed 3D volume segmentation.</span></font></div><!--tex4ht:label?: x1-4002r3 -->     </div><hr class="endfloat" /> <!--l. 137-->    <p >   <font face="Verdana" size="2">Next, to each voxel <img  src="/img/revistas/cleiej/v16n2/2a0414x.png" alt="m  "  class="math" > a probability value is assigned belonging to each component <img  src="/img/revistas/cleiej/v16n2/2a0415x.png" alt="i  "  class="math" > of the GMM background <img  src="/img/revistas/cleiej/v16n2/2a0416x.png" alt="Pback(m,i)  "  class="math" > and GMM foreground <img  src="/img/revistas/cleiej/v16n2/2a0417x.png" alt="Pfore(m,i)  "  class="math" >. This process is performed on all voxels in order to obtain the T-Links values. After the graph has been constructed, the minimal cut is achieved separating the graph in 2 sub-graphs. In Figure <a  href="#x1-4002r3">3<!--tex4ht:ref: fig:schemegeneral --></a>, these are represented by the green cubes to the foreground and red cubes to the background. The min-cut algorithm applied is based on a Push-Relabel approach <span class="cite">(<a  href="#XGOLD88">11</a>)</span> and fully implemented on the GPU. Finally, background voxels are removed to get the final result. <!--l. 139--></font>    <p >   <font face="Verdana" size="2">The following sections explain in detail the approach to obtain the value of N-Links, T-Links and the Push-Relabel algorithm. </font>        <p><font face="Verdana" size="2"><span class="titlemark">4.1   </span> <a   id="x1-50004.1"></a>N-Link</font></p> <!--l. 144-->    <p ><font face="Verdana" size="2">Between two nodes <img  src="/img/revistas/cleiej/v16n2/2a0418x.png" alt="m  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0419x.png" alt="n  "  class="math" >, the N-Link value <img  src="/img/revistas/cleiej/v16n2/2a0420x.png" alt="N (m,n)  "  class="math" > is computed assuming the distance between them is 1. Then, the formulation pesented by Mortensen and Barrett <span class="cite">(<a  href="#XMortensen95">27</a>)</span> is applied (equation <a  href="#x1-5001r1">1<!--tex4ht:ref: nlink --></a>). </font>    <table  class="equation"><tr><td>    <center class="math-display" > <font face="Verdana" size="2"> <img  src="/img/revistas/cleiej/v16n2/2a0421x.png" alt="              -B||Cm- Cn||2 N (m,n) = k &#x00D7; e         , " class="math-display" ><a   id="x1-5001r1"></a></font></center></td><td class="equation-label">        <font face="Verdana" size="2">(1)</font></td></tr></table> <!--l. 150-->    <p > <font face="Verdana" size="2">where <img  src="/img/revistas/cleiej/v16n2/2a0422x.png" alt="||Cm - Cn|| "  class="math" > represents the euclidean distance in RGB color space to voxels <img  src="/img/revistas/cleiej/v16n2/2a0423x.png" alt="m  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0424x.png" alt="n  "  class="math" >. The <img  src="/img/revistas/cleiej/v16n2/2a0425x.png" alt="B  "  class="math" > value is a constant that ensures a difference in distance between color values of voxels. The constant value <img  src="/img/revistas/cleiej/v16n2/2a0426x.png" alt="k = 50  "  class="math" > is a suggested value in the work developed by Blake et al. <span class="cite">(<a  href="#XBLAKE04">28</a>)</span> about the Gaussian Mixture Markov Random Field (GMMRF) model calculations. Equation <a  href="#x1-5002r2">2<!--tex4ht:ref: bconstant --></a> shows how to calculate <img  src="/img/revistas/cleiej/v16n2/2a0427x.png" alt="B  "  class="math" >, which is a variation of the original formula presented in <span class="cite">(<a  href="#XBoykov01">12</a>)</span>. </font>    <table  class="equation"><tr><td>    <center class="math-display" > <font face="Verdana" size="2"> <img  src="/img/revistas/cleiej/v16n2/2a0428x.png" alt="B = ------------1-------------     2P-&#x00D7; &#x2211;Pm=0 &#x2211;Vn=0&#x2225;Cm - Cn&#x2225;2 " class="math-display" ><a   id="x1-5002r2"></a></font></center></td><td class="equation-label">        <font face="Verdana" size="2">(2)</font></td></tr></table> <!--l. 156-->    ]]></body>
<body><![CDATA[<p > <font face="Verdana" size="2"> <!--l. 158--></font>    <p >   <font face="Verdana" size="2">The value of <img  src="/img/revistas/cleiej/v16n2/2a0429x.png" alt="P  "  class="math" > represents the number of voxels in the volume, and <img  src="/img/revistas/cleiej/v16n2/2a0430x.png" alt="V  "  class="math" > describes the number of neighbors to each voxel. In this proposal, every voxel has <img  src="/img/revistas/cleiej/v16n2/2a0431x.png" alt="6  "  class="math" > neighbors in directions <img  src="/img/revistas/cleiej/v16n2/2a0432x.png" alt="± X  "  class="math" >, <img  src="/img/revistas/cleiej/v16n2/2a0433x.png" alt="± Y  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0434x.png" alt="± Z  "  class="math" >. Then, the value of <img  src="/img/revistas/cleiej/v16n2/2a0435x.png" alt="V  "  class="math" > is <img  src="/img/revistas/cleiej/v16n2/2a0436x.png" alt="6  "  class="math" > except at borders which can take values from <img  src="/img/revistas/cleiej/v16n2/2a0437x.png" alt="3  "  class="math" > to <img  src="/img/revistas/cleiej/v16n2/2a0438x.png" alt="5  "  class="math" >.  <!--l. 160--></font>    <p >   <font face="Verdana" size="2">As mentioned above, a N-Link connects a voxel <img  src="/img/revistas/cleiej/v16n2/2a0439x.png" alt="m  "  class="math" > with a neighbor voxel <img  src="/img/revistas/cleiej/v16n2/2a0440x.png" alt="n  "  class="math" >. Also, each voxel has to be connected to the foreground and background group through a link called T-Link. The next section presents how we calculate these T-Links. <!--l. 163--></font>    <p >        <p><font face="Verdana" size="2"><span class="titlemark">4.2   </span> <a   id="x1-60004.2"></a>T-Link</font></p> <!--l. 165-->    <p ><font face="Verdana" size="2">When the user selects a region to be segmented, voxels inside the selection are marked as unknown voxels, and those outside are marked as background voxels. On each iteration of the algorithm, it calculates the value of the GMM of every voxel and determines in which group a voxel belongs. Then, an unknown voxel can change its value to be part of the background or foreground group. These voxels connections are called T-Links. <!--l. 167--></font>    <p >   <font face="Verdana" size="2">Each voxel has a T-Link connected with the foreground, <img  src="/img/revistas/cleiej/v16n2/2a0441x.png" alt="Tfore  "  class="math" >, and with the background <img  src="/img/revistas/cleiej/v16n2/2a0442x.png" alt="Tback  "  class="math" >. If a voxel belongs to the foreground then the min-cut does not disconnect it from this group. For that voxel, the condition can be guarantee assigning the value of the <img  src="/img/revistas/cleiej/v16n2/2a0443x.png" alt="Tfore = Kmax  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0444x.png" alt="Tback = 0  "  class="math" >, where <img  src="/img/revistas/cleiej/v16n2/2a0445x.png" alt="Kmax  "  class="math" > represents the maximum possible weight of an edge. Similarly occurs if the voxel belongs to the background, i.e. <img  src="/img/revistas/cleiej/v16n2/2a0446x.png" alt="Tback = Kmax  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0447x.png" alt="Tfore = 0  "  class="math" >. Thereby, when a m-voxel is marked as unknown then <img  src="/img/revistas/cleiej/v16n2/2a0448x.png" alt="Tfore = Pfore(m )  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0449x.png" alt="Tback = Pback(m )  "  class="math" >. The <img  src="/img/revistas/cleiej/v16n2/2a0450x.png" alt="Pfore(m )  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0451x.png" alt="Pback(m)  "  class="math" > indicate the probability of <img  src="/img/revistas/cleiej/v16n2/2a0452x.png" alt="m  "  class="math" > to belong to the GMM foreground and background respectively. <!--l. 169--></font>    <p >   <font face="Verdana" size="2">It is possible to define the probability <img  src="/img/revistas/cleiej/v16n2/2a0453x.png" alt="P (m )  "  class="math" > of the m-voxel as: </font>    <table  class="equation"><tr><td>    <center class="math-display" > <font face="Verdana" size="2"> <img  src="/img/revistas/cleiej/v16n2/2a0454x.png" alt="            &#x2211;k P (m ) = - log   P(m,i)             i=1 " class="math-display" ><a   id="x1-6001r3"></a></font></center></td><td class="equation-label">        <font face="Verdana" size="2">(3)</font></td></tr></table> <!--l. 173-->    <p > <font face="Verdana" size="2"> <!--l. 175--></font>    <p ><font face="Verdana" size="2">where <img  src="/img/revistas/cleiej/v16n2/2a0455x.png" alt="k  "  class="math" > represents the number of component of the GMM. The value of <img  src="/img/revistas/cleiej/v16n2/2a0456x.png" alt="P(m, i)  "  class="math" > is the probability of a m-voxel to belongs to a component <img  src="/img/revistas/cleiej/v16n2/2a0457x.png" alt="i  "  class="math" >. The computation of <img  src="/img/revistas/cleiej/v16n2/2a0458x.png" alt="P(m, i)  "  class="math" > follows the method applied by Talbot and Xu <span class="cite">(<a  href="#XTAL06">29</a>)</span>. Aforementioned, in this paper there are five components used. Thus, to each voxel the value of <img  src="/img/revistas/cleiej/v16n2/2a0459x.png" alt="Pback(m,i)  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0460x.png" alt="Pfore(m, i)  "  class="math" > of all components must be calculated. <!--l. 177--></font>    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">Once the values of N-Links and T-Links are calculated for all nodes, the Push-Relabel algorithm is applied to obtain a minimal cut. Next, we explain this algorithm in detail. <!--l. 180--></font>    <p >        <p><font face="Verdana" size="2"><span class="titlemark">4.3   </span> <a   id="x1-70004.3"></a>Push-Relabel</font></p> <!--l. 182-->    <p ><font face="Verdana" size="2">The Push-Relabel algorithm was proposed by Golberg and Tarjan <span class="cite">(<a  href="#XGOLD88">11</a>)</span> in 1986. It is an iterative algorithm to calculate a minimal cut in a graph, specifically in a flow network. In a flow network <img  src="/img/revistas/cleiej/v16n2/2a0461x.png" alt="G  "  class="math" >, there are two special nodes: source node <img  src="/img/revistas/cleiej/v16n2/2a0462x.png" alt="s  "  class="math" > and sink node <img  src="/img/revistas/cleiej/v16n2/2a0463x.png" alt="t  "  class="math" >. Additionally, the Push-Relabel algorithm constructs a residual graph <img  src="/img/revistas/cleiej/v16n2/2a0464x.png" alt="Gf  "  class="math" > which consists of a graph with the same topology of <img  src="/img/revistas/cleiej/v16n2/2a0465x.png" alt="G  "  class="math" >, but composed by edges that support more flow. A sent flow from a node <img  src="/img/revistas/cleiej/v16n2/2a0466x.png" alt="u  "  class="math" > to a node <img  src="/img/revistas/cleiej/v16n2/2a0467x.png" alt="v  "  class="math" >, <img  src="/img/revistas/cleiej/v16n2/2a0468x.png" alt="f (u,v)  "  class="math" >, must be less or equal than the capacity of the edge between <img  src="/img/revistas/cleiej/v16n2/2a0469x.png" alt="u  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a0470x.png" alt="v  "  class="math" >, <img  src="/img/revistas/cleiej/v16n2/2a0471x.png" alt="c(u,v)  "  class="math" >. The graph <img  src="/img/revistas/cleiej/v16n2/2a0472x.png" alt="Gf  "  class="math" > changes the weight of the edges (flow capacity) during the algorithm execution. It is possible to define the residual capacity <img  src="/img/revistas/cleiej/v16n2/2a0473x.png" alt="cf(u,v)  "  class="math" > as the amount of flow that can be sent from <img  src="/img/revistas/cleiej/v16n2/2a0474x.png" alt="u  "  class="math" > to <img  src="/img/revistas/cleiej/v16n2/2a0475x.png" alt="v  "  class="math" >, after sending <img  src="/img/revistas/cleiej/v16n2/2a0476x.png" alt="f(u,v)  "  class="math" >. The residual capacity is computed as: </font>     <table  class="equation"><tr><td>    <center class="math-display" > <font face="Verdana" size="2"> <img  src="/img/revistas/cleiej/v16n2/2a0477x.png" alt="cf(u,v) = c(u,v)- f(u,v) " class="math-display" ><a   id="x1-7001r4"></a></font></center></td><td class="equation-label">        <font face="Verdana" size="2">(4)</font></td></tr></table> <!--l. 185-->    <p > <font face="Verdana" size="2"> <!--l. 187--></font>    <p >   <font face="Verdana" size="2">Basically, the algorithm stores two values: the flow excess <img  src="/img/revistas/cleiej/v16n2/2a0478x.png" alt="e(v)  "  class="math" > and the height <img  src="/img/revistas/cleiej/v16n2/2a0479x.png" alt="h(v)  "  class="math" > of each node. The value of <img  src="/img/revistas/cleiej/v16n2/2a0480x.png" alt="e(v)  "  class="math" > indicates the difference between incoming flow and outgoing flow for a node <img  src="/img/revistas/cleiej/v16n2/2a0481x.png" alt="v  "  class="math" >. The height <img  src="/img/revistas/cleiej/v16n2/2a0482x.png" alt="h(v)  "  class="math" > is an estimate value of the distance from <img  src="/img/revistas/cleiej/v16n2/2a0483x.png" alt="v  "  class="math" > to <img  src="/img/revistas/cleiej/v16n2/2a0484x.png" alt="t  "  class="math" >. At first, all nodes are <img  src="/img/revistas/cleiej/v16n2/2a0485x.png" alt="h(v) = 0  "  class="math" >, except the source node <img  src="/img/revistas/cleiej/v16n2/2a0486x.png" alt="s  "  class="math" > whose height is <img  src="/img/revistas/cleiej/v16n2/2a0487x.png" alt="h(v) = n  "  class="math" >, where <img  src="/img/revistas/cleiej/v16n2/2a0488x.png" alt="n  "  class="math" > is the number of nodes in the graph. There are two basic operations in the algorithm: Push and Relabel. A Push operation from node <img  src="/img/revistas/cleiej/v16n2/2a0489x.png" alt="u  "  class="math" > to <img  src="/img/revistas/cleiej/v16n2/2a0490x.png" alt="v  "  class="math" > consists in sending a part of the excess <img  src="/img/revistas/cleiej/v16n2/2a0491x.png" alt="e(u)  "  class="math" > from <img  src="/img/revistas/cleiej/v16n2/2a0492x.png" alt="u  "  class="math" > towards <img  src="/img/revistas/cleiej/v16n2/2a0493x.png" alt="v  "  class="math" >. To perform a Push operation, the following conditions must be satisfied: <!--l. 189--></font>    <p >      <ol  class="enumerate1" >      <li    class="enumerate" id="x1-7003x1"><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a0494x.png" alt="e(u) &#x003E; 0  "  class="math" >; it must exists a flow excess in <img  src="/img/revistas/cleiej/v16n2/2a0495x.png" alt="u  "  class="math" >. </font>      </li>      <li    class="enumerate" id="x1-7005x2"><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a0496x.png" alt="c(u,v)- f(u,v) &#x003E; 0  "  class="math" >; it must be available capacity to sent flow from <img  src="/img/revistas/cleiej/v16n2/2a0497x.png" alt="u  "  class="math" > to <img  src="/img/revistas/cleiej/v16n2/2a0498x.png" alt="v  "  class="math" >. </font>      </li>      <li    class="enumerate" id="x1-7007x3"><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a0499x.png" alt="h(u) &#x003E; h(v)  "  class="math" >; the flow can only be sent to a lower height destination node.</font></li>    </ol> <!--l. 195-->    <p >   <font face="Verdana" size="2">Then, it is possible to derive that the flow sent is equal to <img  src="/img/revistas/cleiej/v16n2/2a04100x.png" alt="min (e(u),c(u,v)- f(u,v))  "  class="math" >. <!--l. 197--></font>    <p >   <font face="Verdana" size="2">In the Relabel operation, the <img  src="/img/revistas/cleiej/v16n2/2a04101x.png" alt="h(u)  "  class="math" > is increased in 1 until it becomes greater than the height of all nodes to which the flow can be sent. The conditions for this operation are: <!--l. 199--></font>    ]]></body>
<body><![CDATA[<p >      <ol  class="enumerate1" >      <li    class="enumerate" id="x1-7009x1"><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a04102x.png" alt="e(u) &#x003E; 0  "  class="math" >; a flow excess in <img  src="/img/revistas/cleiej/v16n2/2a04103x.png" alt="u  "  class="math" > exist.      </font>      </li>      <li    class="enumerate" id="x1-7011x2"><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a04104x.png" alt="h(u) &#x2264; h(v)  "  class="math" > for each <img  src="/img/revistas/cleiej/v16n2/2a04105x.png" alt="v  "  class="math" > such that <img  src="/img/revistas/cleiej/v16n2/2a04106x.png" alt="c(u,v)- f(u,v) &#x003E; 0  "  class="math" >; only the nodes with available capacity to      send flow are considered.</font></li>    </ol> <!--l. 204-->    <p >   <font face="Verdana" size="2">Then, the increasing of the height <img  src="/img/revistas/cleiej/v16n2/2a04107x.png" alt="u  "  class="math" > is calculated as <img  src="/img/revistas/cleiej/v16n2/2a04108x.png" alt="h(u) = 1 + min(h(v) : (u,v) &#x2208; Ef  "  class="math" >. <!--l. 206--></font>    <p >   <font face="Verdana" size="2">The algorithm starts with a procedure called <img  src="/img/revistas/cleiej/v16n2/2a04109x.png" alt="P reflow(G,s)  "  class="math" >. In this procedure, the source <img  src="/img/revistas/cleiej/v16n2/2a04110x.png" alt="s  "  class="math" > sent its excess (initially, <img  src="/img/revistas/cleiej/v16n2/2a04111x.png" alt="&#x221E; "  class="math" >) towards all nodes with available capacity. A structure for representing the algorithm of Push-Relabel is shown below: </font>     <div class="algorithmic"> <font face="Verdana" size="2"> <a   id="x1-7012r1"></a>  <span class="ALCitem"><span  class="cmr-8">1:</span></span><span style="width:5.0pt;">&nbsp;</span> <img  src="/img/revistas/cleiej/v16n2/2a04112x.png" alt="P reflow (G,s)  "  class="math" > <a   id="x1-7013r2"></a>  <br /><span class="ALCitem"><span  class="cmr-8">2:</span></span><span style="width:5.0pt;">&nbsp;</span> <span  class="cmbx-10">while</span>&#x00A0;<img  src="/img/revistas/cleiej/v16n2/2a04113x.png" alt="push  "  class="math" > <span  class="cmbx-10">or</span> <img  src="/img/revistas/cleiej/v16n2/2a04114x.png" alt="relabel  "  class="math" >&#x00A0;<span  class="cmbx-10">do</span><span class="while-body"> <a   id="x1-7014r3"></a>  <br /><span class="ALCitem"><span  class="cmr-8">3:</span></span><span style="width:15.00002pt;">&nbsp;</span>   <img  src="/img/revistas/cleiej/v16n2/2a04115x.png" alt="P ush();  "  class="math" > <a   id="x1-7015r4"></a>  <br /><span class="ALCitem"><span  class="cmr-8">4:</span></span><span style="width:15.00002pt;">&nbsp;</span>   <img  src="/img/revistas/cleiej/v16n2/2a04116x.png" alt="Relabel();  "  class="math" >    </span><a   id="x1-7016r5"></a>  <br /><span class="ALCitem"><span  class="cmr-8">5:</span></span><span style="width:5.0pt;">&nbsp;</span> <span  class="cmbx-10">end</span>&#x00A0;<span  class="cmbx-10">while</span> </font>     </div> <!--l. 219-->    <p >   <font face="Verdana" size="2">The Push-Relabel algorithm is usually implemented taking a considerable amount of time on a conventional PC. Therefore, in this research we decided to implement it on a parallel environment in order to speed up the computation time. We chose CUDA which is executed on the GPU. A series of changes were required to make the original algorithm parallel for the GPU. Next, we present the modified algorithm implementation. <!--l. 221--></font>    <p >        <p><font face="Verdana" size="2"><span class="titlemark">4.3.1   </span> <a   id="x1-80004.3.1"></a>Push-Relabel on the GPU</font></p> <!--l. 223-->    <p ><font face="Verdana" size="2">An algorithm developed to be executed entirely on the GPU must be designed correctly to exploit the full potential of it. A first approach applied to parallelize the Push-Relabel algorithm was presented by Anderson and Setubal <span class="cite">(<a  href="#XANDER92">30</a>)</span>. In the same year, Alizadeh and Golberg <span class="cite">(<a  href="#XALIZA92">31</a>)</span> presented an implementation of a parallel minimal cut using a massively parallel connection machine CM-2. In 2005, Bader and Sachdeva <span class="cite">(<a  href="#XBADE05">32</a>)</span> developed an optimization based on cache-aware to the parallelization of the algorithm. <!--l. 225--></font>    <p >   <font face="Verdana" size="2">Noticeable parallel GPU versions of min-cut algorithms were presented by Paragios <span class="cite">(<a  href="#XDIXIT05">33</a>)</span>, Varshney and Davis <span class="cite">(<a  href="#XHUSSEIN07">34</a>)</span>. In 2008, Delong and Boykov <span class="cite">(<a  href="#XDELONG08">35</a>)</span> developed a modification in the Push-Relabel algorithm based on a method called Push-Relabel Region which consists in applying the algorithm just in certain regions in the graph. A remarkable implementation of the GrabCut algorithm to 2D images was presented by Vinet and Narayanan <span class="cite">(<a  href="#XCUDACUTS08">36</a>)</span> using CUDA to exploit the GPU potentiality. <!--l. 227--></font>    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">In this work, the <img  src="/img/revistas/cleiej/v16n2/2a04117x.png" alt="Preflow(G,s)  "  class="math" >, <img  src="/img/revistas/cleiej/v16n2/2a04118x.png" alt="P ush()  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a04119x.png" alt="Relabel()  "  class="math" > were modified for a parallel environment. Also, a queue of active threads was created in order to have direct access to the thread on each iteration. The Push operation is applied locally on each node, where each of these nodes sends a flow to its neighbors. The purpose of this operation is to reduce the excess flow at each node. In addition, a node can receive a flow from its neighbors. When this is done in parallel, this can cause errors if the flow and excess are updated (read/write) simultaneously. The CUDA architecture allows to avoid these possible errors using atomic functions <span class="cite">(<a  href="#Xvideo4">37</a>)</span>. Atomic functions accomplish read-write-update operations on local or global GPU memory. These operations guarantee full execution without interference of other process running at the same time. <!--l. 229--></font>    <p >   <font face="Verdana" size="2">In the original version of the Push-Relabel algorithm <span class="cite">(<a  href="#XGOLD88">11</a>)</span>, in the Relabel stage if a node has the possibility to send flow to its destiny, then it must add its height <img  src="/img/revistas/cleiej/v16n2/2a04120x.png" alt="h  "  class="math" > until it exceeds the height of the source by 1 and it must return the flow excess of the node. Given that weight of the source node <img  src="/img/revistas/cleiej/v16n2/2a04121x.png" alt="s  "  class="math" > is equal to <img  src="/img/revistas/cleiej/v16n2/2a04122x.png" alt="N  "  class="math" > (number of nodes), the algorithm will perform four Relabel operations. In our approach, the volumetric images have a very large number of voxels i.e. the <img  src="/img/revistas/cleiej/v16n2/2a04123x.png" alt="N  "  class="math" > value. For instance, for a volume of size <img  src="/img/revistas/cleiej/v16n2/2a04124x.png" alt="256 &#x00D7; 256 &#x00D7; 256  "  class="math" > voxels, the value of <img  src="/img/revistas/cleiej/v16n2/2a04125x.png" alt="N  "  class="math" > would be <img  src="/img/revistas/cleiej/v16n2/2a04126x.png" alt="N  = 16.777.216  "  class="math" >. <!--l. 231--></font>    <p >   <font face="Verdana" size="2">In our approach, the Relabel operation is done globally using the distance to the destination node. This operation is done based on the nodes with available capacity to the destination <img  src="/img/revistas/cleiej/v16n2/2a04127x.png" alt="t  "  class="math" >. These nodes have a height <img  src="/img/revistas/cleiej/v16n2/2a04128x.png" alt="h  "  class="math" > equal to the height of the destination <img  src="/img/revistas/cleiej/v16n2/2a04129x.png" alt="ht  "  class="math" > plus 1, <img  src="/img/revistas/cleiej/v16n2/2a04130x.png" alt="h = ht + 1  "  class="math" >. At first, the value <img  src="/img/revistas/cleiej/v16n2/2a04131x.png" alt="h  "  class="math" > of all nodes is equal to 1. On each iteration, nodes with available capacity to other nodes (previously marked) have a value of <img  src="/img/revistas/cleiej/v16n2/2a04132x.png" alt="h  "  class="math" > equal to the known height plus 1. Also, in subsequent iterations some nodes could be isolated from <img  src="/img/revistas/cleiej/v16n2/2a04133x.png" alt="t  "  class="math" > and only be connected to the source. This causes that the Relabel operation will not label these nodes. <!--l. 233--></font>    <p >   <font face="Verdana" size="2">Once the Relabel is performed on nodes which have excess and are isolated, they will never be able to send their excess and the algorithm will never stop. In order to solve this, the same idea must be applied but instead of using the node <img  src="/img/revistas/cleiej/v16n2/2a04134x.png" alt="t  "  class="math" >, it will use the source node <img  src="/img/revistas/cleiej/v16n2/2a04135x.png" alt="s  "  class="math" >. Thus, if a node has available capacity towards <img  src="/img/revistas/cleiej/v16n2/2a04136x.png" alt="s  "  class="math" >, then its height <img  src="/img/revistas/cleiej/v16n2/2a04137x.png" alt="h  "  class="math" > is calculated as <img  src="/img/revistas/cleiej/v16n2/2a04138x.png" alt="h = N + 1  "  class="math" >. In Figure <a  href="#x1-8001r4">4<!--tex4ht:ref: fig:newrelabel --></a> there is an example of this operation. Figure <a  href="#x1-8001r4">4<!--tex4ht:ref: fig:newrelabel --></a>(a) the heights of source and destination node are initialized. The height of the source node will be <img  src="/img/revistas/cleiej/v16n2/2a04139x.png" alt="hs = N  "  class="math" >, where <img  src="/img/revistas/cleiej/v16n2/2a04140x.png" alt="N  = 12  "  class="math" >, and the height of the destination node is <img  src="/img/revistas/cleiej/v16n2/2a04141x.png" alt="ht = 0  "  class="math" >. Next, the algorithm updates the height values of the nodes according to their distance from the node <img  src="/img/revistas/cleiej/v16n2/2a04142x.png" alt="t  "  class="math" >, in Figure <a  href="#x1-8001r4">4<!--tex4ht:ref: fig:newrelabel --></a>(b) the algorithm calculates the height of 8 nodes (with maximum height of 3). Note the 2 gray nodes which are isolated from the destination. Finally, in Figure <a  href="#x1-8001r4">4<!--tex4ht:ref: fig:newrelabel --></a>(c), heights of the isolated nodes are calculated regarding to the distance to node <img  src="/img/revistas/cleiej/v16n2/2a04143x.png" alt="s  "  class="math" >. <!--l. 235--></font>    <p >   <hr class="figure">    <div class="figure"  >  <font face="Verdana" size="2">  <a   id="x1-8001r4"></a>   </font>   <!--l. 236-->    <p ><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a04f4.jpg" alt="PIC"   > <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;4: </span><span   class="content">Example of the parallel Relabel operation.</span></font></div><!--tex4ht:label?: x1-8001r4 -->  <!--l. 239-->    <p >   </div><hr class="endfigure"> <!--l. 241-->    <p >   <font face="Verdana" size="2">One problem with this approach is that during the algorithm iterations, there are threads that do not execute any instructions. These threads are called inactive threads. To solve this, on each iteration it is necessary to create a container queue of nodes indexes that will run on the next iteration. It will only create the necessary threads to exploit the full capacity of the graphics hardware. Below an overview of the Push-Relabel algorithm on the GPU is shown: </font>     ]]></body>
<body><![CDATA[<div class="algorithmic"> <font face="Verdana" size="2"> <a   id="x1-8002r6"></a>  <span class="ALCitem"><span  class="cmr-8">1:</span></span><span style="width:5.0pt;">&nbsp;</span> <img  src="/img/revistas/cleiej/v16n2/2a04144x.png" alt="RelabelxGlobal()  "  class="math" > <a   id="x1-8003r7"></a>  <br /><span class="ALCitem"><span  class="cmr-8">2:</span></span><span style="width:5.0pt;">&nbsp;</span> <img  src="/img/revistas/cleiej/v16n2/2a04145x.png" alt="P reflow (G,s)  "  class="math" > <a   id="x1-8004r8"></a>  <br /><span class="ALCitem"><span  class="cmr-8">3:</span></span><span style="width:5.0pt;">&nbsp;</span> <span  class="cmbx-10">while</span>&#x00A0;<img  src="/img/revistas/cleiej/v16n2/2a04146x.png" alt="Excess  "  class="math" >&#x00A0;<span  class="cmbx-10">do</span><span class="while-body"> <a   id="x1-8005r9"></a>  <br /><span class="ALCitem"><span  class="cmr-8">4:</span></span><span style="width:15.00002pt;">&nbsp;</span>   <img  src="/img/revistas/cleiej/v16n2/2a04147x.png" alt="P ush()  "  class="math" > <a   id="x1-8006r10"></a>  <br /><span class="ALCitem"><span  class="cmr-8">5:</span></span><span style="width:15.00002pt;">&nbsp;</span>   <img  src="/img/revistas/cleiej/v16n2/2a04148x.png" alt="RelabelxGlobal()  "  class="math" > <a   id="x1-8007r11"></a>  <br /><span class="ALCitem"><span  class="cmr-8">6:</span></span><span style="width:15.00002pt;">&nbsp;</span>   <img  src="/img/revistas/cleiej/v16n2/2a04149x.png" alt="CreatexQueue ()  "  class="math" >    </span><a   id="x1-8008r12"></a>  <br /><span class="ALCitem"><span  class="cmr-8">7:</span></span><span style="width:5.0pt;">&nbsp;</span> <span  class="cmbx-10">end</span>&#x00A0;<span  class="cmbx-10">while</span> </font>    </div> <!--l. 257-->    <p >   <font face="Verdana" size="2">Line <a  href="#x1-8002r1">1<!--tex4ht:ref: line:1 --></a> shows an instruction that performs the <img  src="/img/revistas/cleiej/v16n2/2a04150x.png" alt="Relabelxglobal()  "  class="math" > operation as shown in Figure <a  href="#x1-8001r4">4<!--tex4ht:ref: fig:newrelabel --></a>. The following statement performs the operation of <img  src="/img/revistas/cleiej/v16n2/2a04151x.png" alt="Preflow(G,s)  "  class="math" >, as explained at the beginning of this section. Even though there is an excess in any node in the graph, the algorithm proceeds to achieve the <img  src="/img/revistas/cleiej/v16n2/2a04152x.png" alt="Push()  "  class="math" > operation followed by the <img  src="/img/revistas/cleiej/v16n2/2a04153x.png" alt="RelabelxGlobal()  "  class="math" > operation. The line <a  href="#x1-8007r6">6<!--tex4ht:ref: line:6 --></a>, a queue of active nodes is created for the next iteration. <!--l. 259--></font>    <p >   <font face="Verdana" size="2">The function <img  src="/img/revistas/cleiej/v16n2/2a04154x.png" alt="CreatexQueue ()  "  class="math" > builds a linear array where threads indices are stored, which represents the active nodes in the graph to be used in the next iteration. Note that, the queue is completely stored on graphics hardware memory. <!--l. 261--></font>    <p >   <font face="Verdana" size="2">The following section shows a series of experimental results to test our approach.  </font>        <p><font face="Verdana" size="2"><span class="titlemark">5   </span> <a   id="x1-90005"></a>Tests and Results</font></p> <!--l. 266-->    <p ><font face="Verdana" size="2">In order to test the effectiveness of our approach, we performed several tests of the segmentation to a set of volumes. The implementation was achieved under the Nvidia CUDA C programming language. The volume rendering was implemented using the library OpenGL<sup class="textsuperscript"><span  class="cmr-9">®;</span></sup>. Graphics hardware requires capability version 1.1 of CUDA. <!--l. 268--></font>    <p >   <font face="Verdana" size="2">We use an Intel i5 (3.20 GHz) with 4GB of RAM memory and a graphics card Nvidia GTX 470 with 448 CUDA cores (named <img  src="/img/revistas/cleiej/v16n2/2a04155x.png" alt="N V1  "  class="math" >); and another computer with the same characteristic but with a graphics card Nvidia GTX 240 with 96 CUDA cores, named <img  src="/img/revistas/cleiej/v16n2/2a04156x.png" alt="N V2  "  class="math" >. The operating system was Microsoft Windows 7 64 bits. The sampling precision of volumes is 8 bits. Table <a  href="#x1-9002r1">1<!--tex4ht:ref: t:models --></a> shows the characteristics of the volumes, and Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a> shows a simple render of the volumes.  <!--l. 270--></font>    <p >   <font face="Verdana" size="2">   <a   id="x1-9001r5"></a></font><hr class="float">    <div class="float"  >   <font face="Verdana" size="2">   <img  src="/img/revistas/cleiej/v16n2/2a04f5.jpg" alt="PIC"   > <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;5: </span><span   class="content">Volume dataset used for our tests. All volumes were taken from <a href="http://www.volvis.org">http://www.volvis.org</a>.</span></font></div><!--tex4ht:label?: x1-9001r5 -->     </div><hr class="endfloat" /> <!--l. 276-->    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">The first volume, Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a>(a), represents a simulation of the spatial probability distribution of the electrons in a high potencial protein molecule. The Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a>(b) is a CT scan of two cylinders of an engine block. Next, the third, Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a>(c), is a simple CT scan of a bonsai tree. Finally, the Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a>(d) is a MRI scan of a human head. </font>        <div class="table">  <!--l. 278-->    <p >   <hr class="float">    <div class="float"  >       <div class="caption"  ><font face="Verdana" size="2"><span class="id">Table&#x00A0;1: </span><span   class="content">Characteristics of the volumes used in tests.</span></font></div><!--tex4ht:label?: x1-9002r1 -->  <font face="Verdana" size="2"> <a   id="x1-9002r1"><img  src="/img/revistas/cleiej/v16n2/2a04t1.png" alt="PIC"   ></a> </font>     </div><hr class="endfloat" />    </div> <!--l. 286-->    <p >   <font face="Verdana" size="2">Next, we present our experimental results for execution time, amount of space consumed, number of CUDA threads generated, comparison of visual results and comparison between the GPU and a CPU version of our approach. </font>        <p><font face="Verdana" size="2"><span class="titlemark">5.1   </span> <a   id="x1-100005.1"></a>Performance</font></p> <!--l. 290-->    <p ><font face="Verdana" size="2">In order to test the volume segmentation algorithm presented in this paper, we decided to implement two schemes: the sequential version based on CPU, and the parallel version based on GPU. For each volume, 3 different transfer functions were considered in the segmentation process. The first represents the identity function (<img  src="/img/revistas/cleiej/v16n2/2a04157x.png" alt="TF 1  "  class="math" >), the second represents a function that helps to separate the voxels in foreground-background based on their intensities (<img  src="/img/revistas/cleiej/v16n2/2a04158x.png" alt="TF 2  "  class="math" >) and the third function was generated to highlight the interest object within the volume (<img  src="/img/revistas/cleiej/v16n2/2a04159x.png" alt="TF 3  "  class="math" >). <!--l. 292--></font>    <p >   <font face="Verdana" size="2">When measuring the execution times it is possible to distinguish two main phases of the algorithm: First, the creation of the graph which occupies (in average) the <img  src="/img/revistas/cleiej/v16n2/2a04160x.png" alt="5%  "  class="math" > of the total time of the algorithm execution. Secondly, the maximum flow algorithm completeness (which occupies the <img  src="/img/revistas/cleiej/v16n2/2a04161x.png" alt="95%  "  class="math" > remaining). <!--l. 294--></font>    <p >   <font face="Verdana" size="2">An important factor that affects directly the execution time (and the memory occupied) is the number of voxels inside the selection of the user, i.e. inside the sub-volume (purple cube in Figure <a  href="#x1-4002r3">3<!--tex4ht:ref: fig:schemegeneral --></a>). For instance, using the same sub-volume of selection and the volume Vol<img  src="/img/revistas/cleiej/v16n2/2a04162x.png" alt="1  "  class="math" >, the sequential version runs on <img  src="/img/revistas/cleiej/v16n2/2a04163x.png" alt="70s  "  class="math" > and the parallel version runs on <img  src="/img/revistas/cleiej/v16n2/2a04164x.png" alt="67s  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a04165x.png" alt="108s  "  class="math" > over the cards <img  src="/img/revistas/cleiej/v16n2/2a04166x.png" alt="N V 1  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a04167x.png" alt="N V 2  "  class="math" > respectively. The reported times indicate that using the CPU is faster than using the GPU of the graphics card <img  src="/img/revistas/cleiej/v16n2/2a04168x.png" alt="NV 2  "  class="math" > due to the volume dimension. Since Vol<img  src="/img/revistas/cleiej/v16n2/2a04169x.png" alt="1  "  class="math" > is small, the parallel version on the GPU considers the data transfer time from RAM to graphics memory. Table <a  href="#x1-10001r2">2<!--tex4ht:ref: t:times --></a> shows a summary of the execution times obtained in our tests. <!--l. 296--></font>    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">Thus, using a volume of greater dimension, such as the volume shown in the Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a>(b), the execution times vary. It is important to note that times shown in Table <a  href="#x1-10001r2">2<!--tex4ht:ref: t:times --></a> represent a time average using the three transfer functions. The composition of the transfer function influences directly over the running time of our approach, due to the number of iterations required to complete the maximum flow algorithm. </font>        <div class="table">  <!--l. 298-->    <p >   <hr class="float">    <div class="float"  >       <div class="caption"  ><font face="Verdana" size="2"><span class="id">Table&#x00A0;2: </span><span   class="content">Execution times obtained by each test volume.</span></font></div><!--tex4ht:label?: x1-10001r2 -->  <font face="Verdana" size="2"> <a   id="x1-10001r2"><img  src="/img/revistas/cleiej/v16n2/2a04t2.png" alt="PIC"   ></a> </font>     </div><hr class="endfloat" />    </div> <!--l. 306-->    <p >   <font face="Verdana" size="2">According to the dimension of the sub-volume of selection, times can vary due to the influence of the number of threads created on the iterations of the algorithm. <!--l. 310--></font>    <p >   <font face="Verdana" size="2">Furthermore, in order to measure the efficiency of the algorithm is necessary to consider the memory space used. More importantly, the graph construction is directly related to the existing number of voxels. For each voxel, different types of information such as connectivity, values of probabilities, and others should be stored. Then, a first approach to build the graph is to use all voxels which belong to the volume. This is not completely efficiently because the T-Links from the source are only connected to the voxels inside the sub-volume of selection. Moreover, voxels connected through T-Links whose value is the maximum possible are outside the sub-volume of selection. According to the GrabCut theory, if an excess arrive one of these nodes, they resend all the excess to the destiny. Thus, if a node <img  src="/img/revistas/cleiej/v16n2/2a04170x.png" alt="A  "  class="math" > inside the sub-volume of selection is connected to an outside node <img  src="/img/revistas/cleiej/v16n2/2a04171x.png" alt="B  "  class="math" > across a N-Link with value <img  src="/img/revistas/cleiej/v16n2/2a04172x.png" alt="k  "  class="math" >, the node <img  src="/img/revistas/cleiej/v16n2/2a04173x.png" alt="A  "  class="math" > has to send an excess <img  src="/img/revistas/cleiej/v16n2/2a04174x.png" alt="&#x2264; k  "  class="math" > towards <img  src="/img/revistas/cleiej/v16n2/2a04175x.png" alt="B  "  class="math" >, and this would send to the destination. It can be concluded that if a node is connected to another which is outside the sub-volume of selection, it causes the same effect that if a node is connected directly to the destination using T-Link with value equal to <img  src="/img/revistas/cleiej/v16n2/2a04176x.png" alt="k  "  class="math" >. For this reason, in this paper we only load voxels that are inside the selection volume in order to store in memory the relevant data to execute the algorithm. <!--l. 312--></font>    <p >   <font face="Verdana" size="2">Using the approach mentioned before, it can be noticed that connections from the source to the destination are performed using the nodes belonging to the sub-volume of selection. This gives us an efficient way to create the graph which will be processed by the minimal cut algorithm. This is because the area occupied by the sub-volume of selection will always be less (for a correct segmentation) than the total area occupied by the complete volume. This factor can be exploited to create only the necessary data structures and hence reduce the amount of memory used in the algorithm. <!--l. 314--></font>    <p >   <font face="Verdana" size="2">Table <a  href="#x1-10002r3">3<!--tex4ht:ref: t:memory --></a> shows a summary of the memory occupied by our algorithm selecting a particular case to the segmentation to each volume, with a sub-volume of selection which contains an object of interest. </font>        <div class="table">  <!--l. 316-->    ]]></body>
<body><![CDATA[<p >   <hr class="float">    <div class="float"  >      <div class="caption"  ><font face="Verdana" size="2"><span class="id">Table&#x00A0;3: </span><span   class="content">Memory occupied by each test volume.</span></font></div><!--tex4ht:label?: x1-10002r3 -->  <font face="Verdana" size="2"> <a   id="x1-10002r3"><img  src="/img/revistas/cleiej/v16n2/2a04t3.png" alt="PIC"   ></a> </font>     </div><hr class="endfloat" />    </div> <!--l. 324-->    <p >   <font face="Verdana" size="2">Note that, the sub-volume of selection can not exceed the total amount of memory available in the graphics card. In the case of the graphics card <img  src="/img/revistas/cleiej/v16n2/2a04177x.png" alt="N V 1  "  class="math" >, it supports a dimension up to <img  src="/img/revistas/cleiej/v16n2/2a04178x.png" alt="256&#x00D7; 256&#x00D7; 256  "  class="math" > voxels of the sub-volume. </font>        <p><font face="Verdana" size="2"><span class="titlemark">5.2   </span> <a   id="x1-110005.2"></a>Number of GPU Threads</font></p> <!--l. 340-->    <p ><font face="Verdana" size="2">When the algorithm starts, it runs a number of threads equal to the number of nodes in the graph. Following this statement in the subsequent iterations, the number of idle threads (without processing load) increases considerable making it an inefficient scheme. A thread is considered idle if it has no push or relabel operation in one iteration, or if it is identified in the background or foreground. <!--l. 342--></font>    <p >   <font face="Verdana" size="2">Our proposed approach, suggests the creation of a queue of active threads to store the next active thread on each iteration. The existence of an idle thread generates a load on the GPU for its creation, management and context execution which is unnecessary. Figure <a  href="#x1-11001r6">6<!--tex4ht:ref: fig:hilos --></a> shows an example of the number of threads generated in each iteration of the algorithm when it is applied to Vol<img  src="/img/revistas/cleiej/v16n2/2a04179x.png" alt="3  "  class="math" > and the three transfer functions (<img  src="/img/revistas/cleiej/v16n2/2a04180x.png" alt="TF 1  "  class="math" >, <img  src="/img/revistas/cleiej/v16n2/2a04181x.png" alt="TF 2  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a04182x.png" alt="TF3  "  class="math" >) for an arbitrary selection of the volume. In the graph were taken only 56 of 359 iterations, because from the 56th iteration, the number of threads is considerably reduced until one working thread is reached. <!--l. 344--></font>    <p >   <hr class="figure">    <div class="figure"  >  <font face="Verdana" size="2">  <a   id="x1-11001r6"></a>   </font>   <!--l. 345-->    <p ><font face="Verdana" size="2"><img  src="/img/revistas/cleiej/v16n2/2a04f6.jpg" alt="PIC"   > <br /> </font>     ]]></body>
<body><![CDATA[<div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;6: </span><span   class="content">Graph which represents an example of the decay in the number of threads on each iteration.</span></font></div><!--tex4ht:label?: x1-11001r6 -->  <!--l. 349-->    <p >   </div><hr class="endfigure"> <!--l. 351-->    <p >   <font face="Verdana" size="2">The graph shows the iterations from the 5th and forward. The first iteration presents <img  src="/img/revistas/cleiej/v16n2/2a04183x.png" alt="~ "  class="math" > 1 million of threads. For the 5th, the number of threads reach the 400.000, 60.000 and 254.000 for the <img  src="/img/revistas/cleiej/v16n2/2a04184x.png" alt="TF1  "  class="math" >, <img  src="/img/revistas/cleiej/v16n2/2a04185x.png" alt="TF 2  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a04186x.png" alt="T F3  "  class="math" > respectively.A few iterations later, the number of threads decay dramatically to a few tens of threads, and the segmentation is performed. </font>        <p><font face="Verdana" size="2"><span class="titlemark">5.3   </span> <a   id="x1-120005.3"></a>Visual Results</font></p> <!--l. 355-->    <p ><font face="Verdana" size="2">As mentioned before, the tests consisted in applying three different transfer functions. For instance, for the Vol<img  src="/img/revistas/cleiej/v16n2/2a04187x.png" alt="1  "  class="math" > the test consisted in separating the ring, see Figure <a  href="#x1-9001r5">5<!--tex4ht:ref: fig:modelos --></a>(a). Using the three transfer functions, and applying the same sub-volume of selection, an correct separation foreground/background was achieved. <!--l. 357--></font>    <p >   <font face="Verdana" size="2">The segmentation process to the Vol<img  src="/img/revistas/cleiej/v16n2/2a04188x.png" alt="2  "  class="math" > finds to separate two cylindrical pieces and two rings which exist within the engine volume. The results shows a good segmentation using the three transfer function. Particularly, with the <img  src="/img/revistas/cleiej/v16n2/2a04189x.png" alt="T F3  "  class="math" > the time obtained is less than using the other two due to its shape. <!--l. 359--></font>    <p >   <font face="Verdana" size="2">In the segmentation process of Vol<img  src="/img/revistas/cleiej/v16n2/2a04190x.png" alt="3  "  class="math" >, adequate results are achieved by applying the three transfers functions to separate the stem from the rest of the tree. However, with the 3 functions, the sub-volume obtained by the segmentation has voxels which belong to the land where the tree is planted. This is owing to the similarity of intensity and color of these with the stem of the tree. In Figure <a  href="#x1-12001r7">7<!--tex4ht:ref: fig:bonsai --></a> it presents a selection of the user on the volume in the Vol<img  src="/img/revistas/cleiej/v16n2/2a04191x.png" alt="3  "  class="math" > applying the transfer function <img  src="/img/revistas/cleiej/v16n2/2a04192x.png" alt="TF2  "  class="math" >. <!--l. 361--></font>    <p >   <hr class="figure">    <div class="figure"  >  <!--l. 362-->    <p ><font face="Verdana" size="2"><a   id="x1-12001r7"> <img  src="/img/revistas/cleiej/v16n2/2a04f7.jpg" alt="PIC"   ></a> <br /> </font>     ]]></body>
<body><![CDATA[<div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;7: </span><span   class="content">An example of the selection of the user to select the steam of the bonsai tree.</span></font></div><!--tex4ht:label?: x1-12001r7 -->  <!--l. 365-->    <p >   </div><hr class="endfigure"> <!--l. 367-->    <p >   <font face="Verdana" size="2">It can be noticed that the two first windows of the Figure <a  href="#x1-12001r7">7<!--tex4ht:ref: fig:bonsai --></a> represent the selection made by the user in the direction of a coronal section plane (left) and transverse section plane (right). The final visual result of the segmentation is shown in Figure <a  href="#x1-12002r8">8<!--tex4ht:ref: fig:bonsai2 --></a> where the final result is performed. <!--l. 369--></font>    <p >   <hr class="figure">    <div class="figure"  >   <!--l. 371-->    <p > <font face="Verdana" size="2"> <a   id="x1-12002r8"> <img  src="/img/revistas/cleiej/v16n2/2a04f8.jpg" alt="PIC"   ></a> <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;8: </span><span   class="content">An example of the result of the segmentation of the Vol<img  src="/img/revistas/cleiej/v16n2/2a04193x.png" alt="3  "  class="math" >.</span></font></div><!--tex4ht:label?: x1-12002r8 -->  <!--l. 375-->    <p >   </div><hr class="endfigure"> <!--l. 377-->    <p >   <font face="Verdana" size="2">In volume Vol<img  src="/img/revistas/cleiej/v16n2/2a04194x.png" alt="4  "  class="math" > the goal is to segment the brain of the complete human head. Also, using the <img  src="/img/revistas/cleiej/v16n2/2a04195x.png" alt="TF 1  "  class="math" > is generates more noise than the other 2 functions. This factor is caused by the small variation on the intensity between voxels of foreground and background. Nevertheless, the solution obtained shows small fragments of the cerebral cortex that should not be present. When using the transfer functions <img  src="/img/revistas/cleiej/v16n2/2a04196x.png" alt="TF 2  "  class="math" > and <img  src="/img/revistas/cleiej/v16n2/2a04197x.png" alt="TF3  "  class="math" >, better results are obtained in spite of generating an unrealistic sub-volume according to the colors of the correct brain anatomy. </font>        <p><font face="Verdana" size="2"><span class="titlemark">5.4   </span> <a   id="x1-130005.4"></a>Comparison GPU and CPU</font></p> <!--l. 381-->    ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2">Using both version of the algorithm (sequential in the CPU and parallel on the GPU) it is possible to obtain different final visual results. For instance, the number of nodes presented in the GPU segmentation can vary with the number of nodes presented in the final graph using the CPU version. In the GPU, the order of updating the node excess modifies the graph in a different way that in the CPU. This is because a graph could have more than one minimal cut. <!--l. 383--></font>    <p >   <font face="Verdana" size="2">Figure <a  href="#x1-13001r9">9<!--tex4ht:ref: fig:gpucpu --></a> shows a comparison of both results. From a visual point of view, note that both reach a correct segmentation of the object of interest. Executing the algorithm on the GPU several times, it is possible to obtain different results. This is because there is no control over the execution order of threads. A method to prove these results consists in performing a comparison mechanism of the final results in order to manage the voxels segmented (e.g. difference between intensities voxels, heatmaps, and others). <!--l. 385--></font>    <p >   <hr class="figure">    <div class="figure"  >  <!--l. 387-->    <p ><font face="Verdana" size="2"><a   id="x1-13001r9"> <img  src="/img/revistas/cleiej/v16n2/2a04f9.jpg" alt="PIC"   ></a> <br /> </font>     <div class="caption"  ><font face="Verdana" size="2"><span class="id">Figure&#x00A0;9: </span><span   class="content">Comparison GPU vs. CPU final results of the segmentation.</span></font></div><!--tex4ht:label?: x1-13001r9 -->  <!--l. 391-->    <p >   </div><hr class="endfigure">        <p><font face="Verdana" size="2"><span class="titlemark">6   </span> <a   id="x1-140006"></a>Conclusions and Future Work</font></p> <!--l. 396-->    <p ><font face="Verdana" size="2">In this paper we presented a novel approach to the volume segmentation using the GPU. This approach was based on the GrabCut algorithm, originally presented to 2D image segmentation. The implementation of our algorithm was performed in two versions: a CPU-based sequential version and GPU-based parallel version under Nvidia CUDA. Tests performed showed excellent visual results when segmenting a volume in foreground and background. <!--l. 398--></font>    <p >   <font face="Verdana" size="2">The algorithm execution time and the final visual results after the segmentation are closely related to the size of the sub-volume selected by the user, and the transfer function used. If the sub-volume of selection occupies a considerable size according to the total volume dimension (assuming large volumes) then the number of active threads and nodes are also considerable. The transfer function determines the color of each voxel, if there are voxels with same color both inside and outside the selected area, the algorithm may classify certain foreground voxels as background voxels, and viceversa. <!--l. 400--></font>    ]]></body>
<body><![CDATA[<p >   <font face="Verdana" size="2">A limitation of the algorithm lies in the memory occupied by the graph and the data structures. This factor depends entirely on the selected GPU. In our tests, it is possible to segment any volume with the constraint of the sub-volume size. This can not be greater than <img  src="/img/revistas/cleiej/v16n2/2a04198x.png" alt="256&#x00D7; 256&#x00D7; 256  "  class="math" > voxels for our tests. Considering graphics cards with larger memory capacities, it is possible to handle larger volumes. <!--l. 402--></font>    <p >   <font face="Verdana" size="2">In the future we propose to apply and compare (in time and space) other minimum cut algorithms that can be parallelized efficiently on the GPU. At the same time, we will study the possibility to group voxels according to any color criteria to build a graph using &#8221;super-nodes&#8221;. A super-node, groups a number of nodes (<img  src="/img/revistas/cleiej/v16n2/2a04199x.png" alt="&#x003E; 1  "  class="math" > node) to improve the execution time of the maximum flow algorithm on the GPU. <!--l. 404--></font>    <p >        <p><font face="Verdana" size="2"><a   id="x1-150006"></a>Acknowledgements</font></p> <!--l. 406-->    <p ><font face="Verdana" size="2">The authors would like to thank Prof. Walter Hernández for his valuable comments and insights. <!--l. 2--></font>    <p >        <p><font face="Verdana" size="2"><a   id="x1-160006"></a>References</font></p> <!--l. 2-->    <p >         <div class="thebibliography">         <p ><font face="Verdana" size="2"><span class="biblabel">   (1)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XBANKMAN00">I.&#x00A0;N. Bankman,</a> <span  class="cmti-10">Handbook of Medical Image Processing and Analysis</span>, 2nd&#x00A0;ed.  New York: Academic     Press, December 2008. </font>     </p>         ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2"><span class="biblabel">   (2)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XPrassni10">J.-S.  Prassni</a>,  T.&#x00A0;Ropinski,  and  K.&#x00A0;Hinrichs,  &#8220;Uncertainty-aware  guided  volume  segmentation,&#8221;     <span  class="cmti-10">IEEE Transactions on Visualization and Computer Graphics</span>, vol.&#x00A0;16, pp. 1358&#8211;1365, Nov. 2010.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (3)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="Xnvidiaweb">NVIDIA    Corporation</a>.    (2011,    Diciembre)    NVIDIA    homepage.    (Online).    Available:     <a  href="http://www.nvidia.com" class="url" >http://www.nvidia.com</a> </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (4)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XROTHER04">C.&#x00A0;Rother</a>,  V.&#x00A0;Kolmogorov,  and  A.&#x00A0;Blake,  &#8220;GrabCut:  Interactive  Foreground  Extraction  using     Iterated Graph Cuts,&#8221; <span  class="cmti-10">ACM Transactions on Graphics</span>, vol.&#x00A0;23, pp. 309&#8211;314, 2004.     </font>      </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (5)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XCORMEN01">T.&#x00A0;H. Cormen</a>, C.&#x00A0;E. Leiserson, R.&#x00A0;L. Rivest, and C.&#x00A0;Stein, <span  class="cmti-10">Introduction to Algorithms</span>, 2nd&#x00A0;ed.     New York: MIT Press, 2001. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (6)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XCollins_2004">T.&#x00A0;Collins</a>, &#8220;Graph cut matching in computer vision,&#8221; <span  class="cmti-10">Computing</span>, no. February, pp. 1&#8211;10, 2004. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (7)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="Xgreig">D.&#x00A0;Greig</a>,  B.&#x00A0;Porteous,  and  A.&#x00A0;Seheult,  &#8220;Exact  Maximum  A  Posteriori  Estimation  for  Binary     Images,&#8221; <span  class="cmti-10">Royal Journal on Statistical Society</span>, vol.&#x00A0;51, no.&#x00A0;2, pp. 271&#8211;279, 1989.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (8)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="Xenergyfast">Y.&#x00A0;Boykov</a>, O.&#x00A0;Veksler, and R.&#x00A0;Zabih, &#8220;Fast approximate energy minimization via graph cuts,&#8221;     <span  class="cmti-10">IEEE Transactions on Pattern Analysis and Machine Intelligence</span>, vol.&#x00A0;23, no.&#x00A0;11, pp. 1222&#8211;1239, Nov.     2001. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">   (9)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XBOY04">Y.&#x00A0;Boykov</a> and V.&#x00A0;Kolmogorov, &#8220;An Experimental Comparison of Min-Cut/Max-Flow Algorithms     for Energy Minimization in Vision,&#8221; <span  class="cmti-10">IEEE Transactions on Pattern Analysis and Machine Intelligence</span>,     vol.&#x00A0;26, pp. 1124&#8211;1137, 2004. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (10)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XFORD62">L.&#x00A0;R. Ford</a> and D.&#x00A0;R. Fulkerson, &#8220;Flows in networks,&#8221; <span  class="cmti-10">Princeton University</span>, 1962. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (11)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XGOLD88">A.&#x00A0;Goldberg</a> and R.&#x00A0;Tarjan, &#8220;A new approach to the maximum flow problem,&#8221; <span  class="cmti-10">Journal of the ACM</span>,     vol.&#x00A0;35, pp. 921&#8211;940, 1988. </font>     </p>         ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2"><span class="biblabel">  (12)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XBoykov01">Y.&#x00A0;Boykov</a> and M.-P. Jolly, &#8220;Interactive graph cuts for optimal boundary &amp; region segmentation of     objects in N-D images,&#8221; in <span  class="cmti-10">Proc. of the 8th IEEE International Conference on Computer Vision ICCV</span>,     vol.&#x00A0;1, 2001, pp. 105&#8211;112. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (13)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XBOYKOV06">Y.&#x00A0;Boykov</a> and G.&#x00A0;Funka-Lea, &#8220;Graph Cuts and Efficient N-D Image Segmentation,&#8221; <span  class="cmti-10">International</span>     <span  class="cmti-10">Journal of Computer Vision (IJCV)</span>, vol.&#x00A0;70, no.&#x00A0;2, pp. 109&#8211;131, Nov. 2006.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (14)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XPRICE10">B.&#x00A0;L. Price</a>, B.&#x00A0;Morse, and S.&#x00A0;Cohen, &#8220;Geodesic graph cut for interactive image segmentation,&#8221;     in <span  class="cmti-10">Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)</span>, 2010, pp.     3161&#8211;3168. </font>      </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (15)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XCOUPRIE11">C.&#x00A0;Couprie</a>,  L.&#x00A0;Grady,  L.&#x00A0;Najman,  and  H.&#x00A0;Talbot,  &#8220;Power  watershed:  A  unifying  graph-based     optimization framework,&#8221; <span  class="cmti-10">IEEE Transactions on Pattern Analysis and Machine Intelligence</span>, vol.&#x00A0;33,     pp. 1384&#8211;1399, July 2011. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (16)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XMALMBERG11">F.&#x00A0;Malmberg</a>, R.&#x00A0;Strand, and I.&#x00A0;Nyström, &#8220;Generalized hard constraints for graph segmentation,&#8221;     in <span  class="cmti-10">Image Analysis</span>, A.&#x00A0;Heyden and F.&#x00A0;Kahl, Eds.   Springer Berlin / Heidelberg, 2011, vol. 6688, pp.     36&#8211;47. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (17)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XLIM12">T.&#x00A0;Lim</a>, B.&#x00A0;Han, and J.&#x00A0;H. Han, &#8220;Modeling and segmentation of floating foreground and background     in videos,&#8221; <span  class="cmti-10">Pattern Recognition</span>, vol.&#x00A0;45, pp. 1696&#8211;1706, April 2012.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (18)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XHAGADI11">R.&#x00A0;S. Hegadi</a> and B.&#x00A0;A. Goudannavar, &#8220;Interactive segmentation of medical images using grabcut,&#8221;     <span  class="cmti-10">International Journal of Machine Intelligence</span>, vol.&#x00A0;3, pp. 168&#8211;171, 2011.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (19)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XPURANIK10">M.&#x00A0;M. Puranik</a> and S.&#x00A0;Krishnan, &#8220;Volume segmentation in medical image analysis: a survey,&#8221; in     <span  class="cmti-10">Proc. of the International Conference and Workshop on Emerging Trends in Technology</span>.   New York,     NY, USA: ACM, 2010, pp. 439&#8211;442. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (20)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XSANTLE12">K.&#x00A0;Santle&#x00A0;Camilus</a> and V.&#x00A0;K. Govindan, &#8220;A Review on Graph Based Segmentation,&#8221; <span  class="cmti-10">International</span>     <span  class="cmti-10">Journal of Image, Graphics and Signal Processing</span>, vol.&#x00A0;4, no.&#x00A0;5, pp. 1&#8211;13, 2012.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (21)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XZHUGE09">Y.&#x00A0;Zhuge</a>, Y.&#x00A0;Cao, and R.&#x00A0;Miller, &#8220;GPU accelerated fuzzy connected image segmentation by using     CUDA,&#8221; in <span  class="cmti-10">Proc. of the Annual International Conference of the IEEE Engineering in Medicine and</span>     <span  class="cmti-10">Biology Society - EMBC</span>, 2009, pp. 6341&#8211;6344. </font>     </p>         ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2"><span class="biblabel">  (22)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XZHAI10">W.&#x00A0;Zhai</a>, F.&#x00A0;Yang, Y.&#x00A0;Song, Y.&#x00A0;Zhao, and H.&#x00A0;Wang, &#8220;CUDA Based High Performance Adaptive     3D Voxel Growing for Lung CT Segmentation,&#8221; in <span  class="cmti-10">Life System Modeling and Intelligent Computing</span>.     Springer Berlin / Heidelberg, 2010, vol. 6330, pp. 10&#8211;18. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (23)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XSCMID11">J.&#x00A0;Schmid</a>, J.&#x00A0;A. Iglesias&#x00A0;Guitián, E.&#x00A0;Gobbetti, and N.&#x00A0;Magnenat-Thalmann, &#8220;A GPU framework     for parallel segmentation of volumetric images using discrete deformable models,&#8221; <span  class="cmti-10">The Visual Computer</span>,     vol.&#x00A0;27, no.&#x00A0;2, pp. 85&#8211;95, 2011. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (24)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XSCHENKE05">S.&#x00A0;Schenke</a>, B.&#x00A0;C. Wünsche, and J.&#x00A0;Denzler, &#8220;GPU-Based Volume Segmentation,&#8221; in <span  class="cmti-10">Proc. of the</span>     <span  class="cmti-10">Image and Vision Computing New Zealand - IVCNZ</span>, 2005, pp. 171&#8211;176.     </font>      </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (25)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XCHUA01">Y.-Y.  Chuang</a>,  B.&#x00A0;Curless,  D.&#x00A0;H.  Salesin,  and  R.&#x00A0;Szeliski,  &#8220;A  Bayesian  Approach  to  Digital     Matting,&#8221; in <span  class="cmti-10">Proc. of IEEE Computer Vision and Pattern Recognition (CVPR 2001)</span>, vol.&#x00A0;2.   IEEE     Computer Society, 2001, pp. 264&#8211;271. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (26)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XORCH91">M.&#x00A0;Orchard</a>  and  C.&#x00A0;Bouman,  &#8220;Color  quantization  of  images,&#8221;  <span  class="cmti-10">IEEE  Transactions  on  Signal</span>     <span  class="cmti-10">Processing</span>, vol.&#x00A0;39, pp. 2677&#8211;2690, 1991.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (27)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XMortensen95">E.&#x00A0;N. Mortensen</a> and W.&#x00A0;A. Barrett, &#8220;Intelligent scissors for image composition,&#8221; in <span  class="cmti-10">Proc. of the</span>     <span  class="cmti-10">22nd annual conference on Computer graphics and interactive techniques</span>.   ACM, 1995, pp. 191&#8211;198.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (28)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XBLAKE04">A.&#x00A0;Blake</a>, C.&#x00A0;Rother, M.&#x00A0;Brown, P.&#x00A0;Pérez, and P.&#x00A0;H. Torr, &#8220;Interactive image segmentation using     an adaptive GMMRF model,&#8221; in <span  class="cmti-10">Proc. of the Eighth European Conference on Computer Vision</span>, 2004,     pp. 428&#8211;441. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (29)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XTAL06">J.&#x00A0;Talbot</a> and X.&#x00A0;Xu, &#8220;Implementing GrabCut,&#8221; 2006, Brigham Young University.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (30)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XANDER92">R.&#x00A0;J. Anderson</a> and J.&#x00A0;C. Setubal, &#8220;On the parallel implementation of Goldberg&#8217;s maximum flow     algorithm,&#8221; in <span  class="cmti-10">Proc. of the fourth annual ACM symposium on Parallel algorithms and architectures</span>.     ACM, 1992, pp. 168&#8211;177. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (31)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XALIZA92">F.&#x00A0;Alizadeh</a>, A.&#x00A0;Goldberg, and S.&#x00A0;U. C.&#x00A0;S. Dept, <span  class="cmti-10">Implementing the Push-relabel Method for the</span>     <span  class="cmti-10">Maximum Flow Problem on a Connection Machine</span>.     Department  of  Computer  Science,  Stanford     University, 1992. </font>     </p>         ]]></body>
<body><![CDATA[<p ><font face="Verdana" size="2"><span class="biblabel">  (32)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XBADE05">D.&#x00A0;A. Bader</a> and V.&#x00A0;Sachdeva, &#8220;A cache-aware parallel implementation of the push-relabel network     flow algorithm and experimental evaluation of the gap relabeling heuristic.&#8221; in <span  class="cmti-10">ISCA International</span>     <span  class="cmti-10">Conference on Parallel and Distributed Computing Systems</span>, 2005, pp. 41&#8211;48.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (33)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XDIXIT05">N.&#x00A0;Dixit</a>, R.&#x00A0;Keriven, and N.&#x00A0;Paragios, &#8220;GPU-Cuts: Combinatorial optimisation, graphic processing     units and adaptive object extraction,&#8221; 2005. </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (34)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XHUSSEIN07">M.&#x00A0;Hussein</a>,  A.&#x00A0;Varshney,  and  L.&#x00A0;Davis,  &#8220;On  implementing  Graph  Cuts  on  CUDA,&#8221;  in  <span  class="cmti-10">1st</span>     <span  class="cmti-10">Workshop on General Purpose Processing on Graphics Processing Units</span>, 2007.     </font>      </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (35)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XDELONG08">A.&#x00A0;Delong</a> and Y.&#x00A0;Boykov, &#8220;A Scalable graph-cut algorithm for N-D grids,&#8221; in <span  class="cmti-10">Proc. of the IEEE</span>     <span  class="cmti-10">Conference on Computer Vision and Pattern Recognition</span>, 2008, pp. 1&#8211;8.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (36)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="XCUDACUTS08">V.&#x00A0;Vineet</a> and P.&#x00A0;Narayanan, &#8220;CUDA cuts: Fast graph cuts on the GPU,&#8221; in <span  class="cmti-10">Computer Vision and</span>     <span  class="cmti-10">Pattern Recognition Workshops</span>.   IEEE Computer Society, 2008, pp. 1&#8211;8.     </font>     </p>         <p ><font face="Verdana" size="2"><span class="biblabel">  (37)<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a   id="Xvideo4">&#8220;CUDA Programming Guide 2.3</a>,&#8221; NVIDIA, 2009. (Online). Available: <a  href="http://developer.nvidia.com" class="url" >http://developer.nvidia.com</a>     </font> </p>     </div>           ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bankman]]></surname>
<given-names><![CDATA[I. N]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of Medical Image Processing and Analysis]]></source>
<year>Dece</year>
<month>mb</month>
<day>er</day>
<edition>2</edition>
<publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[Academic Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Prassni]]></surname>
<given-names><![CDATA[J.-S]]></given-names>
</name>
<name>
<surname><![CDATA[Ropinski]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Hinrichs]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Uncertainty-aware guided volume segmentation]]></article-title>
<source><![CDATA[IEEE Transactions on Visualization and Computer Graphics]]></source>
<year>Nov.</year>
<month> 2</month>
<day>01</day>
<volume>16</volume>
<page-range>1358-1365</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="">
<collab>NVIDIA Corporation</collab>
<source><![CDATA[NVIDIA homepage]]></source>
<year>2011</year>
<month>, </month>
<day>Di</day>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rother]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Kolmogorov]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
<name>
<surname><![CDATA[Blake]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[GrabCut: Interactive Foreground Extraction using Iterated Graph Cuts]]></article-title>
<source><![CDATA[ACM Transactions on Graphics]]></source>
<year>2004</year>
<volume>23</volume>
<page-range>309-314</page-range></nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cormen]]></surname>
<given-names><![CDATA[T. H]]></given-names>
</name>
<name>
<surname><![CDATA[Leiserson]]></surname>
<given-names><![CDATA[C. E]]></given-names>
</name>
<name>
<surname><![CDATA[Rivest]]></surname>
<given-names><![CDATA[R. L]]></given-names>
</name>
<name>
<surname><![CDATA[Stein]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Introduction to Algorithms]]></source>
<year>2001</year>
<edition>2</edition>
<publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[MIT Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Collins]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Graph cut matching in computer vision]]></article-title>
<source><![CDATA[Computing]]></source>
<year>2004</year>
<numero>February</numero>
<issue>February</issue>
<page-range>1-10</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Greig]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Porteous]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Seheult]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Exact Maximum A Posteriori Estimation for Binary Images]]></article-title>
<source><![CDATA[Royal Journal on Statistical Society]]></source>
<year>1989</year>
<volume>51</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>271-279</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Boykov]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Veksler]]></surname>
<given-names><![CDATA[O]]></given-names>
</name>
<name>
<surname><![CDATA[Zabih]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast approximate energy minimization via graph cuts]]></article-title>
<source><![CDATA[IEEE Transactions on Pattern Analysis and Machine Intelligence]]></source>
<year>Nov.</year>
<month> 2</month>
<day>00</day>
<volume>23</volume>
<numero>11</numero>
<issue>11</issue>
<page-range>1222-1239</page-range></nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Boykov]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Kolmogorov]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision]]></article-title>
<source><![CDATA[IEEE Transactions on Pattern Analysis and Machine Intelligence]]></source>
<year>2004</year>
<volume>26</volume>
<page-range>1124-1137</page-range></nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ford]]></surname>
<given-names><![CDATA[L. R]]></given-names>
</name>
<name>
<surname><![CDATA[Fulkerson]]></surname>
<given-names><![CDATA[D. R]]></given-names>
</name>
</person-group>
<source><![CDATA[Flows in networks]]></source>
<year>1962</year>
<publisher-name><![CDATA[Princeton University]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Goldberg]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Tarjan]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A new approach to the maximum flow problem]]></article-title>
<source><![CDATA[Journal of the ACM]]></source>
<year>1988</year>
<volume>35</volume>
<page-range>921-940</page-range></nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Boykov]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Jolly]]></surname>
<given-names><![CDATA[M.-P]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Interactive graph cuts for optimal boundary: region segmentation of objects in N-D images]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 8th IEEE International Conference on Computer Vision]]></conf-name>
<conf-date>2001</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Boykov]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Funka-Lea]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Graph Cuts and Efficient N-D Image Segmentation]]></article-title>
<source><![CDATA[International Journal of Computer Vision]]></source>
<year>Nov.</year>
<month> 2</month>
<day>00</day>
<volume>70</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>109-131</page-range></nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Price]]></surname>
<given-names><![CDATA[B. L]]></given-names>
</name>
<name>
<surname><![CDATA[Morse]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Cohen]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Geodesic graph cut for interactive image segmentation]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ IEEE Conference on Computer Vision and Pattern Recognition]]></conf-name>
<conf-date>2010</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Couprie]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Grady]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Najman]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Talbot]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[ower watershed: A unifying graph-based optimization framework]]></article-title>
<source><![CDATA[IEEE Transactions on Pattern Analysis and Machine Intelligence]]></source>
<year>July</year>
<month> 2</month>
<day>01</day>
<volume>33</volume>
<page-range>1384-1399</page-range></nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Malmberg]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Strand]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Nyström]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Generalized hard constraints for graph segmentation]]></article-title>
<source><![CDATA[Image Analysis]]></source>
<year>2011</year>
<volume>6688</volume>
<page-range>36-47</page-range><publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lim]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Han]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Han]]></surname>
<given-names><![CDATA[J. H]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Modeling and segmentation of floating foreground and background in videos]]></article-title>
<source><![CDATA[Pattern Recognition]]></source>
<year>Apri</year>
<month>l </month>
<day>20</day>
<volume>45</volume>
<page-range>1696-1706</page-range></nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hegadi]]></surname>
<given-names><![CDATA[R. S]]></given-names>
</name>
<name>
<surname><![CDATA[Goudannavar]]></surname>
<given-names><![CDATA[B. A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Interactive segmentation of medical images using grabcut]]></article-title>
<source><![CDATA[International Journal of Machine Intelligence]]></source>
<year>2011</year>
<volume>3</volume>
<page-range>168-171</page-range></nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Puranik]]></surname>
<given-names><![CDATA[M. M]]></given-names>
</name>
<name>
<surname><![CDATA[Krishnan]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Volume segmentation in medical image analysis: a survey]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ International Conference and Workshop on Emerging Trends in Technology]]></conf-name>
<conf-date>2010</conf-date>
<conf-loc>New York </conf-loc>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Camilus]]></surname>
<given-names><![CDATA[K. Santle]]></given-names>
</name>
<name>
<surname><![CDATA[Govindan]]></surname>
<given-names><![CDATA[V. K]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Review on Graph Based Segmentation]]></article-title>
<source><![CDATA[International Journal of Image Graphics and Signal Processing]]></source>
<year>2012</year>
<volume>4</volume>
<numero>5</numero>
<issue>5</issue>
<page-range>1-13</page-range></nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhuge]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Cao]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Miller]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[GPU accelerated fuzzy connected image segmentation by using CUDA]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Annual International Conference of the IEEE Engineering in Medicine and Biology Society]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhai]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
<name>
<surname><![CDATA[Yang]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Song]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Zhao]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Wang]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[CUDA Based High Performance Adaptive 3D Voxel Growing for Lung CT Segmentation]]></article-title>
<source><![CDATA[Life System Modeling and Intelligent Computing]]></source>
<year>2010</year>
<volume>6330</volume>
<page-range>10-18</page-range></nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schmid]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Iglesias Guitián]]></surname>
<given-names><![CDATA[J. A]]></given-names>
</name>
<name>
<surname><![CDATA[Gobbetti]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Magnenat-Thalmann]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A GPU framework for parallel segmentation of volumetric images using discrete deformable models]]></article-title>
<source><![CDATA[The Visual Computer]]></source>
<year>2011</year>
<volume>27</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>85-95</page-range></nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schenke]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Wünsche]]></surname>
<given-names><![CDATA[B. C]]></given-names>
</name>
<name>
<surname><![CDATA[Denzler]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[GPU-Based Volume Segmentation]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Image and Vision Computing]]></conf-name>
<conf-date>2005</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B25">
<label>25</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chuang]]></surname>
<given-names><![CDATA[Y.-Y]]></given-names>
</name>
<name>
<surname><![CDATA[Curless]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Salesin]]></surname>
<given-names><![CDATA[D. H]]></given-names>
</name>
<name>
<surname><![CDATA[Szeliski]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Bayesian Approach to Digital Matting]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ IEEE Computer Vision and Pattern Recognition]]></conf-name>
<conf-date>2001</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B26">
<label>26</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Orchard]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Bouman]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Color quantization of images]]></article-title>
<source><![CDATA[IEEE Transactions on Signal Processing]]></source>
<year>1991</year>
<volume>39</volume>
<page-range>2677-2690</page-range></nlm-citation>
</ref>
<ref id="B27">
<label>27</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Mortensen]]></surname>
<given-names><![CDATA[E. N]]></given-names>
</name>
<name>
<surname><![CDATA[Barrett]]></surname>
<given-names><![CDATA[W. A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Intelligent scissors for image composition]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[22 annual conference on Computer graphics and interactive techniques]]></conf-name>
<conf-date>1995</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B28">
<label>28</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Blake]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Rother]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Brown]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Pérez]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Torr]]></surname>
<given-names><![CDATA[P. H]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Interactive image segmentation using an adaptive GMMRF model]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[Eighth European Conference on Computer Vision]]></conf-name>
<conf-date>2004</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B29">
<label>29</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Talbot]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Xu]]></surname>
<given-names><![CDATA[X]]></given-names>
</name>
</person-group>
<source><![CDATA[Implementing GrabCut]]></source>
<year>2006</year>
<publisher-name><![CDATA[Brigham Young University]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B30">
<label>30</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Anderson]]></surname>
<given-names><![CDATA[R. J]]></given-names>
</name>
<name>
<surname><![CDATA[Setubal]]></surname>
<given-names><![CDATA[J. C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[On the parallel implementation of Goldberg’s maximum flow algorithm]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[fourth annual ACM symposium on Parallel algorithms and architectures]]></conf-name>
<conf-date>1992</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B31">
<label>31</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Alizadeh]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Goldberg]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Implementing the Push-relabel Method for the Maximum Flow Problem on a Connection Machine]]></source>
<year>1992</year>
<publisher-loc><![CDATA[Stanford ]]></publisher-loc>
<publisher-name><![CDATA[Department of Computer Science]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B32">
<label>32</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bader]]></surname>
<given-names><![CDATA[D. A]]></given-names>
</name>
<name>
<surname><![CDATA[Sachdeva]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A cache-aware parallel implementation of the push-relabel network flow algorithm and experimental evaluation of the gap relabeling heuristic]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Conference on Parallel and Distributed Computing Systems]]></conf-name>
<conf-date>2005</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B33">
<label>33</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dixit]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
<name>
<surname><![CDATA[Keriven]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Paragios]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<source><![CDATA[GPU-Cuts: Combinatorial optimisation, graphic processing units and adaptive object extraction]]></source>
<year>2005</year>
</nlm-citation>
</ref>
<ref id="B34">
<label>34</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hussein]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Varshney]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Davis]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[On implementing Graph Cuts on CUDA]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[1 Workshop on General Purpose Processing on Graphics Processing Units]]></conf-name>
<conf-date>2007</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B35">
<label>35</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Delong]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Boykov]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Scalable graph-cut algorithm for N-D grids]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ IEEE Conference on Computer Vision and Pattern Recognition]]></conf-name>
<conf-date>2008</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B36">
<label>36</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Vineet]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
<name>
<surname><![CDATA[Narayanan]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[CUDA cuts: Fast graph cuts on the GPU, in Computer Vision and Pattern Recognition Workshops]]></article-title>
<source><![CDATA[IEEE Computer Society]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B37">
<label>37</label><nlm-citation citation-type="">
<collab>NVIDIA</collab>
<source><![CDATA[CUDA Programming Guide 2.3]]></source>
<year>2009</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
