| 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.
|
|