Anglee Smoothing: A New Approach for Preserving Low Frequency Portion in Curve Smoothing, Study Guides, Projects, Research of Computer Graphics

The issue of area shrinkage in laplacian and bi-laplacian smoothing techniques for curve smoothing. The authors propose a new method named 'anglee smoothing' to filter out high frequency noise while preserving the low frequency portion and the area enclosed in the curve. The method is based on moving vertices along the curve considering the length of their two edges and gradually moving them towards the average position of their neighbors.

Typology: Study Guides, Projects, Research

Pre 2010

Uploaded on 08/05/2009

koofers-user-r7y
koofers-user-r7y 🇺🇸

10 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Abstract
Planar curves may contain undesired noises or details. We explore
the smoothing technique involving moving position of sample
points along the curve. We demonstrate that naïve techniques
usually reduce the area enclosed by the curve. Several smoothing
techniques are introduced and discussed here. Finally, we
proposed a approach named “Anglee smoothing” which is
designed to filter out high frequency noise while the low
frequency portion and the area enclosed are preserved.
1 Introduction
Polyloop is a cycle of edges joining consecutive points (vertices).
Smooth curves are desired and used for aesthetic, manufacturing
and many other fields. We explore smoothing techniques that
iteratively adjust vertex positions rather than increasing number of
vertices. The position of a vertex is adjusted by being moved to a
new position base on its neighbors. There are several methods
dealing with this, for example: Laplacian smoothing and
Bi-Laplacian smoothing. However, as will be shown, the naïve
version of these methods suffer some problems such as reducing
the area enclosed, filtering out low frequency portion as well as
high frequency parts, and distorting the low frequency part of the
loop. The approach we proposed
The rest of the paper is organized as follows: First, we
discussed Laplacian smoothing and Bi-Laplacian smoothing
technique. We then discuss the method to preserve the area for
both techniques. Last, an approach targets to preserve the low
frequency portion of the curve as well smooth the high frequency
portion is proposed. The proposed method basically moves
vertices considering the length of its two edges.
1.0 What is Smooth
Intuitively, to smooth a curve means to turn the jaggy line
segments into a straight line. At first look, iteratively moving each
points to the average of its neighbors could achieve this goal.
Ultimately, for open curves this method turns the curve to a
straight line, and the vertices (sample) along the line will be align
equidistantly. On the others hand, for closed curves (polyloops), it
turns the polygon into a regular polygon. So as long as we know
the number of vertices on the curve, we can infer the result easily.
Obviously, this is not what we want. What we desired is to
keep the overall shape of curve and get rid of only the high
frequency parts. So the problem is not only turn a jaggy line to a
straight line but in some sense, some way in the middle!!
Moreover, the move to averages won’t work. For example,
when it applies to the curve as follow:
Figure 1: Demonstration of smoothing not only filter out the
high frequency portion of a polyloop but also keep the overall
shape of the loop, which is the low frequency parts. The red curve
on the right is derived by using the approach we proposed here
namely, Anglee, after several iterations with area preserving.
It is easy to see that it oscillates with iterations and lead to
nowhere. To prevent this from happening, rather than move all the
way to the average, move only certain amount as discussed below.
1.1 Laplacian Smoothing
Laplace. The Laplace vector of a vertex B in a sequence A, B, C
of a Polyloop is the vector (A+C)*0.5 – B.
If each vertex wants to blend in, it will want to move by the
direction of its Laplacian so as to be the average of its neighbors.
As discussed in last section, moving B all the way to the average
of A and C won’t work. As a result Laplacian smoothing moves B
toward its Laplacian but only multiplied by a ratio less then one.
The ratio is controlled by the user. The pseudo code should look
like:
for each iteration do:
for each vertex do:
compute the average of its first two neighbors which
share an edge with it.
compute the Laplace as the vector from the vertex to the
average derived.
for each vertex do:
move it by its Laplacian vector times a ratio less than one
derived a new polyloop
Because we keep moving vertices toward the average points,
the displacement of a vertex ‘diffuses’ to its neighbors gradually
after iterations, and thus achieves smoothing.
B
C
Polyloop Smoothing
Ang Lee Jarek Rossignac
Graphics, Visualization, and Usability Center
Georgia Institute of Technology
A
pf3
pf4
pf5

