Transform Templates - Images

This topic discusses application of the Transform panel with Images on a tile field for the image.  That is equivalent to applying the Transform dialog to a table for an image and using the tile field in the table.  See the Contents - Transform and Transform Templates topics for use and for links to lists of templates for other data types for tables and use of the Transform Dialog with other components, such as Tables and Drawings.

 

Important:  Many tile functions are the tile equivalents of mathematical functions operating on numbers.    The examples and table illustrations in this table show the operation of numeric transforms, since those are easily visible in a table.    The tile function equivalents for tile data type fields will do the same math, but operating upon the numeric pixel values within the tile.

 

Images such as RGB images that utilize multiple channels have only the Channels template, allowing creation of an image that extracts one of the channels used.   Images that utilize only a single channel have many more transforms as listed below.

 

Many illustrations in this topic use the formatted example of importing an SDTS format DEM from the Example: Import DDF SDTS DEM Raster File  topic.   The example project may be downloaded from the Downloads page on the Manifold web site.tech_angus_sm.png

 

Tech Tip:  Manifold runs CPU parallel and also GPU parallel, as discussed in the GPGPU topic.   Having a GPU can make a huge difference in speed for many of the transforms listed in this topic, for example, when computing Curvature or Slope or Aspect using a radius of 3 or more.  Manifold running without a GPU installed will automatically use CPU parallelism instead for spectacular parallel speed, but with a GPU installed Manifold can often run dramatically faster.    Installing at least one, inexpensive NVIDIA GPU card in our systems allows such operations to run with astonishing speed, at times reducing computations from minutes to seconds or from hours to seconds.  A wide range of GPU cards costing from under $100 to around $250 will make a spectacular difference.

Data Types in Images

Convolution filters as used in any transform that involves a Radius parameter will usually output floating point numbers as the data type.  This leads to two effects we should keep in mind:

 

 

Most terrain surfaces already use floating point numbers for their pixel values.  However, photographs and graphics arts images often will use integers.  If we apply transforms like Sharpen to those, the output image will use floating point numbers.  Within the Transform panel, the preview will look strange.  For example, Sharpen previews for an integer image will look like noise.  The photographic images used in this topic have all been converted from integer to floating point.

 

Images, Single Channels

For examples of numeric function operation, see the Transform Templates - Numeric topic.  For information on transform templates that use a Radius argument, utilizing a filter matrix, see the How Matrix Filters Work topic.

 

Absolute Value

Take the absolute value of the tile pixel value in the source field and put it into the target field.  Absolute value leaves positive numbers unchanged and converts negative numbers into their positive equivalents.  

Add

Add two values and put the result into the target field.   Appears for single channel images as well.  Useful for increasing the level of terrain elevation data.

il_trans_img_tile_add_dlg.png

Preview: Apply Add to Tile using an Add value of 100.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_add.png

The effect is the equivalent of lifting the terrain 100 units (in this case, feet).  From the above we see that palette and hill-shading effects are applied even during a preview.

Arc Cosine

Take the arc cosine (inverse cosine) of the source field and put it into the target field.

Arc Sine

Take the arc sine (inverse sine) of the source field and put it into the target field.

Arc Tangent

Take the arc tangent (inverse tangent) of the source field and put it into the target field.

Arc Tangent of Ratio

Take the arc tangent (inverse tangent) of the ratio between the DY field and the DX field and put into the target field.

Aspect

Appears for single channel images. Treating the pixel values as heights to imply a surface, compute the direction in which the slope of the terrain faces and save as a pixel value that direction in degrees, with 0 to 180 representing the Eastern semicircle and -1 to -179 the Western semicircle.  A larger Radius takes longer to calculate but averages out the changes in slope to a greater extent.   The direction is computed by comparing heights of a square array of pixels within a given radius.  

 

The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array.  Aspect works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.  tech_yoshi_sm.png

 

Caution: Slight increases in Radius can cause disproportionately enormous increases in the computation time required.  Without a GPU a Radius of 3 is slow but tolerable because Manifold will run CPU parallel for better speed.   With a GPU, even incredibly large computations involving a Radius of 7 or even 8 are possible on a desktop machine, as Manifold will automatically GPGPU parallelize the aspect calculation.   Without a GPU, start with a Radius of 1 and then scale up slowly to see where patience ends.   As a practical matter, there is not much gain in accuracy of aspect computation when increasing Radius beyond 4 or 5.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_aspect_dlg.png

Preview: Apply Aspect to Tile using a Radius of 3.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_aspect.png

The values resulting from Aspect are no longer heights but are degrees of compass orientation, so all are colored within the blue range of the palette in use. It makes little sense to apply hill shading to a raster display of aspect values.   We would remove hill shading and choose a different palette after applying Aspect.

 

Average

Appears for single channel images.  Identical to Blur, but uses a fixed Center value of 1.  Provided for convenience, since beginners and those who do not use the system every day might not realize that Blur using a Center value of 1 is just averaging.

 

Similar to Median but using the average of values and not the median as Median does.  Take the source field, Interpolate pixel values based on radius, averaging pixel values over a square array of pixels, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  Average works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.    

il_trans_img_tile_average_dlg.png

Clicking into the Shape parameter allows us to choose the shape of the filter as a circle, cross or square, the default.

Square Shape

il_trans_img_tile_average_dlg_shape.png

 

