{"id":79,"date":"2017-05-04T11:18:40","date_gmt":"2017-05-04T15:18:40","guid":{"rendered":"http:\/\/sites.nd.edu\/chaoli-wang\/?page_id=79"},"modified":"2025-08-30T09:59:50","modified_gmt":"2025-08-30T13:59:50","slug":"streamline-segmentation","status":"publish","type":"page","link":"https:\/\/sites.nd.edu\/chaoli-wang\/code\/streamline-segmentation\/","title":{"rendered":"Streamline Segmentation"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Our supervised streamline segmentation algorithm allows the extraction of user-defined flow features. For each data set, users are required to manually segment only a small number of streamlines in order to define what flow features they want to extract from the flow field. The user-picked segmentation points along a streamline will be used to generate positive training examples, whereas the remaining ones are used to generate negative training examples. Multi-scale feature vectors are computed for each positive and negative example, and fed into a binary support vector machine (SVM) trainer. Finally, we use the trained classifier to determine the segmentation points for all the streamlines in the data set. A post-processing step is required for grouping nearby segmentation points detected by the classifier.<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/sites.nd.edu\/chaoli-wang\/files\/2017\/05\/cg15-sss.jpg\" width=\"637\" height=\"256\" border=\"0\"><br \/>\nGiven an input pool of streamlines (left), we first segment each streamline using our previously learned classifier for segmentation points (middle, the red point is the segmentation point found by our algorithm). Partial streamline features specified by users will be clustered based on their similarities (right).<\/p>\n<h2>Download<\/h2>\n<p>We provide the source code of the important steps in our approach. These important steps include generating representative streamlines for training, streamline simplification, feature vector computation, and the training algorithm. The source code has been compiled successfully on Windows 7 using Visual Studio 2013 Express. The source code makes use of the following three external libraries:<\/p>\n<ul>\n<li><a href=\"http:\/\/eigen.tuxfamily.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Eigen<\/a> library used to compute minimum volume bounding ellipsoid<\/li>\n<li><a href=\"http:\/\/www.csie.ntu.edu.tw\/~cjlin\/libsvm\/\" target=\"_blank\" rel=\"noopener noreferrer\">libSVM<\/a> library used to perform supervised training<\/li>\n<li><a href=\"http:\/\/www.psi.toronto.edu\/index.php?q=affinity%20propagation\" target=\"_blank\" rel=\"noopener noreferrer\">Affinity Propagation<\/a> binary used for clustering<\/li>\n<\/ul>\n<h3>Source Code<\/h3>\n<ul>\n<li>Click <a href=\"https:\/\/academicweb.nd.edu\/~cwang11\/resources\/streamline-segmentation.zip\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> to download the source code: <span style=\"font-family: 'Courier New'\"><b>streamline-segmentation.zip<\/b><\/span><\/li>\n<\/ul>\n<h2>Publication<\/h2>\n<p>Yifei Li, Chaoli Wang, and Ching-Kuang Shene. Extracting Flow Features via Supervised Streamline Segmentation. <i>Computers &amp; Graphics<\/i>, 52:79-92, Nov 2015. <\/p>\n<h2>Contact<\/h2>\n<ul>\n<li><a href=\"mailto:yifli@mtu.edu\">Yifei Li<\/a><\/li>\n<li><a href=\"mailto:chaoli.wang@nd.edu\">Chaoli Wang<\/a><\/li>\n<li><a href=\"mailto:shene@mtu.edu\">Ching-Kuang Shene<\/a><\/li>\n<\/ul>\n<p><!-- hitwebcounter Code START --><\/p>\n<p><a href=\"http:\/\/www.hitwebcounter.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><br \/>\n<img decoding=\"async\" src=\"http:\/\/hitwebcounter.com\/counter\/counter.php?page=6087845&amp;style=0006&amp;nbdigits=6&amp;type=page&amp;initCount=0\" title=\"\" alt=\"\" border=\"0\"><br \/>\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Our supervised streamline segmentation algorithm allows the extraction of user-defined flow features. For each data set, users are required to manually segment only a small number of streamlines in order to define what flow features they want to extract from the flow field. The user-picked segmentation points along a streamline will be used to [&hellip;]<\/p>\n","protected":false},"author":2576,"featured_media":0,"parent":360,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-79","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/pages\/79","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/users\/2576"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/comments?post=79"}],"version-history":[{"count":20,"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/pages\/79\/revisions"}],"predecessor-version":[{"id":2067,"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/pages\/79\/revisions\/2067"}],"up":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/pages\/360"}],"wp:attachment":[{"href":"https:\/\/sites.nd.edu\/chaoli-wang\/wp-json\/wp\/v2\/media?parent=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}