Partial preview of the text

Download Anglee Smoothing: A New Approach for Preserving Low Frequency Portion in Curve Smoothing and more Study Guides, Projects, Research Computer Graphics in PDF only on Docsity!

Abstract

Planar curves may contain undesired noises or details. We explore the smoothing technique involving moving position of sample points along the curve. We demonstrate that naïve techniques usually reduce the area enclosed by the curve. Several smoothing techniques are introduced and discussed here. Finally, we proposed a approach named “Anglee smoothing” which is designed to filter out high frequency noise while the low frequency portion and the area enclosed are preserved.

1 Introduction

Polyloop is a cycle of edges joining consecutive points (vertices). Smooth curves are desired and used for aesthetic, manufacturing and many other fields. We explore smoothing techniques that iteratively adjust vertex positions rather than increasing number of vertices. The position of a vertex is adjusted by being moved to a new position base on its neighbors. There are several methods dealing with this, for example: Laplacian smoothing and Bi-Laplacian smoothing. However, as will be shown, the naïve version of these methods suffer some problems such as reducing the area enclosed, filtering out low frequency portion as well as high frequency parts, and distorting the low frequency part of the loop. The approach we proposed The rest of the paper is organized as follows: First, we discussed Laplacian smoothing and Bi-Laplacian smoothing technique. We then discuss the method to preserve the area for both techniques. Last, an approach targets to preserve the low frequency portion of the curve as well smooth the high frequency portion is proposed. The proposed method basically moves vertices considering the length of its two edges.

1.0 What is Smooth

Intuitively, to smooth a curve means to turn the jaggy line segments into a straight line. At first look, iteratively moving each points to the average of its neighbors could achieve this goal.

Ultimately, for open curves this method turns the curve to a straight line, and the vertices (sample) along the line will be align equidistantly. On the others hand, for closed curves (polyloops), it turns the polygon into a regular polygon. So as long as we know the number of vertices on the curve, we can infer the result easily. Obviously, this is not what we want. What we desired is to keep the overall shape of curve and get rid of only the high frequency parts. So the problem is not only turn a jaggy line to a straight line but in some sense, some way in the middle!! Moreover, the move to averages won’t work. For example, when it applies to the curve as follow:

Figure 1: Demonstration of smoothing not only filter out the high frequency portion of a polyloop but also keep the overall shape of the loop, which is the low frequency parts. The red curve on the right is derived by using the approach we proposed here namely, Anglee, after several iterations with area preserving.

It is easy to see that it oscillates with iterations and lead to nowhere. To prevent this from happening, rather than move all the way to the average, move only certain amount as discussed below.

1.1 Laplacian Smoothing

Laplace. The Laplace vector of a vertex B in a sequence A, B, C of a Polyloop is the vector (A+C)*0.5 – B.

If each vertex wants to blend in, it will want to move by the direction of its Laplacian so as to be the average of its neighbors. As discussed in last section, moving B all the way to the average of A and C won’t work. As a result Laplacian smoothing moves B toward its Laplacian but only multiplied by a ratio less then one. The ratio is controlled by the user. The pseudo code should look like:

for each iteration do: for each vertex do: compute the average of its first two neighbors which share an edge with it. compute the Laplace as the vector from the vertex to the average derived. for each vertex do: move it by its Laplacian vector times a ratio less than one

derived a new polyloop

Because we keep moving vertices toward the average points, the displacement of a vertex ‘diffuses’ to its neighbors gradually after iterations, and thus achieves smoothing.

B

C

Polyloop Smoothing