Preview: Apply Average to Tile using a Radius of 10 and the default Shape of square.  Caution: a Radius of 10 is OK for small images like those used in graphics arts, but unreasonably large for aerial photos and other geographic images.  GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_blur.png

Cross Shape

il_trans_img_tile_average_dlg_shape_cross.png

 

Preview: Apply Average to Tile using a Radius of 10 and a Shape of cross.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_blur_cross.png

Circle Shape

il_trans_img_tile_average_dlg_shape_circle.png

 

Preview: Apply Average to Tile using a Radius of 10 and a Shape of circle.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_blur_circle.png

 

Using a circle shape for the filter tends to reproduce the "bokeh" effect when objects are seen through an out-of-focus effect.

 

Base 10 Logarithm

Put the base 10 logarithm (also called the common logarithm) of the source field into the target field.

Base 2 Logarithm

Put the base 2 logarithm (also called the binary logarithm) of the source field into the target field.

Bessel J0

A Bessel function of the first kind: Put the result of the Bessel function J0(x) using the source field as x into the target.

Bessel J1

A Bessel function of the first kind: Put the result of the Bessel function J1(x) using the source field as x into the target.

Bessel Jn

The nth Bessel function of the first kind: Put the result of the Bessel function Jn(x) for Order n using the source field as x into the target.  Specifying 2 for Order uses a J2(x) Bessel function.  Using 0 or 1 for the Order is equivalent to using J0(x) or J1(x), respectively.

Bessel Y0

A Bessel function of the second kind: Put the result of the Bessel Function Y0(x) using the source field as x into the target.

Bessel Y1

A Bessel function of the second kind: Put the result of the Bessel Function Y1(x) using the source field as x into the target.

Bessel Yn

The nth Bessel function of the second kind: Put the result of the Bessel Function Yn(x) for Order n using the source field as x into the target.  Specifying 2 for Order uses a Y2(x) Bessel function.  Using 0 or 1 for the Order is equivalent to using Y0(x) or Y1(x), respectively.

Blur

Appears for single channel images.  Identical to Average, but allows specifying the Center value instead of using a fixed Center value of 1.   Blur is similar to Median but using the average of values and not the median as Median does.  Take the source field, Interpolate pixel values based on radius and center, averaging pixel values over a square array of pixels, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in averaging compared to other pixels in the array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  Blur works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.    

 

il_trans_img_tile_blur_dlg.png

 

Clicking into the Shape parameter allows us to choose the shape of the filter as a circle, cross or square, the default.

Square Shape

il_trans_img_tile_blur_dlg_shape.png

 

Preview: Apply Blur to Tile using a Radius of 10, a Center of 1, and the default Shape of square.  Caution: a Radius of 10 is OK for small images like those used in graphics arts, but unreasonably large for aerial photos and other geographic images.  GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_blur.png

Cross Shape

il_trans_img_tile_blur_dlg_shape_cross.png

 

Preview: Apply Blur to Tile using a Radius of 10, a Center of 1, and a Shape of cross.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_blur_cross.png

At the cost of introducing some blurriness, the cross shape filter is often used to remove artifacts from image processing.  

 

For speed and simplicity, some image processing algorithms in various different graphics editors or image processing systems will often make two passes through an image, one pass considering pixels in each row, looking at neighbors to the left and right, and then a second pass considering pixels above and below in a column.  

 

Using a cross shape filter, Blur averages against only pixels in the matrix above and below in the same column or to the left and right in the same row, ignoring diagonal pixel values.  The filter therefore tends to average out artifacts that appear in the same column or the same row as a pixel.  Using a cross shape filter with Median has a similar function.

Circle Shape

il_trans_img_tile_blur_dlg_shape_circle.png

 

Preview: Apply Blur to Tile using a Radius of 10, a Center of 1, and a Shape of circle.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_blur_circle.png

 

Using a circle shape for the filter tends to reproduce the "bokeh" effect when objects are seen through an out-of-focus effect.

 

Blur, Direction

Appears for single channel images.   Take the source field, Interpolate pixel values based on radius and center, averaging pixel values over a square array of pixels emphasizing the direction specified by the given angle (in radians), and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in averaging compared to other pixels in the array.  Blur, Direction works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_direction_blur_dlg.png

Preview: Apply Blur, Direction to Tile using a Radius of 5, a Center of 1, and an Angle of 0.27 radians, which is approximately 15.5 degrees.

 

il_trans_img_tile_buildings_grayscale.png il_trans_img_tile_direction_blur2.png

The system blurs more in the direction of the specified Angle.

Blur, Gaussian

Appears for single channel images.  Take the source field, Interpolate pixel values based on radius and center, averaging pixel values over a circular radius with a convolution function computed using a Gaussian function, and place the result in the target field.  

 

The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in averaging compared to other pixels in the array.  Radius has a greater visual effect than Center.  Blur, Gaussian corrects for circular radius while Blur computes blur on a square, cross or uncorrected circular matrix.  Blur, Gaussian works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.  

 

il_trans_img_tile_gaussian_blur_dlg.png

Preview: Apply Blur, Gaussian to Tile using a Radius of 10 and a Center of 1.    Caution: a Radius of 10 is OK for small images like those used in graphics arts, but unreasonably large for aerial photos and other geographic images.  GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_gaussian_blur.png

 

A familiar effect in Photoshop editing, Gaussian Blur is also useful to reduce details in raster data such as terrain elevation data sets.   For example, a highly detailed, military-grade, terrain elevation data set might be reduced in resolution using Gaussian Blur to enable release as a declassified data set for civilian use.

 

