Overview & Features


| 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 non-orthogonality (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 ortho-photo generation (collinearity model), with an automatic boundary determination or a user-defined 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 key-in 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 area-base 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 ortho-rectification 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
  • built-in 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 color-maps, besides user defined color-maps 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, poly-line, 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, poly-line finding
  • polygon flooding, boundary finding
  • graphic drawing, line, poly-line, 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 pre-defined ellipsoids and over 150 built-in 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 row-echelon 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 poly-lines (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 non-object 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 non-object 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 user-defined 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 case-sensitive command and function name

All commands and functions in Noobeed are not case-sensitive.  This makes Noobeed much more user friendly than others. 

Variable name in Noobeed is case-sensitive, 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"). 

  • Headache-free 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 headache-free 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. 


| HOME |