<< Chapter < Page | Chapter >> Page > |
Because of the inherent geometric qualities of image subjects, it is desirable that any algorithm for dividing an image into a set of regions should be able to model a wide variety of geometries. Triangles are the simplest building block for such models. As such, it is appropriate to use a triangulation to break down or build up an image.
Triangulation divides a surface into a set of triangles, with each triangle edge entirely shared by two triangles. Given a set of points P, the Delaunay triangulation of this set ensures that no point is in the circumcircle of any triangle formed.
There are several methods for accomplishing this, such as incremental, divide and conquer, and sweepline. All of these can achieve O(nlogn) run time, where n is the number of points in P. The Delaunay triangulation for a set of points P(X,Y) can easily be accomplished in MATLAB via the command delaunay(X,Y).
The advantage of using Delaunay triangulation over other types is that it maximizes the minimum angles of the triangles. In this way, the triangles tend toward equiangularity, which avoids having triangles that are very long and thin. Therefore, the resulting triangulation looks geometrically balanced. Aside from equiangularity, Delaunay triangulation is particularly non-restrictive. Thus, it is ideal for interpolation algorithms, which attempt to avoid introducing distortions. (Other methods of triangulating might force unusual constraints on the triangle patches, which could result in really weird shapes on the surface. This would distort the pixel values of the final image, since pixel values over a region are directly related to the triangle that covers that region.)
The geometric versatility of triangulation as a tool for breaking down and building up images, combined with the particular geometric advantages of the Delaunay version in the interpolation realm, make Delaunay triangulation an ideal component of pixel interpolation algorithms.
Notification Switch
Would you like to follow the 'Elec 301 projects fall 2006' conversation and receive update notifications?