il_trans_img_tile_elevation_raster02.png  il_trans_img_tile_elevation_raster02_g_blur.png

 

Comparing Blur, Gaussian to Blur

 

Blur is the classic box blur, using a square shape filter, of many image editing programs, with the added ability to weight the central pixel. When used with a circle shape filter, Blur more closely approximates the "bokeh" effect of lense blur in out-of-focus regions of photographic images where some parts of the image are in-focus while others are out-of-focus.   A Blur example using a circle shape filter is on the left below.  

 

il_trans_img_tile_blur_circle.png il_trans_img_tile_gaussian_blur.png

 

Blur, Gaussian, on the right above, combines a Gaussian function (often thought of as a bell curve) with pixel values to compute weighted pixel averaging.  Blur, Gaussian tends to better preserve boundaries and edges and operates as a low-pass filter as well.  Applying a slight Blur, Gaussian to an image before downsizing it will often produce a better appearance for the reduced-size image by eliminating Moire effects and other high-frequency feature artifacts.

Ceiling

Put the rounded up integer value of the source field into the target field.

Ceiling up to Decimals

Put the value of the source field rounded up to the specified number of Decimal positions into the target field.

Complementary Error Function

Take the complementary error function (also called erfc(z) ) of the source field and put it into the target field.

Contour Areas

Using values in a raster image as heights of terrain, create a drawing with vector areas representing contours for the terrain heights from the specified minimum height to maximum height, using intervals of the given Step.   Each area record will have ValueMin and ValueMax attribute fields giving the minimum and maximum height for that contour area.  

 

The Decompose to shapes option, when checked (default), will automatically decompose all areas for the same range of contour interval values into separate area objects.   Unchecking this option will result in the creation of a single, multibranched area object for each contour interval value range.  This makes for a simpler results table and the ease of selecting all like areas with a single Ctrl-click, but when starting with larger raster data it can result in very large areas, consisting of millions of coordinates to cover all of the branches.

 

Zoom in for previews: The system shows a preview for data in the current viewport if reasonable. If a preview does not appear, zoom further into the display to reduce the quantity of data in the viewport.

 

il_trans_img_contour_areas01.pngil_trans_img_contour_areas02.png

 

See the Example: Contour Areas and Contour Lines topic for a step-by-step example.    To learn how to create contour areas on whatever intervals we want, and not just evenly-spaced intervals, see the SQL Example: Custom Contour Intervals topic for an extremely easy method.

 

See also the Example: Trace Vector Areas from Raster Pixels  topic, for the related template that traces areas by pixel values.

 

See the Manifold 9 - Five Minutes for Contours video and the Manifold 9 - Contour a 300MB DEM in Five Seconds video.

 

Contour Lines

Using values in a raster image as heights of terrain, create a drawing with vector lines representing contours for the terrain heights from the specified minimum height to maximum height, using intervals of the given Step.    Each line record will have a Value attribute fields giving the height for that contour line.  

 

The Decompose to shapes option, when checked (default), will automatically decompose all lines for the same contour value into separate line objects.   Unchecking this option will result in the creation of a single, multibranched line object for each contour value.  This makes for a simpler results table and the ease of selecting all like lines with a single Ctrl-click, but when starting with larger raster data it can result in very large lines, consisting of millions of coordinates to cover all of the branches.

 

Leaving the default Decompose to shapes option checked also has the advantage that if any of the created lines exceeds 64 million coordinates (! ... a big line...), Manifold will automatically split it into more than one line so that each stays less than 64 million coordinates in size.

 

Zoom in for previews: The system shows a preview for data in the current viewport if reasonable. If a preview does not appear, zoom further into the display to reduce the quantity of data in the viewport.

 

il_trans_img_contour_lines01.pngil_trans_img_contour_lines02.png

 

See the Example: Contour Areas and Contour Lines topic for a step-by-step example.    To learn how to create contour lines on whatever intervals we want, and not just evenly-spaced intervals, see the SQL Example: Custom Contour Intervals topic for an extremely easy method.

 

See also the Example: Trace Vector Areas from Raster Pixels  topic, for the related template that traces areas by pixel values.

 

See the Manifold 9 - Five Minutes for Contours video and the Manifold 9 - Contour a 300MB DEM in Five Seconds video.

 

Cosine

Take the cosine of the source field and put it into the target field.

Cube Root

Take the cube root of the source field and put it into the target field.

Curvature, Gaussian

Appears for single channel images.  Used for raster images that represent terrain elevations.  Compute curvature of the terrain surface at each pixel of a surface, computed over a square matrix of the given radius.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array.  Curvature transforms work on a single channel: tiles should be a single channel using a floating point number such as FLOAT32 or FLOAT64, and not multichannel.  

 

Curvature, Gaussian computes curvature as the product of the curvature in the direction of greatest curvature and the curvature in the direction of least curvature.  

 

il_trans_img_tile_curvature_gaussian_dlg.png

Compute Curvature, Gaussian using Tile with a Radius of 3.   Previews do not make sense because Style must be used to specify the display of the result, typically using at least medium Autocontrast.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_gaussian.png

The illustration at above right shows the resulting image as a layer above the original image.  

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_gaussian_blend.png

The illustration at above right shows a typical use for curvature results.  The original image is shown in the upper Layer with 80% opacity, allowing the curvature image to partially show through.  The blended result emphasizes details in a subtle manner.  Multiple layers combining the results of different curvature transforms with different transparencies can be combined this way.

 

