 HOME 
New feature in version 1.1
·
digital camera calibration using bundle
adjustment with self calibration of focal length (c),
principal point coordinate (xp, yp), and up to 6 distortion parameters, namely radial lens
distortion (k1, k2), scale
change in pixel arrangement and nonorthogonality (A1, A2),
decentric lens distortion (p1, p2), and ability to selectively fix or float some of them.
All approximate parameters are automatically determined.
See
details in section Digital Photogrammetry
Examples.
·
class "Camera" as well
as class "Photo" are
modified to be able to handle digital camera and its image with
geometric distortion parameters applied.
·
ability to incorporate approximate
parameters (EOP) file in
aerial triangulation (bundle adjustment and bundle adjustment with self calibration).
This might be useful when automatic approximation fails to convert, which may
happen in a very rare situation, e.g. in some
close range photos with big tilt angles.
·
image exports to Virtual Reality Modeling
Language format, *.wrl.
Photogrammetry features

 orientation IO (aerial camera, digital
camera),
RO, EO, and AO
 self calibration (principal distance, xp yp
principal point coordinate)
by single photo resection
and by block adjustment (with up to 6 distortion parameters can be modeled).
 conventional rectification (collinearity model),
and orthophoto generation (collinearity model),
with an automatic boundary determination or a userdefined
boundary.
Three choices of resample types are available, namely nearest,
bilinear and bicubic.
 coordinate transformation back and forth, among row
and column index, x y image rectangular coordinate, x y photo
coordinate, model coordinate and ground coordinate.
 ray intersect from a point in a photo, xp yp, to a
plane in the object space
 Two dimension Aerial triangulation with 3 available
transformation models, conformal, affine, and 2nd polynomial.
 Three dimensional Aerial Triangulation with
simultaneous adjustment of all 7 parameters. Approximate values
of parameters are not required for they are determined automatically
inside the function.
 Aerial Triangulation by Bundle Block Adjustment.
Approximate values of all parameters are automatically calculated
inside the function.
 ability to keyin Exterior Orientation
Parameters (EOP)
and automatically recover
of AOP and ROP. Vice versa, automatically determination of
EOPs if a Model is set by RO and AO.
 Epipolar geometry Image generation (image
normalization) and automatically update ROP, AOP and EOP of the epipolar
(normalized) images.
 anaglyphic image generation
 automatic areabase matching and DEM
generation
 automatic handle of earth curvature, atmospheric
refraction correction and lens distortion, and ability to turn on and
off
 image pyramid generation, image cutting (with
all necessary information including transformation parameters
automatically transferred)
 SPOT image modeling and orthorectification of SPOT
imagery, three choices of resample types namely nearest, bilinear and
bicubic.

GIS & Spatial Modeling
features

 data overlay
 boundary intersect, union
 point lines polyline drawing, polygon fill, flood
 distance from an object or a group of object
 buffer map
 zoning (Voronoi diagram)
 visibility analysis
 data interpolation (nearest, inverse distance)
 compare data, find data, with any number and
combination of logical operation.
 sun incident angle and shade relief model
 builtin sun ephemeris including sun diameter, equation
of time, declination, right ascension, and distance from the earth.
 convert back and forth between date and Julian day.
 convert to RGB, RGBAUTO, including some 10
predefined colormaps, besides user defined colormaps
are enable.

Remote Sensing features

 Image enhancement (linear stretching,
stretching with saturation, histogram equalization, histogram matching)
 data reassignment, reclassification, lookup table
 graphic drawing on an Image, using
x y image rectangular coordinate (line, polyline,
text, circle, ellipse, rectangle, square, symbol, fill polygon)
 resample at any x y coordinate (nearest,
bilinear, bicubic)
 Image rectification (Geocoding) by
