<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to AlgorithmDescription</title><link>https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/</link><description>Recent changes to AlgorithmDescription</description><atom:link href="https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 04 Dec 2013 17:25:55 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/feed" rel="self" type="application/rss+xml"/><item><title>AlgorithmDescription modified by Rupesh Shrestha</title><link>https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -1,13 +1,13 @@
 MCC Algorithm
 ============
-SD : scale domain, integer in \[1,3\] (variable *l (lowercase "L")* in paper)
+SD : scale domain, integer in \[1,3\] (variable *l (lowercase "L")* in [paper](http://www.treesearch.fs.fed.us/pubs/29032))

 t&lt;sub&gt;SD&lt;/sub&gt;: curvature tolerance for scale domain SD
 t&lt;sub&gt;1&lt;/sub&gt; = *specified by user*
 t&lt;sub&gt;2&lt;/sub&gt; = t&lt;sub&gt;1&lt;/sub&gt; + 0.1
 t&lt;sub&gt;3&lt;/sub&gt; = t&lt;sub&gt;2&lt;/sub&gt; + 0.1

-CR&lt;sub&gt;SD&lt;/sub&gt; : cell resolution for scale domain SD (lambda variable in paper)
+CR&lt;sub&gt;SD&lt;/sub&gt; : cell resolution for scale domain SD (lambda variable in [paper](http://www.treesearch.fs.fed.us/pubs/29032))
 CR&lt;sub&gt;1&lt;/sub&gt; = 0.5 * CR&lt;sub&gt;2&lt;/sub&gt;
 CR&lt;sub&gt;2&lt;/sub&gt; = *specified by user (nominal post-spacing of input LiDAR data)*
 CR&lt;sub&gt;3&lt;/sub&gt; = 1.5 * CR&lt;sub&gt;2&lt;/sub&gt;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rupesh Shrestha</dc:creator><pubDate>Wed, 04 Dec 2013 17:25:55 -0000</pubDate><guid>https://sourceforge.net7ec14b7fffe879f96592e28bbdcc82d2ba30962a</guid></item><item><title>AlgorithmDescription modified by Rupesh Shrestha</title><link>https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -22,7 +22,7 @@
 P&lt;sub&gt;j&lt;/sub&gt; = (x&lt;sub&gt;j&lt;/sub&gt; , y&lt;sub&gt;j&lt;/sub&gt; , z&lt;sub&gt;j&lt;/sub&gt;)
 U&lt;sub&gt;0&lt;/sub&gt; = *initial point-cloud data specified by user*

-  1.  U = [filter out higher points at same x,y](#PointsAtSameXY) in U&lt;sub&gt;0&lt;/sub&gt; and classify them as non-ground
+  1.  U = [filter out higher points at same x,y](AlgorithmFilterXY) in U&lt;sub&gt;0&lt;/sub&gt; and classify them as non-ground
   1.  for scale domain (SD) = 1 to 3:
   1.  . . repeat
   1.  . . . . S = interpolate new raster surface using TPS(U, CR&lt;sub&gt;SD&lt;/sub&gt;, f)
@@ -33,14 +33,3 @@
   1.  . . . . n&lt;sub&gt;C&lt;/sub&gt; : # of points classified and removed from U during current iteration through inner loop
   1.  . . until n&lt;sub&gt;C&lt;/sub&gt; &lt; 0.1% * n
   1.  classify all the points remaining in U as ground
-
-
-Filtering Out Points at Same X,Y #PointsAtSameXY
--------
-Interpolation of a raster surface requires that no two points have the same x and y coordinates (it causes problems mathematically).  If two or more points are at the same x,y location, then all the points except the lowest point (i.e., with minimum z coordinate) must be non-ground.  So those higher points can be classified and removed from the list of unclassified points.
-
-  1.  for each x,y location in U&lt;sub&gt;0&lt;/sub&gt; with two or points:
-  1.  . . z&lt;sub&gt;lowest&lt;/sub&gt; = minimum z coordinate of the points at x,y
-  1.  . . for each point P&lt;sub&gt;j&lt;/sub&gt; at x,y:
-  1.  . . . . if z&lt;sub&gt;j&lt;/sub&gt; &gt; z&lt;sub&gt;lowest&lt;/sub&gt; then
-  1.  . . . . . . classify P&lt;sub&gt;j&lt;/sub&gt; as non-ground and remove it from U&lt;sub&gt;0&lt;/sub&gt;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rupesh Shrestha</dc:creator><pubDate>Wed, 04 Dec 2013 16:48:56 -0000</pubDate><guid>https://sourceforge.netc6b43f5397d81353ccf3c7cc7c55d447991b5f72</guid></item><item><title>AlgorithmDescription modified by Rupesh Shrestha</title><link>https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,52 +1,46 @@
 MCC Algorithm
 ============
+SD : scale domain, integer in \[1,3\] (variable *l (lowercase "L")* in paper)

-SD : scale domain, integer in [1,3] (variable ''l (lowercase "L")'' in paper)
+t&lt;sub&gt;SD&lt;/sub&gt;: curvature tolerance for scale domain SD
+t&lt;sub&gt;1&lt;/sub&gt; = *specified by user*
+t&lt;sub&gt;2&lt;/sub&gt; = t&lt;sub&gt;1&lt;/sub&gt; + 0.1
+t&lt;sub&gt;3&lt;/sub&gt; = t&lt;sub&gt;2&lt;/sub&gt; + 0.1

-t,,SD,, : curvature tolerance for scale domain SD  [[br]]
-t,,1,, = ''specified by user''                     [[br]]
-t,,2,, = t,,1,, + 0.1                              [[br]]
-t,,3,, = t,,2,, + 0.1
+CR&lt;sub&gt;SD&lt;/sub&gt; : cell resolution for scale domain SD (lambda variable in paper)
+CR&lt;sub&gt;1&lt;/sub&gt; = 0.5 * CR&lt;sub&gt;2&lt;/sub&gt;
+CR&lt;sub&gt;2&lt;/sub&gt; = *specified by user (nominal post-spacing of input LiDAR data)*
+CR&lt;sub&gt;3&lt;/sub&gt; = 1.5 * CR&lt;sub&gt;2&lt;/sub&gt;

-CR,,SD,, : cell resolution for scale domain SD (lambda variable in paper)  [[br]]
-CR,,1,, = 0.5 * CR,,2,,                                                    [[br]]
-CR,,2,, = ''specified by user (nominal post-spacing of input LiDAR data)'' [[br]]
-CR,,3,, = 1.5 * CR,,2,,
-
-f : tension parameter (invariant across scale domains)  [[br]]
+f : tension parameter (invariant across scale domains)
 f = 1.5

-U : vector of points that remain unclassified           [[br]]
-U = (P,,1,, , P,,2,, , P,,3,, , ... P,,n,,)             [[br]]
-n : # of points in U (at the start of each loop pass)   [[br]]
-P,,j,, : single LiDAR point                             [[br]]
-P,,j,, = (x,,j,, , y,,j,, , z,,j,,)                     [[br]]
-U,,0,, = ''initial point-cloud data specified by user''
+U : vector of points that remain unclassified
+U = (P&lt;sub&gt;1&lt;/sub&gt; , P&lt;sub&gt;2&lt;/sub&gt; , P&lt;sub&gt;3&lt;/sub&gt; , ... P&lt;sub&gt;n&lt;/sub&gt;)
+n : # of points in U (at the start of each loop pass)
+P&lt;sub&gt;j&lt;/sub&gt; : single LiDAR point
+P&lt;sub&gt;j&lt;/sub&gt; = (x&lt;sub&gt;j&lt;/sub&gt; , y&lt;sub&gt;j&lt;/sub&gt; , z&lt;sub&gt;j&lt;/sub&gt;)
+U&lt;sub&gt;0&lt;/sub&gt; = *initial point-cloud data specified by user*

-  1.  U = [#PointsAtSameXY filter out higher points at same x,y] in U,,0,, and classify them as non-ground
+  1.  U = [filter out higher points at same x,y](#PointsAtSameXY) in U&lt;sub&gt;0&lt;/sub&gt; and classify them as non-ground
   1.  for scale domain (SD) = 1 to 3:
   1.  . . repeat
-  1.  . . . . S = interpolate new raster surface using TPS(U, CR,,SD,,, f)
+  1.  . . . . S = interpolate new raster surface using TPS(U, CR&lt;sub&gt;SD&lt;/sub&gt;, f)
   1.  . . . . S' = surface resulting from passing 3x3 averaging kernel over S
-  1.  . . . . for each point P,,j,, in U:
-  1.  . . . . . . if z,,j,, &gt; S'(x,,j,, , y,,j,,) + t,,SD,, then
-  1.  . . . . . . . . classify P,,j,, as non-ground and remove it from U
-  1.  . . . . n,,C,, : # of points classified and removed from U during current iteration through inner loop
-  1.  . . until n,,C,, &lt; 0.1% * n
+  1.  . . . . for each point P&lt;sub&gt;j&lt;/sub&gt; in U:
+  1.  . . . . . . if z&lt;sub&gt;j&lt;/sub&gt; &gt; S'(x&lt;sub&gt;j&lt;/sub&gt; , y&lt;sub&gt;j&lt;/sub&gt;) + t&lt;sub&gt;SD&lt;/sub&gt; then
+  1.  . . . . . . . . classify P&lt;sub&gt;j&lt;/sub&gt; as non-ground and remove it from U
+  1.  . . . . n&lt;sub&gt;C&lt;/sub&gt; : # of points classified and removed from U during current iteration through inner loop
+  1.  . . until n&lt;sub&gt;C&lt;/sub&gt; &lt; 0.1% * n
   1.  classify all the points remaining in U as ground

 Filtering Out Points at Same X,Y #PointsAtSameXY
 -------
+Interpolation of a raster surface requires that no two points have the same x and y coordinates (it causes problems mathematically).  If two or more points are at the same x,y location, then all the points except the lowest point (i.e., with minimum z coordinate) must be non-ground.  So those higher points can be classified and removed from the list of unclassified points.

-Interpolation of a raster surface requires that no two points have the same
-x and y coordinates (it causes problems mathematically).  If two or more
-points are at the same x,y location, then all the points except the lowest
-point (i.e., with minimum z coordinate) must be non-ground.  So those higher
-points can be classified and removed from the list of unclassified points.
-
-    1.  for each x,y location in U,,0,, with two or points:
-    1.  . . z,,lowest,, = minimum z coordinate of the points at x,y
-    1.  . . for each point P,,j,, at x,y:
-    1.  . . . . if z,,j,, &gt; z,,lowest,, then
-    1.  . . . . . . classify P,,j,, as non-ground and remove it from U,,0,,
+  1.  for each x,y location in U&lt;sub&gt;0&lt;/sub&gt; with two or points:
+  1.  . . z&lt;sub&gt;lowest&lt;/sub&gt; = minimum z coordinate of the points at x,y
+  1.  . . for each point P&lt;sub&gt;j&lt;/sub&gt; at x,y:
+  1.  . . . . if z&lt;sub&gt;j&lt;/sub&gt; &gt; z&lt;sub&gt;lowest&lt;/sub&gt; then
+  1.  . . . . . . classify P&lt;sub&gt;j&lt;/sub&gt; as non-ground and remove it from U&lt;sub&gt;0&lt;/sub&gt;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rupesh Shrestha</dc:creator><pubDate>Wed, 04 Dec 2013 16:37:55 -0000</pubDate><guid>https://sourceforge.netb101f3d590e75fd1eb26d457ab8aa9a7c2fbe2ad</guid></item><item><title>AlgorithmDescription modified by Rupesh Shrestha</title><link>https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,7 +1,7 @@
 MCC Algorithm
 ============

-SD : scale domain, integer in ![1,3] (variable ''l (lowercase "L")'' in paper)
+SD : scale domain, integer in [1,3] (variable ''l (lowercase "L")'' in paper)

 t,,SD,, : curvature tolerance for scale domain SD  [[br]]
 t,,1,, = ''specified by user''                     [[br]]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rupesh Shrestha</dc:creator><pubDate>Wed, 04 Dec 2013 15:29:19 -0000</pubDate><guid>https://sourceforge.net22d163f3d676df8fca3b351792ef591422b5d053</guid></item><item><title>AlgorithmDescription modified by Rupesh Shrestha</title><link>https://sourceforge.net/p/mcclidar/wiki/AlgorithmDescription/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="mcc-algorithm"&gt;MCC Algorithm&lt;/h1&gt;
&lt;p&gt;SD : scale domain, integer in &lt;img alt="1,3" src="../variable" title='&amp;squot;&amp;squot;l (lowercase "L"' /&gt;'' in paper)&lt;/p&gt;
&lt;p&gt;t,,SD,, : curvature tolerance for scale domain SD  [[br]]&lt;br /&gt;
t,,1,, = ''specified by user''                     [[br]]&lt;br /&gt;
t,,2,, = t,,1,, + 0.1                              [[br]]&lt;br /&gt;
t,,3,, = t,,2,, + 0.1&lt;/p&gt;
&lt;p&gt;CR,,SD,, : cell resolution for scale domain SD (lambda variable in paper)  [[br]]&lt;br /&gt;
CR,,1,, = 0.5 * CR,,2,,                                                    [[br]]&lt;br /&gt;
CR,,2,, = ''specified by user (nominal post-spacing of input LiDAR data)'' [[br]]&lt;br /&gt;
CR,,3,, = 1.5 * CR,,2,,&lt;/p&gt;
&lt;p&gt;f : tension parameter (invariant across scale domains)  [[br]]&lt;br /&gt;
f = 1.5&lt;/p&gt;
&lt;p&gt;U : vector of points that remain unclassified           [[br]]&lt;br /&gt;
U = (P,,1,, , P,,2,, , P,,3,, , ... P,,n,,)             [[br]]&lt;br /&gt;
n : # of points in U (at the start of each loop pass)   [[br]]&lt;br /&gt;
P,,j,, : single LiDAR point                             [[br]]&lt;br /&gt;
P,,j,, = (x,,j,, , y,,j,, , z,,j,,)                     [[br]]&lt;br /&gt;
U,,0,, = ''initial point-cloud data specified by user''&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;U = &lt;span&gt;[#PointsAtSameXY filter out higher points at same x,y]&lt;/span&gt; in U,,0,, and classify them as non-ground&lt;/li&gt;
&lt;li&gt;for scale domain (SD) = 1 to 3:&lt;/li&gt;
&lt;li&gt;. . repeat&lt;/li&gt;
&lt;li&gt;. . . . S = interpolate new raster surface using TPS(U, CR,,SD,,, f)&lt;/li&gt;
&lt;li&gt;. . . . S' = surface resulting from passing 3x3 averaging kernel over S&lt;/li&gt;
&lt;li&gt;. . . . for each point P,,j,, in U:&lt;/li&gt;
&lt;li&gt;. . . . . . if z,,j,, &amp;gt; S'(x,,j,, , y,,j,,) + t,,SD,, then&lt;/li&gt;
&lt;li&gt;. . . . . . . . classify P,,j,, as non-ground and remove it from U&lt;/li&gt;
&lt;li&gt;. . . . n,,C,, : # of points classified and removed from U during current iteration through inner loop&lt;/li&gt;
&lt;li&gt;. . until n,,C,, &amp;lt; 0.1% * n&lt;/li&gt;
&lt;li&gt;classify all the points remaining in U as ground&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="filtering-out-points-at-same-xy-pointsatsamexy"&gt;Filtering Out Points at Same X,Y #PointsAtSameXY&lt;/h2&gt;
&lt;p&gt;Interpolation of a raster surface requires that no two points have the same&lt;br /&gt;
x and y coordinates (it causes problems mathematically).  If two or more&lt;br /&gt;
points are at the same x,y location, then all the points except the lowest&lt;br /&gt;
point (i.e., with minimum z coordinate) must be non-ground.  So those higher&lt;br /&gt;
points can be classified and removed from the list of unclassified points.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="mf"&gt;1.&lt;/span&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;U&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;points&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="mf"&gt;1.&lt;/span&gt;  &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="n"&gt;lowest&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;minimum&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt; &lt;span class="n"&gt;coordinate&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;points&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;
&lt;span class="mf"&gt;1.&lt;/span&gt;  &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;point&lt;/span&gt; &lt;span class="n"&gt;P&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="mf"&gt;1.&lt;/span&gt;  &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="n"&gt;lowest&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt; &lt;span class="n"&gt;then&lt;/span&gt;
&lt;span class="mf"&gt;1.&lt;/span&gt;  &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;classify&lt;/span&gt; &lt;span class="n"&gt;P&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;non&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ground&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;remove&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;U&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rupesh Shrestha</dc:creator><pubDate>Wed, 04 Dec 2013 15:28:27 -0000</pubDate><guid>https://sourceforge.net7f3c33c4404c0b1fd44a62e0ffe3249ad8d72809</guid></item></channel></rss>