See the Speed Demo with 1280 GPU Cores video for an example using a Curvature filter.

Curvature, Mean

Appears for single channel images.  Used for raster images that represent terrain elevations.  Compute curvature of the terrain surface at each pixel of a surface, computed over a square matrix of the given radius.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array.  Curvature transforms work on a single channel: tiles should be a single channel using a floating point number such as FLOAT32 or FLOAT64, and not multichannel.  

 

Curvature, Mean computes curvature as the average of the curvature in the direction of greatest curvature and the curvature in the direction of least curvature.  

 

il_trans_img_tile_curvature_mean_dlg.png

Compute Curvature, Mean using Tile with a Radius of 3.   Previews do not make sense because Style must be used to specify the display of the result, typically using at least medium Autocontrast.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_mean.png

The illustration at above right shows the resulting image as a layer above the original image.  

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_mean_blend.png

The illustration at above right shows a typical use for curvature results.  The original image is shown in the upper Layer with 80% opacity, allowing the curvature image to partially show through.  The blended result emphasizes details in a subtle manner.  Multiple layers combining the results of different curvature transforms with different transparencies can be combined this way.

 

See the Speed Demo with 1280 GPU Cores video for an example using a Curvature filter.  See also the Example: Enhance Terrain with Curvatures  topic.

Curvature, Plan

Appears for single channel images.  Used for raster images that represent terrain elevations.  Compute curvature of the terrain surface at each pixel of a surface, computed over a square matrix of the given radius.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array.  Curvature transforms work on a single channel: tiles should be a single channel using a floating point number such as FLOAT32 or FLOAT64, and not multichannel.  

 

Curvature, Plan (short for planform) computes curvature perpendicular to the direction of maximum slope.  Plan curvature brings out ridges and valleys in a surface.  See the ESRI blog entry for a good discussion.

 

il_trans_img_tile_curvature_plan_dlg.png

Compute Curvature, Plan using Tile with a Radius of 3.   Previews do not make sense because Style must be used to specify the display of the result, typically using at least medium Autocontrast.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_plan.png

The illustration at above right shows the resulting image as a layer above the original image.  

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_plan_blend.png

The illustration at above right shows a typical use for curvature results.  The original image is shown in the upper Layer with 80% opacity, allowing the curvature image to partially show through.  The blended result emphasizes details in a subtle manner.  Multiple layers combining the results of different curvature transforms with different transparencies can be combined this way.

 

See the Speed Demo with 1280 GPU Cores video for an example using a Curvature filter.  See also the Example: Enhance Terrain with Curvatures  topic.

Curvature, Profile

Appears for single channel images.  Used for raster images that represent terrain elevations.  Compute curvature of the terrain surface at each pixel of a surface, computed over a square matrix of the given radius.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array.  Curvature transforms work on a single channel: tiles should be a single channel using a floating point number such as FLOAT32 or FLOAT64, and not multichannel.  

 

Curvature, Profile computes curvature parallel to the direction of maximum slope. Profile curvature brings out terrace effects in a surface.  See the ESRI blog entry for a good discussion.

 

il_trans_img_tile_curvature_profile_dlg.png

Compute Curvature, Profile using Tile with a Radius of 3.   Previews do not make sense because Style must be used to specify the display of the result, typically using at least medium Autocontrast.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_profile.png

The illustration at above right shows the resulting image as a layer above the original image.  

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_curvature_profile_blend.png

The illustration at above right shows a typical use for curvature results.  The original image is shown in the upper Layer with 80% opacity, allowing the curvature image to partially show through.  The blended result emphasizes details in a subtle manner.  Multiple layers combining the results of different curvature transforms with different transparencies can be combined this way.

 

See the Speed Demo with 1280 GPU Cores video for an example using a Curvature filter.  See also the Example: Enhance Terrain with Curvatures  topic.

Diversity

Appears for single channel images.  Take the source field, for each pixel using a matrix of the given Radius to compute the total number of different values found within the pixels covered by the matrix, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  This transform works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.

Diversity Index

Appears for single channel images.  Take the source field, for each pixel using a matrix of the given Radius to compute the diversity index of the values found within the pixels covered by the matrix, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.

 

A diversity index provides a measure of diversity, computed as 1 - sum(individualcount^2) / (totalcount^2), 0 means that all values are equal.    This transform works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.

Divide

Divide the source field by the divide field and put the result into the target field.  Appears for single channel images as well.  Useful for decreasing vertical scale in terrain elevation data.

il_trans_img_tile_divide_dlg.png

Preview: Apply Divide to Tile using a Divide by factor of 2.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_divide.png

The terrain heights become lower and less steep. From the above we see that palette and hill-shading effects are applied even during a preview.

Divide and Truncate

Divide the source field by the divide field and put the integer part of the result into the target field.

Edges

Appears for single channel images. Find edges (transitions between pixel values) in any direction.  Begin by setting Radius and Center to 1.  Take the source field, emphasize edges by examining pixel values over a square array of pixels, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in comparisons compared to other pixels in the array.  Edges works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_edges_dlg.png

Preview: Apply Edges to Tile using a Radius of 1 and a Center of 2.

 

il_trans_img_tile_buildings_grayscale.png il_trans_img_tile_edges.png

Edges, Direction

Appears for single channel images.  Take the source field, emphasize edges by examining pixel values over a square array of pixels looking for changes along a direction at the specified angle, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in comparisons compared to other pixels in the array.  Direction Edges works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.  GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_direction_edges_dlg.png

