 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.