Ang Lee Jarek Rossignac

Graphics, Visualization, and Usability Center

Georgia Institute of Technology

A

However, as shown in Figure.2, for each iteration, it shrink the polyloop a little, the amount depends on the ratio specified. After several iterations, it shrinks to a tiny close-to-regular polygon. The shrinking happens severely especially on convex parts of the curve.

1.2 Bi-Laplacian Smoothing

Instead moving toward the average of a vertex’s two neighbors, Bi-Laplacian moves the vertex toward a certain point. The target point (C’) is desired to make the laplacian of this new vertex (red) to be the average of the laplacians of the original vertex’s two neighbors computed by considering this new vertex(blues). Note that the position of the target point C’ doesn’t depends on the original point C.

Let C’.l, B.l,D.l be the laplacian of C’, B, D respectively. ie.:

C’.l = (B+D) / 2 – C’ B.l = (A+C’) / 2 – B D.l = (B+D’) / 2 – D

And we desire:

C’.l = ( B.l + D.l ) / 2

Solve for C’ representing in A, B, D, E, we get:

C’ = (2/3)( B+D – (A+E)/4 )

It can be easily seen that C’ can be derived by starting at the mid-point of B and D and moving 1/3 times of the vector that from A and E’s mid-point to B and D’s mid-point. It turns out the scheme shown above is equal to find a cubic curve passing A B D E as well as C’. For example, let A B D E be (0,0), (1,3), (5,3), (6,0) respectively. We desire to find a cubic curve:

F ( s )= as^3 + bs^2 + cs + d

Where a, b, c, d are the coefficients to find.

Have F(-2), F(-1), F(1), F(2) for A, B, D, E respectively, our goal is to find F(0) and put C’ there. Also note F(0) = d

Having four points, one can easily derived the cubic function passing through these four points:

A = F(-2) = -8 a +4 b -2 c + d B = F(-1) = - a + bc + d D = F(1) = a + b + c + d E = F(2) = 8 a +4 b +2 c + d

solve for d ,

Note that the above is the same as equation (1). As well as in Laplacian smoothing, the target point C’ (average of neighbors for Laplacian) act as the desired position decide by C’s neighbor. C, on the other hand will affect A’ B’D’ E’. Each point diffuse its influence to the four neighbors. So, in theorem, Bi-Laplacian works. However, the problem of Bi-Laplacian Smoothing is as shown in figure 3. For jaggy portion, since Bi-Laplacian doesn’t take the original point into concern, instead it moves the vertex all the way to a target position decided by its four neighbors, the oscillation happened to Laplacian also happens here but even more serious, the amplitude it getting higher and higher after each iteration. To solve this problem, as for Laplacian smoothing, we move the vertices toward the targets but rather than all the way to them, multiply the difference vector (C’ – C) by certain ratio less than one. The result is shown in figure 4. As shown, the result looks good, but it also leads to another problem. The same as in Laplacian smoothing, after several iterations, the smoothed curve shrink and head to a regular polygon with small area. The pseudo code should looks like: for each iteration do: for each vertex do: compute the target position. Compute the vector from original vertex to the target position.( bi-laplace) for each vertex do: multiplied the vector by a ratio less than one, move the vertex by the vector. derived a new polyloop

(1,3)

(0,0)

(5,3)

(6,0)

(3,4)

3 : 1

Figure 2: Laplacian smoothing. The ratio is set to 0.3. From left to right iteration was set to 1, 2, 3, 5, 10, 30 respectively. It shows after several iterations, the smoothed result converges to a regular polygon and the area shrinkage is manifest

A

B

C

C’

D

E

B D B D A + E

d F(0) C' (

B D B D A + E

2 Anglee Smoothing

Again, what we want is to smooth the high frequency portion, but keep the low frequency parts, otherwise we can just gives regular polygon as the results. To preserve the low frequency part or curve while filter out the high frequency part, it is reasonable to distinguish between these two cases and treat them differently.