Preview: Apply Direction Edges to Tile using a Radius of 1, a Center of 3, and an Angle of 0.27 radians, which is approximately 15.5 degrees.

 

il_trans_img_tile_buildings_grayscale.png il_trans_img_tile_direction_edges.png

The system emphasizes the edges where changes are found between pixel values when traversing the data in an approximately 15.5 degree angle.

Error Function

Take the error function (also called erf(z) ) of the source field and put it into the target field.

Exponent

The exponential function: Take e to the power of the source field and place result into the target field. For anything but small numbers in the source field such exponentiation very rapidly results in numbers larger than can be represented in most types and thus stores a NULL in the target.  

Fill

Appears for single channel images. Given a tile Value (often the same tile as the target field, to edit it "in place") and a Fill with value, fill all visible pixels in the tile with the specified value.  Useful for forcing all terrain elevations to a single, specified height.

 

il_trans_img_tile_fill_dlg.png

Preview: Apply Fill to Tile using a Fill with value of 0.

il_trans_img_tile_alps.png il_trans_img_tile_fill.png

The SRTM terrain height seen at left in a hill shaded view of the foothills of the Alps near Vicenza has missing pixels, seen in white, where the Space Shuttle radar scan did not acquire elevations.  The Fill template flattens the terrain to a single height of 0 in the preview.  Only visible pixels are altered.   See the Fill in Missing Pixels video.

Fill Missing

Appears for single channel images. Given a tile Value (often the same tile as the target field, to edit it "in place") and a Fill with value, fill all missing, that is invisible, pixels in the tile with the specified value.  Useful for filling all missing pixels to the same value.

il_trans_img_tile_fill_missing_dlg.png

Preview: Apply Fill Missing to Tile using a Fill with value of 500.

il_trans_img_tile_alps.png il_trans_img_tile_fill_missing.png

The SRTM terrain height seen at left in a hill shaded view of the foothills of the Alps near Vicenza has missing pixels, seen in white, where the Space Shuttle radar scan did not acquire elevations. The Fill Missing template fills all missing pixels with a single height of 500 in the preview.  Only missing pixels are altered. Visible pixels are not altered.

 

The TileFillMissing SQL Function used can accept xN values for filling values, but the template's Fill with box does not.   To use xN values, press the Edit Query button to launch in the Command Window the query that does the work for this template, enter the desired xN value into the query, and run the query.   See the Fill in Missing Pixels video.

Fill Missing Nearest

Appears for both multichannel images and single channel images. Given a tile Value (often the same tile as the target field, to edit it "in place") and a Radius value, fill each missing, that is invisible, pixel in the tile with the nearest visible pixel value found within the specified, radius. If no visible pixel is found within the specified radius, make no change to the missing pixel. Useful for filling all missing pixels to the value of a nearby pixel.

il_trans_img_tile_fill_missing_nearest_dlg.png

Preview: Apply Fill Missing Nearest to Tile using a Radius value of 5.

il_trans_img_tile_alps.png il_trans_img_tile_fill_missing_nearest.png

The SRTM terrain height seen at left in a hill shaded view of the foothills of the Alps near Vicenza has missing pixels, seen in white, where the Space Shuttle radar scan did not acquire elevations. The Fill Missing Nearest template fills all missing pixels with the nearest visible pixel found within a radius of 5 pixels.  If we had used a radius of 4, the large zone of missing pixels in the middle right of the original view would not have been completely filled in, since the missing pixels in the very center are more than 4 pixels away from the nearest visible pixel.   See the Fill in Missing Pixels video.

Floor

Put the rounded down integer value of the source field into the target field.

Floor down to Decimals

Put the value of the source field rounded up to the specified number of Decimal positions into the target field.

Fractional Part

Take only the decimal fraction portion of the source and put into the target field.

Fractional Part from Decimals

Take only the decimal fraction portion of the source beyond the specified number of Decimal positions and put into the target field.

Gamma Function

Put the gamma function for the source field into the target field.

Hyperbolic Arc Cosine

Put the hyperbolic arc cosine of the source field into the target field.

Hyperbolic Arc Sine

Put the hyperbolic arc sine of the source field into the target field.

Hyperbolic Arc Tangent

Put the hyperbolic arc tangent of the source field into the target field.

Hyperbolic Cosine

Put the hyperbolic cosine of the source field into the target field.

Hyperbolic Sine

Put the hyperbolic sine of the source field into the target field.

Hyperbolic Tangent

Put the hyperbolic tangent of the source field into the target field.

Hypotenuse

The great and ancient Pythagorean theorem: The square root of the sum of the squares of the two sides of a right triangle.  Save into the target the value of the hypotenuse taking two given source fields as DX and DY.

Limit

Appears for single channel images.  Limit the result at both the low end and also the high end, to no less than the limiting value in the At least field and also to no more than the limiting value in the At most field.  Save the Value field into the result,  unless that is below the At least field, in which case the At least field value is saved into the result, or unless that exceeds the At most field, in which case the At most field value is saved into the result.  Another way of looking at this is to take the Value field if it falls between the At least and At most fields, inclusive.   Yet another way is to consider simultaneously the At least field as the floor and the At most field the ceiling for what is taken from the Value field.

il_trans_img_tile_limit_dlg.png

Preview: Apply Limit to Tile using an At least value of 250 and an At most value of 300.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_limit.png

