Sir,
Quantitative data on the surface profile of a snowpack are required For a number of applications, including detailed hydrological modelling and modelling the interaction of electromagnetic radiation with the surface. The availability of low-cost digital cameras allows these to be obtained with substantial savings in time.
Data were acquired during a short field trip to Scotland in mid-March 1998, as part of a project to validate synthetic-aperture radar observations of wet snow. At a number of test sites, a portable back plate (constructed from 1mm gauge aluminium sheet, 1 m long and 20 cm wide, hinged so it could fold to 50 cm X 20 cm, and painted matte black) was inserted vertically into the snow and photographed using a pocket-sized digital camera that recorded images as arrays of 640 x 480 pixels.
Figure la shows an image in which the full 1 m width of the back plate is visible. The image has been cropped to a size of 600 x 84 pixels and has been converted from 24 bit colour to an 8 bit grey scale. Since the back plate subtends a width of 581 pixels in this image, each pixel represents a width of 1.72 mm.
It can be seen from Figure la that there is strong contrast between the snow and the back plate: pixels corresponding to snow have grey-scale values of 162 ± 12, whereas those for the back plate have values of 6 ± 8. The discontinuity in grey-scale values between the back plate and the snow is extremely sharp: over a single pixel, the grey-scale value changes by typically 30 to 40, and over two pixels it changes by about 100. The snow surface is thus very well defined in the image.
To obtain surface roughness data from Figure la, it must be processed to generate a set of (x,y)coordinates corresponding to the snow edge.The image-processing operations
that are required are not complicated and can be performed by a large number of image-processing programs. The following analysis was performed on a Macintosh computer using the public domain NIH Image program, developed at the U.S. National Institutes of Health and available on the internet at http://rsb.info.nih.gov/nih-image/. Two major advantages of this program are its comparatively small size and the fact that it has a macro programming language that allows the user to define reasonably complex processing algorithms and to export numerical data.
The algorithm adopted here involves the following steps:
-
1. Thresholding, followed by conversion to a binary image.
-
2. Edge detection.
-
3. Skeletonization.
-
4. Digitizing.
Each of these steps is discussed below.
Thresholding and conversion to binary form
This step converts the grey-scale image to black (back plate, value 0) and white (snow, value 255). All grey-scale values below a suitable threshold arc set to zero and all those above the threshold are set to 255. The threshold value can be judged by eye or simply set half-way between the mean grey-scale value for snow and for the back plate.The choice is not very critical, since the transition is very sharp. Figure lb shows the result of applying a threshold value of 171.
Edge detection
The Sobel edge-detection operation is next performed on the binary image. In this operation, the x and y components of the image gradient are calculated using convolution filters having the following 3 x 3 kernels:
The two components are then squared and added, and the square root is taken. This value is truncated to the range from zero to 255, again resulting in a binary image. However, the consequence of using a 3x3 convolution filter is that the "edge region", defined as a result of this operation, has a width that can exceed 1 pixel. This is shown by Figure lc.
Skeletonization
Skeletonization, or medial-axis transformation, is an iterative method for reducing an object in a binary image to a representative "skeleton" a single pixel wide. Figure Id shows the result of skeletonizing the binary image represented by Figure le. The detected edge has been superimposed on the original image to show that it conforms to the position that would be determined by eye.
Digitizing
The "edge image" resulting from skeletonization is multiplied by a vertical raster, i.e. an image having the same dimensions but in which the grey-scale value of a pixel is either 1, if the pixel's x coordinate is odd, or zero if it is even. This reduces the image to a set of disconnected pixels, as shown in Figure le. These points can then be scanned using NIH image's "measure panicles” function, which returns the x and y coordinates of each connected object found in the image and hence reports the position of each pixel in Figure le. This set of values can then be exported to another program for statistical analysis.
The image-processing operations described above can actually be performed in 2 or 3 min, making use of a number of operations provided within the functionality of the NIH Image program and a macro that is supplied with the software. At this point, the data can be exported to a spread sheet or statistical analysis package. The method described represents a major time-saving when compared with digitizing conventional photographs.