4 types of transformation (conformal, affine, projective, and 2nd degree
polynomial) with 3 types of resample available (nearest,
bilinear, and bicubic"). Bounady of the final result is automatically
determined or user defined boundary is possible.
 Image reprojection, over 10 map projections, some
30 predefined ellipsoids and over 150 predefined geodetic datums are
available.
 slope map (x y or max)
aspect (direction
of max slope) and shade relief map generation.
 image mosaic with feather capability (seamless
mosaic)
 RGB and HSV transformation
 statistics, min, max, mean, standard
deviation, variance, covariance, correlation, percentile.
 ability to assign value, turn on and off of null
data.

Image Processing Features

 image filtering
 histogram stretching
 histogram matching
 binarization, reclassification, reassignment
 image resample (nearest, bilinear, bicubic)
 edge detector
 line follower, polyline finding
 polygon flooding, boundary finding
 graphic drawing, line, polyline, text, circle,
ellipse, rectangle, square, symbol, fill polygon
 convolution and predefined filters (mean,
median, Gaussian, mode)
 Fast Fourier Transform and Inverse Fast Fourier
Transform

Map Projection features

 coordinate transformation back and forth between
geographic coordinate and x y map projection coordinate
 transformation back and forth between 3D space
rectangular coordinate (X Y Z)
and geographic coordinate (latitude
longitude height)
including transformation to
local coordinate system (East North Height)
 support more than 10 generic map projections, 15
predefined
ellipsoids and over 150 builtin geodetic datum.
 coordinate transformation back and forth between
different datum, different ellipsoids and different map projections

Geodesy and Surveying
features

 three angle modes (degree, radian, grade)
and functions to convert back and forth between decimal
point to degree minute second.
 traverse computation and adjustment
 Least Square network adjustment
 2D and 3D Coordinate Geometry (COGO)
 computation of geometric quantities of an ellipsoid
 distances and directions on ellipsoid, normal
sections
 direct problem, inverse problem
 coordinate transformation 2D by Least Square adjustment.
Four mathematic models available (conformal, affine,
polynomial and projective), with two types of adjustments (either
treat one system as fix, or treat both system as observations).
Individual weight can be applied to each individual observation.
 coordinate transformation 3D (7 parameters) by
Least Square adjustment. Both system are
treated as observation. Individual weight can be applied to each
individual observation.

Matrix
Computation &
Manipulation features

 8 types of primitive data available, namely
complex, double, float, integer, short integer, unsigned character,
and boolean. All types are convertible to each other, as well as
converting to vector, vector of point (2D, 3D, with/without
ID).
 basic matrix operations, such as inversion,
transpose, multiplication, addition, subtraction, reduced rowechelon
form, eigen values and eigen vectors, rank, determinant, LU
decomposition, etc..
 operators (+
 * / ^ %)
 logical operators, not and or (! & )
 relational operators (<>, ==,
<=,
<, >=, >)
 extraction and assignment from and to any portion
of a matrix.
 extraction and assignment from and to a row or a
column or a group of rows and column.
 reset, linear generated, initialize, diagonal,
identity matrix
 concatenation left right up down
 flip, rotate, in any direction, and by any
arbitrary angle, swap row, swap column
 scientific and trigonometric functions (sin,
cos, tan, asin, acos, atan, atan2, abs, ln, log, random, etc.)
 vector products, cross, dot, norm, angle
 statistics, min, max, mean, standard
deviation, variance, covariance, correlation, percentile.
 sorting by row, column, or all.
 matrix comparison (min, max)
 load and read from TIF, BMP, ASCII and generic
binary format, with an option to skip a header.

Generic Tools & data
structure

 6 basic data types (double, float, integer,
short integer, unsigned char, and boolean) including complex number
 operators (+
 * / ^ %)
 logical operators, not and or (! & )
 relational operators (<>, ==,
<=,
<, >=, >)
 string generation and manipulation (left,
right, left right trim, convert to a number, concatenate, extract, no
of words, etc.)
 vector of strings and vector of number (integer,
double) and
manipulation functions
 point 2D point 3D with and without ID
 vector of point (2D 3D) and vector of polylines
(2D
and 3D) and
manipulation functions
 scientific and trigonometric functions (sin,
cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh,
abs, ln, log, log2, random, min, max, round, fix, ceiling,
is_odd, is_even, int2str, double2str, deg, dms, time etc.)

Noobeed Language Overview
 Noobeed is the most efficient interface in the most simple language
Language
is the most efficient way to interface to a computer and interactive
language is the central part of Noobeed. Noobeed is not graphic interface
software. So if you
are a person who loves to point and click on the computer screen, Noobeed
might not be what you want.
Unlike a graphic interface, which can be very beautiful, fancy and
attractive, interactive command looks plain and primitive, run by a user
interactively inputs a command, one by one, from his keyboard. However it is by far the
most powerful and efficient way to work with a computer. Just think about how powerful the
interactive "unix" operating system is, and this is why
there are many great people who still want
to sit down and type unix command on the keyboard.
Please take a few moments to look at the following codes.
> a = Image()
> a.loadtif("scene1.tif")
> b = 255  a.rot90r()
> b.savetif("new_scene1.tif")
The arrow
sign at the beginning of each line is the prompt of Noobeed. Each line is a Noobeed statement and
is terminated by a carriage return.
The first
line is to declare a variable "a", which is of "Image" class, an "Image" object. The next line is to load a TIF image
file to the variable "a". The third line defines a
variable "b" as the result of the expression on
the right hand side. The
expression is to rotate image "a" by 90 degrees to the right, using
the class function "rot90r", and subtract it from 255 to make a
negative image. The last
instruction is to create an output file from the result, variable "b".
The above
example clearly demonstrates that Noobeed language is logical and simple. Suppose you want to set a value of "120" to the very pixel, row 0 and column
0, of the image "b", all you have to do is typing:
> b(0,0) = 120
and that
is it. It is
wondering whether there is any graphic interface software that can do this
same task with the same simplicity without
utilizing a language.
 Noobeed has the beauty of object oriented language
and interactive language
Object
oriented language enables different types of data be grouped together as a
class. Each class
can have its own function, called class function. The same function name of two
different classes can work differently. Class functions are grouped under
class and are called by an object of a class. For example, suppose we have an
object "A" of the Matrix class, and another
object "B" of the Image class, we can have
>print A.size()
>print B.size()
This task
would not be possible in a nonobject
oriented language, in which a function is always a kind of global function. Hence function names must be unique. In this situation, it might have to have
two different function names to handle two different types of function
arguments, e.g.
>print size_Matrix(A)
>print size_Image(B)
Clearly
class function in object oriented language eliminates a lot of confusion.
Moreover it is possible
that a nonobject oriented
program might run out of appropriate function names at a certain time. However, it is not likely to happen
in an object oriented language.
Noobeed is
an Interactive language.
Not all computer languages are interactive. By interactive, we mean the ability
to promptly respond to each other. In nature, a human conversation is
mostly interactive, meaning that there are times when a person will stop
talking and start to listen, then he will continue taking while others will
listen.
Noobeed is
an interactive environment which will imitate human conversation. When a user makes an error, the
Noobeed will immediately inform the user to make a correction. Once Noobeed seems to do something
wrong, for some reasons, then the user is able to stop Noobeed, by using
CTRL C, and interactively check all the intermediate results, analyze them,
make correction to the algorithm if necessary, and then restart the
processing again.
 Noobeed is programmable and has ability to create userdefined
functions
Statements
in Noobeed can be grouped to create a program. Noobeed also offers all types of
standard commands, for example if, for while, break, continue etc. User defined functions is also made
possible in Noobeed as well as the ability to call another function within
a function.
 Noobeed has a comprehensive type casting
Not only
type casting between numerical data, such as double precision, single
precision, integer number, Noobeed also provides casting between objects,
within reasonable reasons.
For example, the following mix expression is fine.
>A = Matrix(2,2,5)
>B = Matrix_int(2,2,4)
>C = A + B
Here "A" is a matrix of type double
precision, and "B" is a matrix of type integer. Noobeed will automatically
converts matrix "B" to double precision, before adding
it to matrix "A".
 Non casesensitive command and
function name
All
commands and functions in Noobeed are not casesensitive. This makes Noobeed much more user
friendly than others.
Variable
name in Noobeed is casesensitive,
though.
 No need to declare variables
Noobeed
knows, most of the time, what types of variables you are using. There is very little time that you
need to declare a variable in Noobeed. Just consider the following code.
>A = [1 2 3; 4 5 6; 7 8 9]
>B = A.tsp()
>C = A + B
>C = 50.01
At the
beginning you create a constant matrix object "A". Then, the next two
statements, Noobeed automatically knows what type of the variable "B" and "C". They are of course another matrices.
Moving on to the last statement, now "C" is no longer a matrix object, but is
redefined as a numerical constant. Noobeed accepts the new type of
variable "C" and updates its database dynamically
without any problem.
 A good design of path definition
There are
only 3 paths, directories, that are used in Noobeed, namely data path,
program path and function path.
This is a very simple design concept, however it
eliminates a lot of frustrating problems. For example, the data path, Noobeed
has one and only one working data path. When Noobeed cannot find a
particular file, what we need to know is what is the name of the current
working directory and just go check it. The same concept also works with the
program path when Noobeed need to searches for a program to load into
memory, as well as the function path for a user defined function.
Apart from
the benefit of the simplicity, another advantage is the ability to have
more than one external function files, with the same name but different
functionality, stored in different directories. An appropriate function can be
called by setting an appropriate function path (see "set pathprg").
 Headachefree installation
Imagine
how frustrated it is, if for some reason, your computer breaks down and you
need to reinstall a program that will take an hour, or need to wait for
days to get another secret code for a new installation.
Noobeed is
a headachefree installation
software. It comes
with one and only one file, that is "nb.exe". There is not any secret code to key
in. In fact there is no installation process at all. All you have to do is just to copy
it into a desired directory and run it right away. You can do this anytime and
anywhere you want.