The terrain height display becomes limited at the low end to the At least value of 250 and at the high end to the At most value of 300.  The result is to extract varying terrain elevations from Value that are between 250 and 300, and to replace all other values with 250 for heights that were below the At least value and with 300 for heights that were above the At most value.  See the Know Your Limits video.

Limit High

Appears for single channel images.  Limit the result at the high end, to no more than the limiting value in the At most field.  Save the Value field into the result, unless that exceeds the At most field, in which case the At most field value is saved into the result.  Another way of looking at this is to take the minimum of the Value field or the At most field.  Yet another way is to consider the At most field the ceiling for what is taken from the Value field.

il_trans_img_tile_limit_high_dlg.png

Preview: Apply Limit High to Tile using an At most value of 300.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_limit_high.png

The terrain height display becomes limited at the high end to the At most value of 300.  Terrain elevation values that were above 300 have now been set to the high limit of 300.  See the Know Your Limits video.

Limit Low

Appears for single channel images.  Limit the result at the low end, to no less than the limiting value in the At least field.  Save the Value field into the result, unless that is below the At least field, in which case the At least field value is saved into the result.  Another way of looking at this is to take the maximum of the Value field or the At least field.  Yet another way is to consider the At lease field the floor for what is taken from the Value field.

il_trans_img_tile_limit_low_dlg.png

Preview: Apply Limit Low to Tile using an At least value of 300.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_limit_low.png

The terrain height display becomes limited at the low end to the At least value of 300. Terrain elevation values that were below 300 have now been set to the low limit of 300.  See the Know Your Limits video.

Log-gamma Function

The log-gamma function takes the natural logarithm of the gamma function for the source field and stores the result into the target field.

Logarithm

Put the base e logarithm (also called the natural logarithm) of the source field into the target field.

Major

Appears for single channel images.  Take the source field, for each pixel using a matrix of the given Radius to find the most frequently occurring value found within the pixels covered by the matrix, and place the result in the target field. If all values are different, use the lowest value. The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  This transform works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.

Maximum

Appears for single channel images.  Take the source field, for each pixel using a matrix of the given Radius to find the maximum value found within the pixels covered by the matrix, and place the result in the target field. The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  This transform works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.

Median

Appears for single channel images.  Similar to Blur but using the median of values and not the average as Blur does.  Take the source field, interpolate pixel values based on radius and center, using the median of pixel values over a square array of pixels, and place the result in the target field.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in averaging compared to other pixels in the array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  Median works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.    

 

il_trans_img_tile_median_dlg.png

 

Clicking into the Shape parameter allows us to choose the shape of the filter as a circle, cross or square, the default.

Square Shape

il_trans_img_tile_median_dlg_shape.png

 

Preview: Apply Median to Tile using a Radius of 10, a Center of 1, and the default Shape of square.  Caution: a Radius of 10 is OK for small images like those used in graphics arts, but unreasonably large for aerial photos and other geographic images.  GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_median.png

Cross Shape

il_trans_img_tile_median_dlg_shape_cross.png

 

Preview: Apply Median to Tile using a Radius of 10, a Center of 1, and a Shape of cross.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_median_cross.png

At the cost of introducing some blurriness, using a cross shape filter with Median is often used to remove artifacts from image processing similar to how a cross shape filter is used with Blur.

Circle Shape

il_trans_img_tile_median_dlg_shape_circle.png

 

Preview: Apply Median to Tile using a Radius of 10, a Center of 1, and a Shape of circle.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_median_circle.png

 

Using a circle shape for the filter tends to reproduce the "bokeh" effect when objects are seen through an out-of-focus effect., but with more simplified regions than with a circle shape filter in Blur.

 

Median with smaller radius is often used to eliminate noise pixels in an image.

 

il_trans_img_tile_ginevra_grayscale_noise.png il_trans_img_tile_median_nonoise.png

The image at left has some noise pixels, white and black pixels scattered about.   The image at right shows a preview of Median using a Radius of 1 and use of the square shape filter.  Using the cross shape filter might produce an even better effect.

 

Minimum

Appears for single channel images.  Take the source field, for each pixel using a matrix of the given Radius to find the minimum value found within the pixels covered by the matrix, and place the result in the target field. The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  This transform works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.

Modulo

The remainder (of a congruence) function: Take what is left over by the integral division of the source field by the given Divide by value and place into the target field.

Multiply

Multiply the two source fields and place the result into the target field.  Appears for single channel images as well.  Useful for increasing vertical scale in terrain elevation data.

il_trans_img_tile_multiply_dlg.png

Preview: Apply Multiply to Tile using a Multiply by factor of 2.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_multiply.png

The terrain heights become higher and more steep. From the above we see that palette and hill-shading effects are applied even during a preview.

 

Negate

Appears for single channel images. Multiply the source field by -1 and place the result into the target field.  

 

il_trans_img_tile_negate_dlg.png

Preview: Apply Negate to Tile.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_negate.png

Creates a photographic negative.

 

il_trans_img_tile_elevation_raster02.png  il_trans_img_tile_elevation_raster02_negate.png

 

With terrain elevation data, Negate turns hills into depressions.

 

Noise

Appears for single channel images. Place random noise values into pixels over the given range.

 

il_trans_img_tile_noise_dlg.png

Preview: Apply Noise to Tile using a Range of 60.

 

il_trans_img_tile_ginevra_grayscale.png il_trans_img_tile_noise.png