2.1 Motivation

We propose a simple distinguish criteria here: use the length between two consecutive points to determine the displacement. First, consider the situation below:

The shapes of the curves are the same as. Because of the number of points along the edges, the displacement vector (here, laplace*r) is different. This effect is undesired because for the same input shape, we change only the number of sampling vertices, and the result is quite different. The algorithm should take length into consideration.

2.2 Method I

To solve this problem we proposed to make the displacement along each edge has the same amount. So the displacement vector is the sum of the two vectors with same length along the vector’s two edges. Consequently, the displacement is only depends on the angle of these two edges. We don’t need to care the length any more. This is good because large angle (close to 180 degree) means the curve is already very smooth, then move it less. And small angle means jaggy curve, then move it more. We thus can carefully choose the amount that for high frequency parts of the curve, which usually have shorter edges, the vector is big enough to smooth it. On the other hand, for the high frequency parts the vector is comparably small and thus doesn’t displace the vertex too much. For example, here is a result for only one iteration.

For each vertex and for each edge, the displacement along the edge is the same. We call these blue vectors the “edge vector”. Note in the figure above, the high frequency is smoothed on the left part. The mid frequency is smoothed but not too much on the upper left part, and the low frequency part on the right is preserved well. So the question comes down to how to choose the “certain amount” of vector, that is, the length of the blue arrows. The amount has to be proportion to the overall scale of the shape. For a big graph the amount should be big, for small ones, the amount should be small. We represent the overall scale by the total length of line segments. So the length of each edge vector is: Total length of curve time some constant. By adjusting the magic number, we control the “strength” of smoothing. There is a problem here. If the edge is small as compared to the length of the edge vector (blue guy) the displacement vector

for the vertex will be big and the oscillation could happen as shown below

We found moving laplace times the ratio 0.5 is great for smoothing the low frequency. It turns out, this is the same as having the length of the edge vector along each edge to be half of the edge length.

Hence, we add another condition: If the edge vector exceed half of the length along the edge, then shrink the edge vector’s length to be with the half of the edge’s length. The pseudo code should looks like this: For each iteration: Compute the overall length of the loop Let the length of edge vector be L L = overall length * K , where K is a constant specified by the user. For each edge

If (L ≧ o.5 * length of the edge)

edge vector = L * unit vector along the edge. Else edge vector = L*0.5; For each vertex Move the vertex along the difference of its two edge vector.

Our method suffers area shrink, too, but not as severely as in the previous method. The area lost is mostly come from the convex part formed by several long edges. Long edges make the laplace vector or bi-laplace vector be big. Since in our method, for longer edges, the displacement vector is comparatively small, the area shrink is not big. Note however the area preserving scheme can still be applied to this methods. And since for the long edges since the displacement is comparatively small, the problem in Figure 5. which discussed earlier is less serious. The nature of our method is it need a small number of iterations.

2.2 Method II

To distinguish the long and short edges more, we can simply divide the edge vector by the power of the edge length. Thus, the longer the edge, the smaller the displacement amount, It thus preserve the low frequency more and shrink the area less as compared to method I and not to mention the Laplacian and Bi-Laplacian smoothing.

3 Conclusion

In this paper, we discussed the smoothing techniques for polyloops. An area preserving method, Anglee smoothing, is introduced as well. We proposed a new approach which meet the objective of smoothing, which is filter out the high frequency part, and preserve the low frequency part of curves. As in other naïve methods, our method suffers the problem area shrinking, but it is less serious in our methods. The area preserving method works great for our method due to the nature of the method.

4 Appendix

4.1 Results

Original curve After 1 Iteration

After 2 iterations After 5 iterations After 10 iterations

After 30 iterations After 50 iterations After 100 iterations

Red: Laplacian smoothing, r = 0.5; Blue: Bi-laplacian smoothing, r = 0.5; Green: Ang Lee II, power = 3, K = 600;