Full Download Machine Vision Algorithms in Java Techniques and Implementation Whelan Paul F Molloy Derek PDF
Full Download Machine Vision Algorithms in Java Techniques and Implementation Whelan Paul F Molloy Derek PDF
com
https://textbookfull.com/product/machine-vision-
algorithms-in-java-techniques-and-implementation-
whelan-paul-f-molloy-derek/
https://textbookfull.com/product/exploring-beaglebone-tools-and-
techniques-for-building-with-embedded-linux-2nd-edition-derek-molloy/
textbookfull.com
https://textbookfull.com/product/distributed-virtual-worlds-
foundations-and-implementation-techniques-using-vrml-java-and-corba-
diehl-stephan/
textbookfull.com
https://textbookfull.com/product/numerical-algorithms-methods-for-
computer-vision-machine-learning-and-graphics-1st-edition-justin-
solomon/
textbookfull.com
https://textbookfull.com/product/the-chemistry-and-biology-of-
nitroxyl-hno-1st-edition-fabio-doctorovich/
textbookfull.com
https://textbookfull.com/product/urban-shrinkage-industrial-renewal-
and-automotive-plants-andreas-luescher/
textbookfull.com
https://textbookfull.com/product/essential-docker-for-asp-net-core-
mvc-1st-edition-adam-freeman/
textbookfull.com
https://textbookfull.com/product/world-history-101-tom-head/
textbookfull.com
Biographies and Careers throughout Academic Life 1st
Edition Jesús F. Galaz-Fontes
https://textbookfull.com/product/biographies-and-careers-throughout-
academic-life-1st-edition-jesus-f-galaz-fontes/
textbookfull.com
Machine Vision Algorithms in Java
Springer-Verlag London Ltd.
Paul F. Whelan and Derek Molloy
Machine Vision
Algorithms in Java
Techniques and Implementation
Springer
Paul F. Whelan, BEng, MEng, PhD
Derek Molloy, BEng
Vision Systems Laboratory, School of Electronic Engineering, Dublin City
University, Dublin 9, Republic of lreland
The use of registered names, trademarks etc. in this publication does not imply, even in the absence of
a specific statement, that such names are exempt from the relevant laws and regulations and therefore
free for general use.
The publisher makes no representation, express or implied, with re gard to the accuracy of the informa-
tion contained in this book and cannot accept any legal responsibility or liability for any errors or omis-
sions that may be made.
Typesetting: PostScript files by authors
For many novices to the world of machine vision, the development of auto-
mated vision solutions may seem like a relatively easy task as it only requires a
computer to understand basic elements such as shape, colour and texture. Of
course this is not the case. Extracting useful information from images in a lab-
oratory environment is a difficult process at the best of times, but to develop
imaging systems with the reliability and repeatability required for industrial,
medical and associated imaging applications increases the complexity of the
design task. The aim of this book was to produce a self contained software
reference source for machine vision designers which takes such issues into ac-
count. To that end Machine Vision Algorithms in Java contains explanations
of key machine vision techniques and algorithms, along with the Java source
code for a wide range of real-world image processing and analysis functions.
A number of texts have been written over the last few years, which have
focused on implementing image processing and to a lesser extent image anal-
ysis functions, through coded examples (i.e. for a range of software languages
and environments). So, why do we need another book on the subject? Firstly,
Machine Vision Algorithms in Java concentrates on examining these issues
from a machine vision perspective. It focuses on the image analysis and gen-
eral machine vision design task, as well as discussing the key concepts relating
to image processing. In addition, we have made available (via the Internet) a
comprehensive machine vision development environment, Neat Vision, which
allows the algorithms and techniques discussed throughout this book to be
implemented by the reader.
The range of machine vision techniques and applications has grown sig-
nificantly over the last decade and as such it would be difficult for a single
text to cover them all. Therefore, this book concentrates on those algorithms
and techniques that have found acceptance within the machine vision com-
munity. As is in the nature of putting a book like this together, certain areas
receive greater attention reflecting our experience and the nature of our own
research.
This book has grown from a number of different elements. Many of the
ideas outlined are based on the postgraduate modules Computer and Machine
Vision (EE544) and Object-oriented Programming (EE553) developed by Dr.
Paul Whelan and Derek Molloy respectively. Both modules are available in
Vlll Preface
traditional form and via the Internet as part of Dublin City University's
Remote Access to Continuing Engineering Education (RA CeE) initiative l .
Another key element was the development of Neat Vision, a Java based
visual programming environment for machine vision. It provides an intuitive
interface which is achieved using a "drag and drop" block diagram approach,
where each image analysis/processing operation is represented by a graphical
block with inputs and outputs that can be interconnected, edited and deleted
as required. NeatVision was designed to allow the user to focus on the ma-
chine vision design task rather than concerns about the subtlety of a given
programming language. It allows students of machine vision to implement
their ideas in a dynamic and easy to use way, thus reinforcing one of the key
elements of the educational experience, interaction. In conjunction with the
publication of this book a fully functional 'shareware' version of NeatVision
has been made available via the Internet 2 .
We have also included an introduction to Object-oriented Programming
(OOP) and the Java programming language, with particular reference to
its imaging capabilities. This was done for those readers who may be un-
familiar with OOP and the Java programming language. It includes details
relating to the design of a Java based visual programming environment for
machine vision along with an introduction to the Java 2D imaging and the
Java Advanced Imaging (JAI) Application Programming Interface (API). A
wide range of illustrative examples are also included.
Having successfully digested the ideas outlined in this book the reader
will:
that it will be understood not only by specialists familiar with the field, but
also by those who are less familiar with the topic. Care has also been taken to
ensure that we have provided adequate references to supporting work. This
should aid readers who wish to examine the topics covered in more detail.
The organisation of the book is as follows. Chap. 1 introduces the general
field of machine vision systems engineering. Chap. 2 outlines the key concepts
behind the Java programming language. As well as giving a brief history, de-
scription and layout of the Java language, this chapter outlines the properties
of Java that make it useful for image processing and analysis. The purpose of
Chap. 3 is to detail some of the basic techniques and algorithms used in the
development of machine vision systems. Key elements of the image process-
ing and analysis functions introduced in this section are also implemented in
Java and form the basis of the NeatVision visual programming environment.
Chap. 4 follows on from this basic introduction by examining mathemati-
cal morphology, a key framework in which many machine vision algorithms
can be placed. Chaps. 5 and 6 expand our discussion of imaging techniques
to include key elements of texture and colour image analysis. Chap. 7 de-
tails the design and implementation of the Neat Vision visual programming
environment. Appendix A outlines the graphics file formats that are used
by NeatVision and Appendix B details the NeatVision imaging Application
Programming Interface (API) specification. Finally, Appendix C summarises
the range of operators available in the NeatVision machine vision software
development environment. A range of sample applications implemented in
NeatVision are highlighted throughout the book.
For updates, corrections, colour images and sample visual programmes
please refer to the book web site at http://www.eeng.deu.ie;- j avamv /.
mvaj©eeng.deu.ie
Acknowledgments
This book has benefited from the comments and suggestions of a wide range
of people, including our colleagues with whom we have had many fruitful
discussions and collaborations. Numerous students have also contributed,
both directly and indirectly. The most important contributions coming from
members of the Vision Systems Laboratory (VSL) at Dublin City Univer-
sity (DCU), namely Ovidiu Ghita, Alexandru Drimbarean and Pradeep PP.
We would particulary like to express our gratitude to Robert Sadleir (VSL)
for a fruitful collaboration in the development of Neat Vision. Robert also
contributed to our discussion on the Neat Vision development environment,
specifically in Chap. 7. We would also like to thank all the members of the
VSL for their comments on the various drafts of this book.
We would like to thank Prof. Charles McCorkell, Head of the School
of Electronic Engineering, DCU, for his support of the VSL and this book
project. We would also like to acknowledge all our academic colleagues for
our many discussions on computer and machine vision, especially Prof. Bruce
Batchelor (machine vision systems engineering) and Dr. Pierre Soille (math-
ematical morphology). We would like to acknowledge Xuemei Zhang (De-
partment of Psychology, Stanford University), Mark Graves (Spectral Fusion
Technologies) and Tim Carew (Technology Systems International) and thank
them for their permission to use some of the material cited in this book.
Special thanks are due to Nicholas Pinfield and Oliver Jackson of Springer-
Verlag for their commitment to this book and maintaining its schedule. Ma-
chine Vision Algorithms in Java: Techniques and Implementation was pre-
pared in camera-ready form using the IbTEX text processing environment and
Paint Shop Pro image editing software.
Finally, the authors would like to thank their families for their constant
support and encouragement during this project. We would like to thank the
readers in advance for comments and suggestions aimed at improving and ex-
tending the present book and its associated NeatVision software. Any errors,
of course, remain our own responsibility.
XII Acknowledgments
Notice
Neat Vision and its associated materials are copyrighted © 2000, by Paul
F. Whelan. The software is presented "as is". While every reasonable effort
has been made to ensure the reliability of this software, NeatVision and the
associated algorithms outlined in this book are supplied for general reference
only and should not be relied on without further specific inquiry. Neat Vision
may be downloaded, stored on a hard drive or other storage device, with the
following restrictions and exceptions:
Trademarks
• Sun, Sun Microsystems, Solaris, Java and all Java-based trademarks are
trademarks or registered trademarks of Sun Microsystems, Inc. in the
United States and other countries.
• Netscape and Netscape Navigator are registered trademarks of Netscape
Communications Corporation in the United States and other countries.
• Microsoft, Windows, Windows NT and/or other Microsoft products refer-
enced herein are either trademarks or registered trademarks of Microsoft
Corporation.
• IBM is a registered trademark of IBM Corporation in the United States
and other countries.
• Paint Shop Pro is a registered trademark of Jasc Software, Inc.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Contents
2. Java Fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 21
2.1 The History of Java ..................................... 21
2.1.1 What Makes Java Platform Independent? ........... 22
2.1.2 The Just-In-Time Compiler ........................ 22
2.1.3 The Sun Java Software Development Kit (Java SDK). 23
2.2 Object-oriented Programming. . . . . . . . . . . . . . . . . . . . . . . . . . .. 23
2.2.1 Encapsulation.................................... 24
2.2.2 Classes.......................................... 24
2.2.3 Objects......................................... 25
2.2.4 Inheritance...................................... 25
2.2.5 Polymorphism................................... 27
2.2.6 Abstract Classes ................................. 27
2.3 Java Language Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 28
2.3.1 Variables........................................ 28
2.3.2 Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 28
2.3.3 Java Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 29
2.3.4 Java Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 29
2.3.5 Java Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 29
2.3.6 The super and this Keywords. . . . . . . . . . . . . . . . . . . .. 30
2.3.7 Java Arrays ..................................... 31
XIV Contents
The purpose of this chapter is to introduce the reader to the basic principles of
machine vision. In this discussion the differences between computer, machine
and human vision are highlighted. In doing so, we draw attention to the key
elements involved in machine vision systems engineering. While this book
concentrates on the software aspects of the design cycle, this task cannot be
taken in isolation. Successful application of vision technology to real-world
problems requires an appreciation of all the issues involved.
This chapter is aimed at readers with minimal prior experience of machine
vision and as such more experienced readers will find most of this material
familiar. We also briefly introduce the reader to the concepts behind the
Neat Vision visual programming environment. This is discussed in more detail
in Chap. 7.
"There is more to machine vision than meets the eye!" (Batchelor &
Whelan 1994a)
subset of the general systems engineering task. The formal definition 1 of ma-
chine vision put forward by the Automated Vision Association (AVA) refers
to it as:
Image Analysis
Image Processing
Image Representation
Image Understanding
driven approaches is that simpler and perhaps more elegant solutions may be
overlooked. The human vision system is qualitative in nature, dealing with
a broad range of imaging tasks in varying conditions. The human system
can pick out a familiar person in a crowded room, but would find it difficult
to give the exact dimensions of that person. Machine vision On the other
hand is quantitative, i.e. it can deal with making precise measurements at
high speed, but lacks the key elements of the human vision system. Machine
vision systems are good at repetitive tasks and provide fast and reliable de-
cision making. If a human operator was to examine a colour web material
over a shift, they would find it difficult to detect a subtle colour change due
to the human's vision process ability to adapt to such gradual changes. The
fact that the human vision process is prone to subjective considerations such
as fatigue and boredom, which interfere with consistent evaluations, must
also be taken into consideration (these can be reliably handled by a machine
vision system).
Machine vision systems for industry first received serious attention in the
1970s (Parks 1978), although the proposal that a video system be used for
industrial inspection was first made in the 1930s. Throughout the early 1980s,
the subject developed slowly, with a steady contribution being made by the
academic research community, but with only limited industrial interest being
shown. In the mid-1980s there was serious interest being shown in vision
systems by the major automobile manufacturers, although this was followed
by a period of disillusionment with a large number of small vision companies
failing to survive. Interest grew significantly in the late 1980s and early 1990s,
due largely to significant progress being made in making fast image processing
hardware available at a competitive price. Throughout this period academic
workers have been steadily proving feasibility in a wide range of products,
representing all of the major branches of manufacturing industry.
Machine vision systems nOw appear in every major industrial sector, in-
cluding such areas as electronics (PCB inspection, automatic component
recognition), car manufacturing (inspection of car bodies for dents, dimen-
sional checking), food (inspection and grading of fruit and vegetables, inspec-
tion of food containers) and the medical industries (tablet quality control,
detection of missing items in pharmaceutical packets). The main application
areas for industrial vision systems occur in automated inspection and mea-
surement and robotic vision. Automated visual inspection and measurement
systems have, in the past, tended to develop faster. In fact, quality control
related applications such as inspection, gauging and recognition currently ac-
count for well over half of the machine vision market. This has been mainly
due to the lower cost and the ease of retrofitting such inspection systems onto
existing production lines, compared to the large capital investment involved
in developing a completely new robotic work cell and the extra uncertainty
and risks involved in integrating two new complex technologies. As manufac-
turing technology becomes more complex, there is a growing requirement to
4 1. An Introduction to Machine Vision
integrate the inspection process more closely with the overall manufacturing
process (McClannon et al. 1993). This moves the application of automated
inspection from a quality control to a process control role, that is from defect
detection to defect prevention. The reader is referred to Batchelor & Whelan
(1994b), Chin (1988), Chin & Harlow (1982), Davies (1996) and Freeman
(1987) for further details on a wide range of industrial implementations of
machine vision systems.
As well as reducing scrap and rework costs, product quality can also be
improved by using vision to aim for a higher quality standard. Machine vision
can be used to determine the cause of "abnormal situations" and provide early
warning for potential hazards on a production line, for example detecting a
warped metal plate before it is fed into a stamping press and potentially
damaging the press. This technology can also provide extensive statistics of
production process and in some applications we may have no alternative to
using automated vision, as the environment may be hazardous to humans.
Machine vision systems are not perfect, they contain two significant types
of error. System errors will be familiar to all engineers as there will always
be a trade-off between the cost and functionality of the systems components.
System errors can often be reduced by using components with higher speci-
fications. Statistical errors are not as easy to handle. It can be quite difficult
to decide exactly where to draw the line which determines a good from a bad
product. If the image analysis process places the product in this grey area
then we have either false rejects or worse still we may pass a faulty prod-
uct. This type of error can also be confounded by a lack of communication
between the vision engineer and the customer.
Significant progress has been made over the last decade due, in part to the
falling cost of computing power. This has led to a spread in the technology
and has enabled the development of cheaper machine vision systems. This,
in turn, has enabled medium-sized manufacturing companies to consider the
option of using machine vision to implement their inspection tasks. To a lesser
extent, the availability of a well educated work-force, a small proportion of
which has an awareness of machine vision, has also aided the growth and
acceptance, of industrial vision systems. The main reason, however, for this
growth is strategic. There is a growing realisation within many industries
that machine vision is an integral component of a long term automation
development process, especially when one considers the importance of quality
in manufacturing. This fact, combined with the legal liabilities involved in
the production and sale of defective products, highlights the strategic case
for the use of machine vision in automated inspection. A similar argument
applies to the application of vision to robotics and automated assembly.
1.2 Vision System Hardware 5
that the software is supplied with the self-contained system has yet to be
moulded into a form that would solve the vision application. Such systems
have significant advantages, the main one being speed. The majority of self-
contained systems are custom designed, although they may contain some
plug-in boards and are tuned to provide whatever functionality is required
by the application. The self-contained nature of the mechanical, image ac-
quisition and display interfaces is also a significant benefit when installing
vision systems. However, it can be difficult to add further functionality at a
later date without upgrading the system.
Turn-key vision systems are self-contained machine vision systems, de-
signed for a specific industrial use. While some such systems are custom de-
signed, many turn-key systems contain commercially available plug-in cards.
Turn-key systems tend to be designed for a specific market niche, such as
paper inspection. So, not only is the hardware tuned to deal with high-speed
image analysis applications, it is also optimised for a specific imaging task.
While the other systems discussed usually require significant development
to produce a final solution for an imaging application, turn-key systems are
fully developed, although they need to be integrated into the industrial envi-
ronment. This should not be taken lightly, as it can often be a difficult task.
Also, it may not always be possible to find a turn-key system for a specific
application.
There are a large number of image processing and analysis packages currently
available. Several of these packages are freely available over the Internet,
see Machine Vision Resources2 for general reference material relating to the
design and development of commercial machine vision systems. Some of these
packages are tightly tied to a given vision system, while others are compiled
for a number of host computers and operating systems. The majority of
the software packages have interactive imaging tools that allow ideas to be
tested prior to customizing the software for a given application. A number
of tutorial books have also been written which implement a large number of
image processing functions and to a lesser extent image analysis functions, in
a range of software languages (Parker 1997, Klette & Zamperoni 1996, Pitas
1993, Myler & Weeks 1993, Lindley 1991).
For more information on the hardware and software aspects of real-time
imaging, including a survey of commonly used languages, see Dougherty &
Laplante (1995).
2 http://www.eeng.dcu.ie/-whelanp/resQurces/resQurces.html
1.4 Machine Vision System Design 7
In this section we outline the key components found in the majority of ma-
chine vision systems, Fig. 1.2. While the application itself will determine the
relevant importance of each of these tasks, successful implementations will
have taken all these issues into consideration during the system design. The
software aspects of these design stages are expanded upon throughout the
course of this book.
Image Processing
and Analysis
Image acquisition generally involves the capture of the analogue image signal
(although digital cameras can also be used) and the generation of a one-
dimensional (I-D) or two-dimensional (2-D) array of integers representing
pixel brightness levels. In the majority of machine vision applications a solid
state sensor based camera is employed. This is made of discrete elements
that are scanned to produce an image. Examples of such sensors are Charge
Coupled Devices (CCD) and Charge Injection Devices (CID). CCD based
cameras are the most commonly used solid state sensor due to their small size,
low power consumption requirements, wide spectral response and robustness.
These cameras are available in both line scan and area array configurations.
Line scan cameras are suitable for high resolution scanning applications where
the object moves beneath a fixed camera position, for example a paper web.
Area array cameras produce a medium to high resolution 2-D snapshot of a
scene (similar to a TV image).
It is worth noting that there have been major advances in other com-
ponent technologies, specialised lighting units, lenses and advisor programs,
which guide a vision engineer through the initial stages of the design process.
8 1. An Introduction to Machine Vision
While the acquisition of image data may not be seen as directly related to
image analysis and processing, the design decisions involved in this stage (i.e.
camera type, lighting and optical system design) have a fundamental bearing
on the systems software. For example, in Fig. 1.3 we have applied two different
lighting techniques to the same scene. Given the task of counting the number
of candies in the image, which lighting configuration should be adopted?
While the image in (b) gives a cleaner image, we would have to apply complex
image segmentation techniques (such as the one discussed in Sec. 4.4.2) to
separate the touching items prior to counting. Whereas the image in (a) may
initially seem to be of little use due to the bright reflections evident on each
candy piece. In fact the lighting unit was specifically designed to produce
this effect. This lighting configuration simplifies the image processing and
analysis tasks as all that is required of the software is to isolate and count
these reflections (Chap. 3), both relatively straightforward imaging tasks.
(a) (b)
Fig. 1.3. Different lighting techniques applied to candy sweets. (a) Ring Light
(Light Background). (b) Back-lighting, this produces a silhouette of the scene.
This relates to the means of representing the image brightness data in a form
that enables the image processing and analysis design process to be imple-
mented efficiently. We shall first consider the representation of monochrome
(grey scale) images. Let x and y denote two integers where 1 :::; x :::; m and
1 :::; y :::; n. In addition, let f (x, y) denote an integer function such that
0:::; f(x, y) :::; W (W denotes the white level in a grey scale image). An array
F will be called a digital image, where an address (x, y) defines a position in
F, called a pixel, or picture element. The elements of F denote the intensities
within a number of small rectangular regions within a real (i.e. optical) im-
age. Strictly speaking, f(x, y) measures the intensity at a single point, but if
1.4 Machine Vision System Design 9
ly
f(x,y)
(a) (b)
(c) (d)
Fig. 1.5. Image resolution and binary threshold. (a) to (c) Bottle-top grey scale
image at varying resolutions. (d) Binary version of the bottle-top image.
This is an image to image operation. It aims to produce images that will make
the analysis stage simpler and robust. Key to the image processing task is
the ability to segment (Fig. 1.6) and enhance the features to be analysed.
This can be a difficult task when dealing with complex scenes. The two main
classes of operations applied to images during processing are point to point
and neighbourhood operations. A wide range of image processing functions
are detailed in Chaps. 3, 4, 5 and 6.
Author: A. Earley
Language: English
By A. EARLEY
Illustrated by ADKINS
Spring had been late before. As the Times pointed out, there had
been snow as late as mid-May in 1569 and at the end of April in
1782, yet the chronicles recorded bumper crops for both years.
Agricultural experts advised closer pruning of fruit trees to speed
budding, and an American firm of Artificial Fertilizer Manufacturers
brought out a new product called 'Shoot-boost'. But the
correspondence columns of the newspapers carried letters pointing
out that, while spring might have been late before, this time the
weather was entirely spring-like, yet still there was no sign of shoot,
blossom or bud. Excessive radiation resulting from nuclear tests was
blamed.
It was mid-May before the people and their governments became
seriously alarmed. Trees still stood bare as in the depth of winter,
lawns bore the bruising of last season's mowing but no new growth,
flower beds showed the unbroken rills of after-seed raking. Farmers
walked their fields day after day and crouched down to silhouette the
furrows against the sky, the better to see the green whiskers when
they sprouted. They prodded their heifers and ewes and went down
to the villages to consult the vet. Their wives searched the hen-
houses and put down extra grain and bricks of chalk.
The Pope's call to world-wide prayer and the British Government's
announcement of the introduction of rationing fell on the same day.
In most countries, the Pope's call found little response because the
people were too busy lining up at food stores trying to lay in stocks.
There were bread riots in Teheran.
The Russian soldier stumbled into their laager one evening just as
they were getting ready for sleep. He dropped his rifle in his surprise
and then held his hands up high because the Frenchman was
groping for his bayonet. They stood for a while looking at each other
until the Frenchman put his weapon down and the Russian's arms
fell slowly to his sides. He watched them for a few minutes, then he
saw a fishtail lying on the ground and picked it up and began to
gnaw it. The Tommy glanced at his companions and crawled to the
hole in the rocks behind them where they kept their supplies and
gave the Russian a whole fish. The Russian grinned and took it, and
while he was eating it he sat down and gradually wriggled his way
closer to them. They showed him another fish and he said 'da' and
they gave it to him. "First time I knew a flipping Ivan could say yes
too," the Tommy said.
To their amazement, the stranger spoke to the Russian with the
same ease with which he spoke English and French.
The Russian spent the night with them, and in the morning, after
more fish, he wandered off. He came back dragging mounds of
branches with which he built a shelter for the wounded men under
one tree, and another one for the stranger. He grinned all over his
broad face, pointed to the fish, to them, to himself and to the
shelters. Then he shook hands all round.
That afternoon a Russian fighting patrol passed close by. The officer
heard their voices, crept up behind them and threw a hand grenade
among them. The stranger threw himself on top of it just as it went
off. The Englishman shot the officer through the head before the dust
and smoke had cleared, and the remainder of the patrol withdrew.
When they turned the stranger over, the ants were already swarming
in his blood. At first they tried to brush them off with twigs, but more
and more ants came. The Russian pointed to the river and gestured
that it would be kindest to throw the body in. The Frenchman shook
his head, and the Englishman started to drag the body to the hole in
the rocks. They laid the stranger inside and rolled a rock against the
entrance and sealed the gaps with clay.
They missed him a great deal. Not only because of the fish and
water.
Next day the Russian left them. Before going, he banged them on
the back and shook hands with them several times and tears left
streaks on his dirty face.
She was overjoyed to have her son back with her. She could not
stop looking at him for the sheer joy of it.
"Was it very terrible"? she asked.
"No", he smiled at her. "In a way it was wonderful".
"But the suffering and the killing", she said.
"I saw more than that", he said.
"Did you tell him all of it"? she asked.
"All of it". He picked up his knife and whittled away at the wood.
"And"? she insisted.
"He's angry, and sad. And at the same time he's pleased", he said,
and that was all he would tell her. But she felt comforted and she
knew it was going to be all right.
He shaved the last of the bark of the wood and looked at the grain
and set to work. This time it would be a child, with fat round cheeks
and the dimples of laughter in them.
THE END
*** END OF THE PROJECT GUTENBERG EBOOK AND IT WAS
GOOD ***
Updated editions will replace the previous one—the old editions will
be renamed.
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the terms
of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.
• You pay a royalty fee of 20% of the gross profits you derive from
the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”