Power

Compute the source field to the power of the specified Power value and put the result into the target field. A Power of 2 is the source field squared while a Power of 3 is the source field cubed.

Power of 10

Compute 10 to the power of the source field and put the result into the target field.  If the source field has values 1, 2, 3,... the result of Power of 10 will be 10, 100, 1000,....   For anything but small numbers in the source field such exponentiation very rapidly results in numbers larger than can be represented in most types and thus stores a NULL in the target.  

Power of 2

Compute 2 to the power of the source field and put the result into the target field.  If the source field has values 1, 2, 3,... the result of Power of 2 will be 2, 4, 8,....   For anything but small numbers in the source field such exponentiation very rapidly results in numbers larger than can be represented in most types and thus stores a NULL in the target.  

Reciprocal Cube Root

Also known as the inverse cube root: Take 1 divided by the cube root of the source field and put the result into the target field.

Reciprocal Square Root

Also known as the inverse square root: Take 1 divided by the square root of the source field and put the result into the target field.

Round

Round a source field with a fractional part up or down to the nearest integer and put the result into the target field.

Round to Decimals

Round a source field with a fractional part up or down to the number of decimals specified by  Decimals and put the result into the target field.

Sharpen

Appears for single channel images.  Enhance contrast and edge detection by comparing pixel values within a square array of pixels. The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Center value is the weight to give the center pixel: a weight of 1 means not to emphasize it.  A weight of 5 means to give the center pixel's value five times the value in averaging compared to other pixels in the array.  Sharpen works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.  GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.

 

il_trans_img_tile_sharpen_dlg.png

Preview: Apply Sharpen to Tile using a Radius of 1 and a Center of 1.

 

il_trans_img_tile_st_peters_grayscale.png il_trans_img_tile_sharpen.png

 

il_trans_img_tile_elevation_raster02.png  il_trans_img_tile_elevation_raster02_sharpen.png

 

With terrain elevation data, Sharpen may appear to add detail but it does not.  It simply emphasizes contrasts between pixels that are already in the data.   Increasing Z for hill shading might give a better effect.

Sign

For a source field that is positive or negative put a 1 or -1 respectively into the target field.

Sine

Take the sine of the source field and put it into the target field.

Slope

Appears for single channel images. Treating the pixel values as heights to imply a surface, compute the inclination in degrees of the surface at the pixel's position and save as a pixel value from 0 to 90 . Compute the degree to which terrain slopes by comparing heights of a square array of pixels within a given radius. A larger Radius takes longer to calculate but averages out the changes in slope to a greater extent.  The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array.  Slope works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.     tech_yoshi_sm.png

 

Caution: As with the Aspect template, slight increases in Radius can cause disproportionately enormous increases in the computation time required.  Without a GPU a Radius of 3 is slow but tolerable because Manifold will run CPU parallel for better speed.   With a GPU, even incredibly large computations involving a Radius of 7 or even 8 are possible on a desktop machine, as Manifold will automatically GPGPU parallelize the aspect calculation.   Without a GPU, start with a Radius of 1 and then scale up slowly to see where patience ends.   As a practical matter, there is not much gain in accuracy of slope computation when increasing Radius beyond 5.

 

il_trans_img_tile_slope_dlg.png

Preview: Apply Slope to Tile using a Radius of 5.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_slope.png

The values resulting from Slope are no longer heights but are degrees of inclination, so all are colored within the blue range of the palette in use.  It makes little sense to apply hill shading to a raster display of aspect values.   We would remove hill shading and choose a different palette after applying Slope.

 

Square Root

Take the square root of the source field and put it into the target field.

Subtract

Subtract one source field from the other and put the result into the target field.  Appears for single channel images as well.  Useful for decreasing the level of terrain elevation data.

il_trans_img_tile_subtract_dlg.png

Preview: Apply Subtract to Tile using a Subtract value of 100.

 

il_trans_img_tile_elevation_raster.png il_trans_img_tile_subtract.png

The effect is the equivalent of lowering the terrain 100 units (in this case, feet).  From the above we see that palette and hill-shading effects are applied even during a preview.

Sum

Appears for single channel images.  Take the source field, for each pixel using a matrix of the given Radius to find the sum of values found within the pixels covered by the matrix, and place the result in the target field. The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter:  A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a square, a cross, or a circle.  This transform works on a single channel: tiles should be a single channel, such as uint8, and not multichannel, such as uint8x3.   GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.

Tangent

Take the tangent of the source field and put it into the target field.

Trace Areas

Using values in a raster image, create a drawing with vector areas covering regions of similarly-colored, that is, similarly-valued, pixels. Each area will also have a Value attribute field giving the pixel value for which it was created.  The template can create areas whether values for pixels are intended as colors or as elevation or other values.  

 

The Similarity factor gives the range within which pixel values will be considered to be in the same classification.  A Similarity of 10 would group values of 11, 14, and 18 together in one group and values of 20, 23 and 27 in a different group.  The default value of 1 for Similarity means to treat pixels within the same integer values as unique.   A value of 0 for Similarity would treat each unique pixel value found as a separate classification (using 0 is often a mistake given there might not be an intended difference between close pixel values such as 1.00003 and 1.000031).

 

The Decompose to shapes option, when checked (default), will automatically decompose all areas for the same class of color into separate area objects.   Unchecking this option will result in the creation of a single, multibranched area object for each class.  This makes for a simpler results table and the ease of selecting all like areas with a single Ctrl-click, but when starting with larger raster data it can result in very large areas, consisting of millions of coordinates to cover all of the branches.

 

