Content uploaded by Irwin Sobel
Author content
All content in this area was uploaded by Irwin Sobel on Jun 14, 2015
Content may be subject to copyright.
History and Definition of the so-called "Sobel Operator",
more appropriately named the
Sobel-Feldman Operator
by Irwin Sobel
February 2, 2014
Updated June 14 2015
The work was never "published" by me... however it was first
described and credited in a footnote "suggested by I. Sobel" in
the book:
- Duda,R. and Hart,P., Pattern Classification and Scene Analysis,
John Wiley and Sons,'73, pp271-2
The "suggestion" was made in a talk:
Sobel, I., Feldman, G., "A 3x3 Isotropic Gradient Operator for Image
Processing", presented at the Stanford Artificial Intelligence Project
(SAIL) in 1968.
There also a detailed historical account that I gave to
Prof. Per-Erik Danielsson
Institutionen for Systemteknik
Department of Electrical Engineering
Universitetet i Linkoping
S-581 83 Linkoping, Sweden
email: ped@isy.liu.se
which he kindly published as an appendix to a paper of his:
Danielsson, P.E., Seger, O., "Generalized and Separable Sobel Operators",
in "Machine vision for three-dimensional scenes",
Herbert Freeman (ed), Academic Press (1990).
******************************************************************************
******************************* correspondence follows ***********************
******************************************************************************
[corrected by IES 15Dec94 - G' scale factor is 4 not 2]
February 6, 1989
Prof. Per-Erik Danielsson
Institutionen for Systemteknik
Department of Electrical Engineering
Universitetet i Linkoping
S-581 83 Linkoping
Sweden
Dear Prof. Danielsson,
...
The history of the "Sobel Operator" according to my best
recollection is as follows:
In 1968, while a PhD candidate at the Stanford Artificial
Intelligence Project I gave a talk, together with Gary Feldman
(another graduate student and good friend of mine) on a
relatively isotropic 3x3 gradient operator. This talk was
presented at a time when the major piece of published work
on computer vision was Larry Roberts' PhD Thesis from MIT
wherein he defined a 2x2 gradient estimator then referred to
as the "Roberts Cross" operator. I had previously thought
up the operator via a line of reasoning presented in the
accompanied short document and discussed it with Gary who
enthusiastically proceeded to help me program it and test
it. After doing so and satisfying ourselves that it gave
at least visually desireable results, we presented these in
a seminar at the Stanford Artificial Intelligence Project
where we were employed as Research Assistants.
As this was an event that occurred more than 20 years ago my
memory of it is somewhat foggy. Faculty that I most clearly
remember in attendance at the seminar were Raj Reddy, John
McCarthy and Arthur Samuels. I'm pretty sure that Peter
Hart and/or Dick Duda and possibly Nils Nilsson from SRI
were also there. Lester Earnest, project executive officer
was most likely there. I'm pretty sure Karl Pingle who was
employed as a project programmer and later wrote an edge
follower incorporating the operator was there. Manfred
Hueckel, a graduate student who later wrote a paper on a
more robust and computationally expensive "edge detector",
was I think also there. Lynn Quam, Jay "Marty" Tenenbaum,
Gunnar Grape, Gil Falk, Dave Poole, and Phil Petit were
other graduate students with the project and either were at
the seminar or were working in such close proximity that
they knew of the results.
My synopsis of what ensued was that Raj Reddy, who was then
teaching one of the first courses on Computer Vision, coined
the term "Sobel Operator" in contrast to the "Roberts Cross"
and used it in his course. Subsequently Pingle published a
paper (1969) describing it as part of his edge follower, and
Duda and Hart mentioned it in their book.
In response to your gentle prod I polished up a note I had
started to write several years ago for publication (I knew
not where), giving my rationale for the derivation. I
enclose it herewith with the request that you submit it as a
technical/historical note with your forthcoming paper.
Sincerely,
Irwin Sobel
HPLABS, Measurement and Manufacturing Research Center
***************************** difop note follows ****************************
An Isotropic 3x3 Image Gradient Operator
by Irwin Sobel
We would like to document the derivation of a simple,
computationally efficient, gradient operator which we
developed in 1968. This operator has been frequently used
and referenced since that time. The earliest description of
this operator in the computer vision literature is [1],
although it has been more widely popularized by its appearance
in [2]. Horn [3] defines this operator and references 4
numerical analysis texts [4-7] with the statement:
"Numerical analysis [4-7] teaches us that for
certain classes of surfaces an even better
estimate is obtained using a weighted average
of three such central differences ... These
expressions produce excellent estimates for the
components of the gradient of the central point".
The motivation to develop it was to get an efficiently
computable gradient estimate which would be more isotropic than
the then popular "Roberts Cross" operator [8]. The principle
involved is that of estimating the gradient of a digitized
picture at a point by the vector summation of the 4 possible
simple central gradient estimates obtainable in a 3x3
neighborhood. The vector summation operation provides
an averaging over directions-of-measurement of the gradient.
If the density function was truly planar over the neighborhood
all 4 gradients would have the same value. Any differences
are deviations from local planarity of the function over
the neighborhood. The intent here was to extract the
direction of the "best" plane although no attempt was
made to make this rigorous.
To be more specific, we will refer here to the image function
as a "density" function. (It could just as well be an
"intensity" function - the difference depends on the physical
nature of the image source.) For a 3x3 neighborhood each
simple central gradient estimate is a vector sum of a pair
of orthogonal vectors. Each orthogonal vector is a directional
derivative estimate multiplied by a unit vector specifying
the derivative's direction. The vector sum of these 4 simple
gradient estimates amounts to a vector sum of the 8 directional
derivative vectors.
Thus for a point on a Cartesian grid and its eight neighbors
having density values as shown
____________
| a | b | c |
|___|___|___|
| d | e | f |
|___|___|___|
| g | h | i |
|___|___|___|
we define the magnitude of the directional derivative estimate
vector 'g' for a given neighbor as
|g| = <density difference>/<distance to neighbor>
The direction of 'g' will be given by the unit vector to the
appropriate neighbor. Notice that the neighbors group into
antipodal pairs: (a,i) (b,h) (c,g) (f,d). Vector summing
derivative estimates within each pair causes all the "e"
values to cancel leaving the following vector sum for our
gradient estimate:
G = (c-g)/4 * [ 1, 1]
+(a-i)/4 * [-1, 1]
+(b-h)/2 * [ 0, 1]
+(f-d)/2 * [ 1, 0]
the resultant vector being
G = [(c-g-a+i)/4 + (f-d)/2, (c-g+a-i)/4 + (b-h)/2]
Notice that the square root fortuituously drops out of the
formula. If this were to be metrically correct we should
divide result by 4 to get the average gradient. However,
since these operations are typically done in fixed point
on small integers and division loses low order significant
bits, it is convenient rather to scale the vector by 4,
thereby replacing the "divide by 4" (doubleshift right) with
a "multiply by 4" (doubleshift left) which will preserve low
order bits. This leaves us with an estimate which is 16 times
as large as the average gradient. The resultant formula is:
G' = 4*G = [c-g-a+i + 2*(f-d), c-g+a-i + 2*(b-h)]
It is useful to express this as weighted density summations
using the following weighting functions for x and y components:
________________ ________________
| -1 | 0 | 1 | | 1 | 2 | 1 |
|____|____|____| |____|____|____|
| -2 | 0 | 2 | | 0 | 0 | 0 |
|____|____|____| |____|____|____|
| -1 | 0 | 1 | | -1 | -2 | -1 |
|____|____|____| |____|____|____|
x-component y-component
This algorithm was used as an edgepoint detector in the 1968
vision system [2] at the Stanford Artificial Intelligence
Laboratory wherein a point was considered an edgepoint if
and only if
|G'|**2 > T
where T was a previously chosen threshold. For this purpose
it proved an economical alternative to the more robust, but
computationally expensive "Hueckel operator" [9].
References:
[1] Pingle, K.K., "Visual Perception by a Computer", in
Automatic Interpretation and Classification of Images,
A. Grasselli (Ed.), Academic Press, New York, 1969, pp.
277-284.
[2] Duda, R.O. and Hart, P.E., pp. 271-272 in Pattern
Classification and Scene Analysis, John Wiley & Sons,
New York, 1973
[3] Horn,B.K.P., "Hill Shading and the Reflectance Map",
Originally in Proc. DARPA Workshop in Image Understanding,
Apr 24-25,1979, p. 85 Science Applications Inc.
Report SAI-80-895-WA; Later in Geo- Processing 2(1982)
p. 74, Elsevier Scientific Publishing, Amsterdam.
[4] Conte,D. and de Boor, C., Elementary Numerical Analysis,
1972, New York: McGraw Hill.
[5] Hamming, R.W., Numerical Methods for Scientists and
Engineers, 1962, New York: McGraw Hill.
[6] Richtmeyer, R.D. and Morton, K.W., Difference Methods
for Initial-Value Problems, New York: John Wiley
pp.136-143.
[7] Hildebrand, F.B., Introduction to Numerical Analysis,
1956, 1974 New York: McGraw Hill.
[8] Roberts, L. G., "Machine Perception of Three-Dimensional
Solids," in Optical and Electro-Optical Information
Processing, pp. 159-197, J. T. Tippett, et al., (Ed.'s),
MIT Press, Cambridge, Mass., 1965.
[9] Hueckel, M.H., "An Operator which Locates Edges in Digitized
Pictures" in Journal of the Association of Computing
Machinery, Vol.18,No. 1, January 1971, pp. 113-125.
******************************************************************************
******************************* end of correspondence ***********************
******************************************************************************