Design and FPGA Implementation of a Perimeter Estimator

advertisement
Design and FPGA Implementation of a Perimeter Estimator
K Benkrid and D Crookes
School of Computer Science, The Queen’s University of Belfast, Belfast BT7 1NN, UK
(K.Benkrid, D.Crookes)@qub.ac.uk
Abstract
The measurement of perimeters, areas, centroids and other shape related parameters of planar objects from
their digitised images is an important task in computer vision systems. In this paper, we present a
formulation of a simple and relatively accurate algorithm for estimating an object’s perimeters which is
particularly suited to hardware implementation. Details of the algorithm’s implementation on a Xilinx
XC4000 FPGA are also given. The resulting circuit is very compact and achieves a throughput of 85
Million pixels per second, which corresponds to 324 frames per second for 512 x 512 images.
1. Introduction
Measurement of perimeters, areas, centroids and other shape related parameters of planar objects
is an important task in industrial computerised visions systems [1]. Such systems perform shape
analysis on digitised images, which result from the projection of the object on a square grid of
sensor array [2]. The resulting images’ pixels (see Figure 1.b) are binary depending on whether
the pixel centre belongs to the object or not [3].
(a)
(b)
Stepwise boundary
(c)
Figure 1. (a) Original object shape (b) Object shape after digitisation (discrete form)
(c) object contour with its stepwise boundary
We define the contour of a digitised object as a sequence of boundary pixels of the object (see
Figure 1.c). This contour is often represented by a chain code [4]. Another view of the object
contour is the line between the object pixels and the background (the ‘crack’). Encoding this line
(a sequence of horizontal and vertical pixel edges) yields what is usually called the crack code of
the digitised object boundary [1] (identified as the bold line in Figure 1.c). Clearly the length of
the latter contour is greater than the perimeter of the original object, especially for shapes with
many corners: hence the problem of finding an efficient and accurate perimeter estimator.
One way of estimating the perimeter of a digitised object [5] [6] is to measure the number
of vertical and horizontal cracks, and perform subsequent adjustments (e.g. take the number of
corners into consideration). This solution is not attractive for hardware implementation.
Another approach is to approximate the real object boundary more accurately, and
perform subsequent measurements on this approximated contour [7]. In particular, it is common
to represent the contour as a line passing through the centre of boundary pixels – i.e. as a
sequence of horizontal, vertical and diagonal links[8]. Area measurements must of course take
this into account, as this approach effectively shaves off a little of each boundary pixel of the
object. Assuming square pixels, the perimeter is then estimated by:
Perimeter = No. of horizontal & vertical links + (No. of diagonal links *
2)
In the following, we will present an alternative formulation of this algorithm which is particularly
suited to FPGA implementation.
2. The formulation of the algorithm
Consider a binary image ‘Im1’ containing only one object. Before measuring its perimeter, we
need first to find the perimeter. A simple method for identifying the boundary pixels is to perform
an ‘Erode’ operation on the image. The boundary pixels are those which were eroded, and can be
found by subtracting the result from the original image, as shown in Figure 2.
As stated earlier, a count of the number of pixel edges (the cracks) does not give an
accurate measure of the perimeter (because of corners and diagonal edges). Instead, we will take
the contour as a sequence of links between the centres of adjacent boundary pixels (see Im2 in
Figure 2). However, rather than focus on the links (each of which straddles two boundary pixels),
we will consider the individual contribution of each boundary pixel. This contribution depends on
the path which the contour follows through the pixel. Assuming a one-pixel wide perimeter, and
an aspect ratio of 1.0 (i.e. square pixels), we can classify each edge pixel’s contribution to the
perimeter into one of the following categories (or any of their rotations) [9]:
(a)
and
(b)
and
(c)
and
in which case the contribution of the pixel is C = 1.
in which case the contribution of the pixel is C =
2.
in which case the contribution of the pixel is C = (1+ 2 )/2.
Im1
Input image Im1
Erode(Im1)
Minimum
~
0
~
0
0
0
~
0
~
Erode
Neighbourhood
operation
Erode(Im1)
Im1
Image-Image
subtraction
Im2 = Im1-Erode(Im1)
Approximated
boundary
Im2 = Im1-Erode(Im1)
Figure 2. An edge finding algorithm for binary images
The perimeter is then given by:
Perimeter
= No. of (a) pixels * 1
+ No. of (b) pixels* 2
+ No. of (c) pixels * (1+
2 )/2
(Equation 1)
One way of classifying the contribution of edge pixels (assumed to be ‘1’ against a background of
‘0’s) is to convolve the whole binary image ‘Im2’ with the following window:
T = Im2 <convolve>
10
2
10
2
1
2
10
2
10
The result of this convolution at each pixel position enables the category of the corresponding
edge pixel to be deduced:
Result (T[i,j])
category
5 or 15 or 7 or 25 or 27 or 17
(a)
13 or 23
(c)
21 or 33
(b)
anything else
no contribution
Table 1. Classification of different convolution pixel results
The make up of these result pixels is shown in Figure 3.
T=5
T=5
T=5
T = 15
T=7
T = 25
T = 27
T = 17
(a)
T = 13
T = 13
T = 23
(b)
T = 21
T = 21
T = 33
(c)
Figure 3. Different possibilities for edge segments
The perimeter will then be given by:
Perimeter
=
+
+
count(T=5,15,7,25,27 or 17) * 1
count(T=21 or 33) Pixels* 2
count(T=13 or 23) * (1+ 2 )/2
For hardware implementation purposes, the coefficients will be approximated in binary to eight
binary places as follows:
1 = 1.000000002, (1+ 2 )/2  1.001101012 and 2  1.011010102.
A block structure of the whole operation is given by Figure 4.
Input image Im1
Additive -Minimum
~
0
~
0
0
0
Erode
~
0
~
Neighbourhood
operation
Erode(Im1)
Im1
Image-Image
subtraction
Mult-Accumulate
(convolution)
10
2
10
2
1
2
10
2
10
Im2 = Im1-Erode(Im1)
Neighbourhood
operation
T
T = 5, 15, 7, 25,
17 or 27?
Binary image
Bin1
T = 13 or 23?
T = 21 or 33?
Binary image
Bin2
A1
Binary image
Bin3
A22
O = A1 * 1 + A2 *
A3
2
+ A3 * (1+
)/2
O
2
Im3 = Bin1 * 1 + Bin2 *
2
+ Bin3 * (1+
Global
accumulation
Perimeter =  Im 3[i, j ]
i, j
Figure 4. A block diagram of the proposed perimeter estimator
)/2
3. FPGA implementation
The above algorithm has been implemented on Xilinx XC4036EX-2 series [10] which consists of
a grid of 36x36 CLBs. Both ‘Erode’ and convolution 3x3 neighbourhood operations store two
lines of data on chip in order to supply each image pixel only once to the FPGA. Line buffers are
implemented efficiently using the distributed synchronous RAMs and a simple address counter.
Each CLB can hold up to 34 bits (i.e. pixels). Since the input of both operations is a binary
image, large line buffers can be readily stored on the chip.
The maximum possible result pixel value from the convolution operation is theoretically
49, which occurs when all the image pixel values within the 3x3 neighbourhood are 1. Hence, the
output pixel word length is 6 (49 = 1100012).
Each of the three ‘=’ units will output ‘1’ whenever its input (the convolution result) is
one of a set of particular constants (e.g. {13, 23}). Since the output of the convolution is 6 bits
wide, this implements a 6-input boolean function which can be implemented easily using the
XC4000 CLB’s look up tables. The corresponding area is hence independent of the number of
constants in any of the sets. The unit that implements Equation 1 receives 3 binary inputs and will
output the proper approximated coefficient values (for 1, 2 or (1+ 2 )/2) in bit parallel. This
can be seen as a multi-output boolean function that can again be easily implemented using the
XC4000 CLB’s look up tables. Finally, these pixel contributions are serially accumulated. The
accumulation is in bit parallel and is implemented using dedicated fast carry logic.
The whole circuit has been generated from a high level Hardware Description Notation
developed at Queen’s University called HIDE [11, 12]. A floorplan of the resulting architecture
for 512x512 input binary image on XC4036EX-2 is presented in Figure 5. The whole circuit
occupies 199 CLBs. This is 15% of the whole chip area. The remaining 85% is available to
implement other operations on the digitised input image (e.g. initial threshing if necessary, or area
centroid, or compactness estimation). Timing simulation shows that the circuit can run at 85MHz
which gives 85 Million pixel per second throughput.
Erode Convolution Accumulator
Input
Output
Line buffers
Figure 5. Physical configuration of ‘Perimeter estimator’ operation on XC4036EX-2
4. Conclusion
In this paper, we have presented a hardware implementation of an algorithm for perimeter
estimation. The standard algorithm has been reformulated to suit hardware implementation, and
offers a simple and relatively accurate way of estimating object perimeters. The resulting FPGA
implementation on a Xilinx XC4000 is very compact and achieves a maximum throughput of 85
Million pixels per second. This makes a suitable component for applications such as real time
object recognition. As it stands, there are several limitations on its application (e.g. only one
object in the image, the object must not have any holes). In practice, full application of the
presented unit for object recognition – perhaps based on measuring compactness – would need
surrounding components, e.g. to remove noise, and to calculate area. These can be incorporated
into a hardware solution without significant difficulty.
5. References
[1]
Rosenfeld A, and Kak A C, Digital Picture Processing. New York: Academic, pp. 310314, 1976.
[2] Rink M, “A computerized quatitative image analysis procedure for invistigating features
and an adapted image process”, J. Microscopy, vol. 107, pp. 267-286, 1976.
[3] Kulpa Z, “Area and perimeter measurement of bolbs in discrete binary pictures”,
Computer Graphics Image Processing, vol. 6, pp. 434-451, 1977.
[4] Freeman H, “Computer processing of line drawing images”, Comput. Surveys, vol. 6, pp.
57-97, 1974.
[5] Profitt D and Rosen D, “Metrication errors and coding efficiency of chain coding schemes
for the representation of lines and edges”, Computer Graphics Image Processing, vol. 10,
pp. 318-332, 1979.
[6] Koplowitz J and Bruckstein A M, “Design of Perimeter Estimators for Digitized Planar
Shapes”, IEEE transactions on Pattern Analysis and Machine Intelligence. Vol. PAMI(11),
pp. 611-622, 1989.
[7] Montanari U, “A note on minimal length polygonal approximation to a digitized contour”,
Communications ACM, vol. 13, pp. 41-46, 1970.
[8] Castleman K R, ‘Digital Image Processing’, Prentice Hall, 1996.
[9] Crookes D, “Image Processing”, Course Notes, School of Computer Science, The Queen’s
University of Belfast.
[10] http://www.xilinx.com/partinfo/4kconf.pdf
[11] Crookes D, Alotaibi K, Bouridane A, Donachy P and Benkrid A, ‘An Environment for
Generating FPGA Architectures for Image Algebra-based Algorithms’, ICIP98, Vol.3, pp
990-994. 1998.
[12] K Benkrid, D Crookes, A Bouridane, P Corr and KAlotaibi, ‘A High Level Software
Environment for FPGA Based Image Processing’, Proceedings IPA 99’, Manchester,
pp.112-116, 1999.
Download