il_trans_img_trace_areas01.png

 

We start with a raster image where a single number for each pixel, that is, a single channel, is intended to be an index number for a palette image.   Each number indicates a land use code for that pixel.   The image above is colored with a palette to represent visually the content of the image.   For example, it uses green colors for pixels where the classification code is intended to mean forest.  The image is created from a tile field in the table called Tile1.  Approximately 30 different colors are used, to represent 30 different land uses in the region.

 

il_trans_img_trace_areas_dlg01.png

 

Preview: Apply Trace Areas to Tile1 using a Similarity of 0.

 

il_trans_img_trace_areas02.png

 

The preview shows the area objects that will be created in the new drawing.  Press Add Component to create the new drawing.

 

il_trans_img_trace_areas03.png

Dragging and dropping the new drawing into the map, we can color it using Style to show the areas it contains.

Trace Areas and Heights

The Trace Areas template can be used with data sets that show terrain elevations to create results similar to using the Contour Areas template.

 

il_trans_img_trace_areas04.png

 

Consider the elevation data set used in examples, as seen above.

 

il_trans_img_trace_areas_dlg02.png

 

Choosing Trace Areas with a Similarity of 1 will attempt to create an area for each region of pixels that has a different integer bounded value.

 

il_trans_img_trace_areas05.png

 

That creates so many areas so densely packed that the preview is a mass of blue preview color.

 

il_trans_img_trace_areas_dlg03.png

 

Using a Similarity of 10 tells the template to create an area that covers each swath of pixels within a range of 10, that is, heights from 0 to 10, 10 to 20, and so on.

 

il_trans_img_trace_areas06.png

 

From the preview we can see that results in a more useful set of areas.   We press Add Component to create the new drawing.

 

il_trans_img_trace_areas07.png

 

Formatting the drawing we can see the effect is similar to creating contour areas.

 

See the Example: Trace Vector Areas from Raster Pixels  topic as well as the Trace Vector Areas from Raster Pixels  video.

Truncate

Take the integer part of the source field, discarding any decimal fraction part, and put the result into the target field.

Truncate to Decimals

Take the integer part of the source field as well as any decimal fraction up to the specified number of Decimal places, discarding any decimal fraction part beyond, and put the result into the target field.

 

Notes

Why a GPU parallelism limit to radius of 8 or less? - Transforms using a Radius parameter to set the size of the filter matrix applied typically are limited to a radius of 8 or less for GPGPU parallelism, switching to CPU parallelism at a radius of 9 or greater.   That limitation allows more flexible use of a greater range of GPU cards.  Some cards, perhaps older cards or lower cost cards, may have limited memory or earlier generation GPU chips, but they nonetheless can provide very many cores for GPGPU parallel computation.  Manifold makes it possible to use such cards effectively for GPGPU parallelism.   

 

A radius of 8 implies a 17x17, 289-cell matrix, an absurdly huge and almost always an excessively large choice for matrix size.  A radius of 9 or above may indicate a conceptual error or workflow error.   At the same time, use of a radius of 9 or above requires so much GPU-accessible memory that such tasks fit into fewer and fewer cards, even if performance-reducing methods are adopted.   Given a choice between assuring a wide range of GPU cards will always work well, or restricting GPU choice to allow practices that are probably wrong in any event, Manifold chooses to support a wider range of GPU cards, placing the current switch to CPU parallelism at a radius of 9.  That may change as CUDA editions evolve.

 

Everything Math - For a handy reference to anything in mathematics, see the Wolfram MathWorld site.  Thank you, Wolfram!

 

A guy walks into a bar and asks for 1.014 root beers.  The bartender says, “I’ll have to charge you extra, that’s a root beer float”.  So the guy says, “In that case, better make it a double.”

 

Why do programmers confuse Halloween with Christmas?  Because OCT 31 = DEC 25.

See Also

Contents - Transform

 

Transform Options

 

Transform Templates

 

Transform Templates - Drawings

 

Transform: Center and Centroids

 

Transform: Escape Templates

 

How Matrix Filters Work

 

Example: Import DDF SDTS DEM Raster File

 

SQL Example: Process Images with 3x3 Filters -  Shows a step-by-step example of developing an SQL query that takes a query written by the Edit Query button and then modifies that query into a general purpose query that can apply any 3x3 filter.   This makes it easy to use matrix filters we find on the web for custom image processing.   We extend the query by using parameters and adding a function, and then show how it can be adapted to use a 5x5 filter.

 

SQL Example: Process Images using Dual 3x3 Filters  - A continuation of the above topic, extending the example query to utilize two filters for processing, as commonly done with Sobel and Prewitt two filter processing.

 

SQL Example: Process RGB Images using Matrix Filters - A continuation of the above two topics, extending the example query to process three channel, RGB images.

 

SQL Example: Create NDVI Displays - How to create a query that creates an NDVI display from a four-band NAIP image, with tips and tricks on how to copy and paste existing information to get the result we want.

 

Example: Enhance Terrain with Curvatures -  We enhance a terrain showing Crater Lake, Oregon, by using mean curvature calculation to bring out details.   The example uses a 4 GB project containing a large terrain elevation surface.  Using a point-and-click dialog with no SQL, we apply automatic CPU parallelism and GPU parallelism to absolutely crush a task in two and a half minutes that would take non-parallel software days.