Introduction
Pictorial Image Processor© is a designed as
a tool for development of image processing algorithms, testing the
algorithms on plethora of images with a capability to store any
intermediary image results. The goal of Pictorial Image
Processor© project is to enable the developer of image
analysis algorithms to perform a quick interactive prototyping,
test algorithms on multiplicity of images, record test results and
present the proposed algorithms to customers. End users of these
algorithms would have means to identify the cases where the logic
of the proposed algorithms is flawed and convey the images in
question back to the developers. Thus Pictorial Image Processor©
creates a common platform for image processing algorithm
development and usage with fast feedback.
The application can also be useful for the
students who are interested in image analysis and can get a
hands-on experience with different techniques used in this area of
information technology.
Version Info
This help describes Pictorial Image
Processor version 2.1
Using Pictorial Image
Processor

Each image analysis algorithm developed by the user make a project,
which can be stored in a form of a project file. The file has the
extension pxp. The file contains information about the operations performed by the algorithm
blocks, operands and their
position on the project canvas. Project files are text files
compliant with XML standard and can be viewed and edited by any
text editor. We don’t recommend editing *.pxp since it can lead to
corruption of the project information.
By opening the project file in the Pictorial
Image Processor© user can re-run the algorithm stored. During
re-run the project window follows the last performed operation
keeping it always within the viewport. Progress of the project
recalculation is shown by the progress bar which appears in the
status bar at the bottom of the main window. The bar shows
approximately the position of the currently performed operation in
the total list of the operations for the project. Some operations,
like convolutions may take noticeable time to complete. As the
operation is being performed, a small box with a running indicator
appears on the control bar. User may chose to analyse images,
results of already performed operations by double-clicking on them,
while other long operations are performed.

Drag and drop operation for the projects is
supported. This mode can be used for processing multiple projects
simultaneously creating a form of batch processing mode.
Basic steps
On starting Pictorial Image Processor© user
sees a project canvas. By double-clicking on any point within the
canvas user gets access to a pop-up menu of new operand creation.
Currently 2 types of operands are supported: image and scalar
operands.

By selecting an image operand user gets
access to the Open File dialog. See Open Image for more detail. Upon
selection of image operand into the project a thumbnail of the
image appears on the canvas within the operand rectangle. In order
to use the image area more efficiently first thumbnail of the
project is placed not where the mouse was clicked but at the top
left hand of the project window. All other thumbnails are snapped
to an invisible grid to ensure their uniform spacing.

By selecting a scalar operand user gets
access to a dialog string where user can enter an operand
consisting of single number, e.g. a threshold value which will be
later used in a threshold operation. Typing scalar value and
pressing “Enter” creates a scalar operand represented on the
project canvas by the rectangle with the value in it.

After entering 2 operands user can apply a
binary operation to them, for example grey level thresholding
operation at the level set by the scalar operand. After this
operation a new binary image is created where all pixels having the
grey value higher than given threshold will become foreground
(white), while those pixels

with the grey level lower or equal to the
threshold will become background (black ) pixels.

Upon selection of the operation the
operation result appears as a new operand. This operand is preceded
on the project canvas by an icon or icons representing the
operation. The icons are listed in the operation description section of the
manual. Icon is connected with the lines to the operands that
participated in the operation to create the result. The number of
icons depends on how ambiguous the relationships between the input
operands could be with respect to the operation result. For
example, in operations like sum of 2 operands there is no
difference which operand is used as a source image and which is
added to it, where as in operations like difference of 2 operands
the result can be very different if the operands are swapped,
especially taking into account that the majority of modern images
are coded with unsigned integers. For such operations with
ambiguity in role of the operands we introduced a special icon
indicating the source operand.
To get a short description of the operation
in a form of a tip window user needs to positions the cursor over
the operation icon. Source operands sharing the same icon are
described differently when associated with different operations.
The tip tool indicates the role of the particular source operand in
a particular operation.
User can associate a comment with the
particular operand by selecting “Comment” menu option. Comment can
be viewed by placing the cursor over the operand and waiting for a
second. Comment can be edited by selecting “Comment” menu option
for the operand that already has a comment associated with it.
Maximum length of the comment string is 512 bytes.
As user builds the algorithm, the project
window follows the last performed operation keeping it always
within the viewport.
Project window navigation
Ease of creation of image operation
sequences poses a task of navigation in the project window which
can become quite big quickly. Use the following key combinations to
navigate through the project:
“Home” moves the window to the beginning of
the project. This is handy when you want to apply the algorithm
stored in the project to another image by using “Replace operation batch file”
processing operation.
“End” moves the window to the end of the
project.
Arrow keys move project window up, down,
left, right by one operand thumbnail.
Ctrl-G is a “go to a particular operand id”
command. Press Ctrl-G and type the operand number to change
the viewport position to see the particular operand.
Project Edit functions
Project is consists of a sequence of
operations, which can have quite complex topology: the algorithm
can split into branches, which may rejoin down the operation
sequence. During design stage the algorithm developer can trial
different methods of which only some lead to desirable outcome.
This may result in build up of unused code in the algorithm tree.
In order to facilitate pruning of unused code introduction of new
branches into the existing algorithm Pictorial Image Processor©
provides the following project edit functions:
Add Image provides access to image File Open
dialog. This function is also available by double-click on the
empty space within the project window as described in Basic Steps section.
Add Scalar provides access to scalar value
input dialog. This function is also available by double-click on
the empty space within the project window as described in Basic
Steps section.
Add Operation provides access to operation
context manu after selection of one source operand from the screen.
This function is also available by right-click on one of the
project operands as described in Basic Steps section.
Last entered operation can be removed by
pressing simultaneously Ctrl+Z (Undo). Each subsequent press
of Ctrl+Z will delete last operation present in the remaining
project until all operations are removed.
The last removed in such way operation can
be restored by simultaneously pressing Ctrl+Y (Redo). Each
subsequent pressing of Ctrl+Y will restore next operation until all
operations previously entered are restored.
Undo and Redo operations are disabled when
user placed a list of files in one of the input operands thus
setting up batch processing. In order to get acces to those
operations replace the list of image files with a single image.
Apart from simple edit functions, which
allow only basic manipulation of the project operations Pictorial
Image Processor© provides an arsenal of editing functions, which
permit addition, removal and redirection of algorithm branches.
Those are called here Extended Edit functions.
Extended Edit functions include:
Delete Operation Chain deletes all
operations depending on the operand which user ia asked to pick
within the project window. If operand has a Save File operation
associated with it, operator is asked first whether one wants to
delete the Save File operation prior to asking to confirm deletion
of the whole operation chain. Note that this function is different
from Undo Last Operation function described above because it
removes whole sections of the algorithm depending on selected
operand.
Insert Operation After inserts an image
processing operation after a selected operand. If you perceive the
algorithm topology as a tree, this operation creates a new brunch
in the tree. This function inserts any operation available to user
apart from input operations of creation of new image or scalar.
Those operations are handled by Insert Operation Before function.
During this editing action user can choose as a source operand for
elected operation any operand with the operand number lower than
the one after which the operation is inserted. This is indicated to
the user by greying out inaccessible operands.

Insert Operation Before inserts an input
(open image or enter value) operation before selected operand. The
intended use of this function is to supply input parameters prior
to inserting a new image processing operation. Since the insertion
of image processing operations requires the operands to have lower
numbers than the selected operand, this insertion function permits
adding parameters before the operand of interest.

Replace Operation Input(s) is a function
which is applied to an existing operation and permits change of the
input operands to other operands which have operand numbers lower
than the chosen operand. This allows switching of the branches of
the algorithm tree.

Revert last Extended Edit action restores
project to the state prior to application of the last Extended Edit
action.
Insert Project After inserts contents of the
whole project after a picked operation. The user is asked to select
a project from the list of open project. This action is as close as
in Pictorial Image Processor© got to introduction of functions
called within the project. This edit action helps to develop
modular algorithm then quickly integrate them into a larger
combined algorithm using Replace Operation Input(s) action.
Together extended editing operations allow
application of significant changes to the algorithm without
rewriting already written parts of it as well as cleaning up the
branches whose promise never eventualised.
Project attributes
A single algorithm is called in Pictorial
Image Processor© a project. A project can have the following
attributes: project header/comment and project specific spatial
calibration. The attributes are accessible through the Attributes
menu in the main window of the application.

Project header or comment can be any text
user wants to put to identify the project. It appears at the top in
the project window above the first row of operands.
Project spatial calibration allows setting
the image resolution in world coordinates. Spatial calibration menu
opens the calibration dialog.
From this dialog the calibration parameters
could be set either manually or number of pixels corresponding to
particular length in the world units (meters) can be selected from
a user specified image. In the later case pressing “Pixel
count from image” button allows selection of the image file.
The right-click on the mouse within the image starts drawing of a
line. As the mouse is dragged across the image the number of pixels
in the line is counted and appears in the pixel count box of the
dialog. Releasing of the right mouse button finishes the line.
To remove spatial calibration set any of the
selectable parameters to 0.
Internally the calibration is stored in the
form 1 pixel =X meters. When the dialog is closed and open again
the data will be presented in the form X meters per 1 pixel.
Calibrated and non-calibrated projects have
different background colour of the project window.
Calibration is attributed to all images in
the project. It is natural to assume that all images in the project
have the same spatial scale. Some value operands, derived from the
image operands and having the spatial meaning are also subject to
calibration. That is they will change the value depending on
spatial calibration.
Convolution Kernel Designer
Convolution operations in Pictorial Image
Processor© define kernels as images of floating point types Double
(64-bit) or Float (32-bit). Kernel image is usually defined by the
type of the filter one wants to design. There are not many
applications supporting images of floating point types to say
nothing about editing them. Hence Pictorial Image Processor© offers
a simple tool for creating this type of images. The tool,
Convolution Kernel Designer allows creating, manually editing and
saving images of types Double (64-bit) or Float (32-bit). The
Convolution Kernel Designer is accessible through Tools menu
or
This menu gives access to the main Designer
dialog where user can select size of the kernel image its shape and

initial intensity distribution function.
Elliptic/round kernel for flat distribution function will create a
kernel where the pixels within the ellipse are set to intensity
shown in “Intensity” text box while those outside the ellipse are
set to 0. When Normalised tick box is selected the sum of intensity
of all pixels in the flat kernel will be the intensity shown in
“Intensity” text box, other wise each non-zero pixel is set to that
value. For the Gaussian kernel normalisation will results in total
sum of intensities being equal to the value set in Max text
box.

By pressing “Create” button user gets access to the initial image
of the kernel in the Kernel Image window and editing tool of 5x5
pixel neighbourhood. The editing tool has a hint message on editing
procedure.
Initially Neighbourhood View window is not
ready for user input. This is indicated by the grey colouring of
the boxes on the window. It can be used for precise positioning of
the cursor in Kernel Image window since area under the cursor in in
Kernel Image window is shown magnified in Neighbourhood View
window. In order to edit a 5x5 block of pixels user has to
position the cursor’s square over the block inside the Kernel Image
window and click left mouse button. At this point Neighbourhood
View window becomes active and user can edit part of the image
falling within the neighbourhood. By pressing “Store” button the
updated data is transferred into the Kernel image. At this
point the image palette is recalculated to match the updated image.
User can cancel the update by pressing ”Cancel“ button. This will
deactivate Neighbourhood View window and position the cursor back
into the Kernel Image window.
Gamma
menu in the Kernel Image window allows gamma correction of the
image for better visualisation. The resulting image can be saved
through File menu, which gives access to Save TIF menu where
the kernel can be saved as a grey scale image of types Double
(64-bit) or Float (32-bit).

The designer can build the kernels of both
odd and even dimensions. In the later ones the centre falls between
the pixels.
Logging execution time for
project operations
Pictorial Image Processor provides means for
algorithm profiling allowing user to monitor execution speed of the
operations and develop the algorithms according to the
speed-of-execution requirements.
User can enable logging execution time on a
per-project basis by selecting “Log Execution Time” in the “Tools”
menu of the main application window. One has to close all projects
in order to see this menu.
This functionality is designed to measure
the speed of execution for full algorithm cycle. Hence it only
records the data when the whole algorithm is loaded into the
Pictorial Image Processor or in a batch processing mode, not in the
design mode when user creates individual operations.
The execution time is saved into the log
file at the end of each algorithm execution cycle. The name of the
log file consists of the name of the project followed by the
“.ExecTime.log” prefix. The path is the same as the project path.
The file consists of the records of the execution times and
corresponding destination or source operand numbers from the
project. Input operands containing path for the source images are
also tagged with the path to the source file. This helps to
identify the execution times for different images during batch
processing. The log file can be loaded into Excel as a comma
delimited CSV file. For this purpose the execution time and the
source operand number text are delimited by a comma. Multiple
executions of the project with the same name will have multiple
logged appended to the same file.
Viewing full size image
In the project window image operands are presented as thumbnails. In
order to view the image in full size user double-clicks on the
thumbnail. This brings a Full Size Image window. The window’s
caption is the path where the images is stored or will be stored
should user elect to store it. The file extension is omitted
because user can select the file format for the image storage.

Narrow bar at the top of the image
displays screen coordinates and intensity values for the point
indicated by the cursor. For RGB images it displays all 3
components, for complex images real and imaginary components.
File menu gives access to Print, Image Info
and Image Intensity Histogram functions. For 24-bit images this
menu provides access to 2D Histograms of RG, GB and BR channel
pairs. The image printed from here will fit 
into the full page of the system’s default
printer. For 8-bit grey scale images and components of the RGB
images this menu allows to access histograms of
spatial statistics obtained from the image
Image Information
Image info displays image size, image depth
(number of bits per pixel) and image dynamic range. The information
displayed depends on type of image. Here is an example of the info
screen for a 24-bit image.

For binary images the info dialog contains
information about blobs of foreground (white). Here user also has a
choice of selecting the connectivity of the blobs for calculation
of the blob statistics. This information is handy for identifying
the area threshold for
the largest blob.
Intensity Histogram menu option opens
intensity histogram
window.
Viewing Zoomed Image
Zoom menu allows 2 types of image resolution
change:
windows style pixel doubling or
halving. Hint: when image size is small it could be more efficient
to use the Neighbours!ALink(NeighboursMenuOption) feature
instead of multiple application of the Zoom feature.
smooth zoom with new pixels
introduced between the original ones are interpolated using
separable optimal non-recursive convolution mask of radius 3 pix
from Bernd Jahne “Image Processing for Scientific Applications” p.
279.
Copying Image to Clipboard
By selecting ”Copy” menu option user can
place the image displayed in Full Size Image Screen to the Windows
Clipboard. This feature is particularly useful when the user is
interested in the interpolated image of higher resolution after
applying “x2 Smooth” zoom.
Viewing Palette Selection
allows to chose a palette for a
grey scale image, that is any type but 24-bit

Currently selectable palettes are:
Geyscale, image is mapped into the grey scale
range from 0 to 255
Geyscale with 5% of saturated pixels, the
bulk, 95% of the image pixels of low intensity is mapped into the
grey scale range from 0 to 255. This palette is convenient for
viewing noisy images where few pixels can determine the dynamic
range of the image but can make the bulk of the pixels mapped into
indistinguishable range of intensities.
Circular, is designed for Hue images that have
a range of [0, 2p). The
mapping goes from red at 0 with decreasing red and increasing green
till full green at 2p/3,
then decreasing green and increasing blue till full blue at
2p*2/3, then decreasing
blue and increasing red till full red at 2p. This 768-level palette permits
detailed and natural presentation of hue images.
Distinct, all different levels in the image
are shown with a distinct colour. Number of different levels cannot
be more than 224. Palette is selected in such a way that
close intensity values have contrasting RGB display values.
Random, all different levels in the image
are shown with a distinct colour. Number of different levels cannot
be more than 224. Palette colours are obtained by random
selection.
Custom, the palette which was stored in the
source file, if available.
Elevation, the pseudo-colour palette spaning
up to 513 levels from blue for lower levels through blue-green to
green then trough green-red to red for higher levels. Level 0 if
present is set to black.
Other available palettes are generated
automatically by certain operations hence only available for the
images which are the results of such operations:
Label, the palette generated during operation
of labelling of disjoint blobs
Fuzzy c-means, the palette consisting of
grey or RGB values corresponding to the mean value of each cluster
identified by the fuzzy c-means algorithm.
Setting Greyscale and Elevation
palette may fail for floating point images if there are pixels
resulting from division by zero. It is impossible to viewing
these images in linear scale with those palettes.
Palette display is not available for images
of 128-bit complex type.
Mapping Image into Viewing
Range
Lookup method menu shows available options
for mapping image component intensity ranges into the display
intensity range. The availability of four possible options depends
on type of image on the screen. Two options Linear and Gamma are
available for all image types. For high bit count images apart from
complex type additional option Range allows to map part of the
dynamic range into distinct visible intensities. User selects
the range mapped into 256 colours from the following dialog

All levels below selected range are mapped
into black; all levels above the selected range are mapped into
white.
For images of complex type additional option
is available: the Uniform. This option allows visualisation of FFT
images where the dynamic range is so vast that even logarithmic
scale of Gamma mapping is not sufficient. The histogram of a FFT
image looks like a histogram of white noise with each level met
once or twice. Uniform method allocates each display level to equal
number of pixel intensities according to the intensity order thus
making possible visualisation of the FFT images. This is a default
method for visualisation of the thumbnails of the FFT images in the
project. Without it all FFT images would look the same.
Gamma menu item gives access to gamma
dialog. Gamma dialog shows the graph of the power function applied
to the image pixels prior to display. In fact the curve shows the
function in the power 1/g,
where g is the value in the
edit box. Supported gamma values are ranging from 0.0001 to 10000.
Image pixels are not modified, only the display bitmap.

Gamma is supported for 24-bit RGB images and
for two palettes grey scale and elevation. Gamma correction is
applied to the 8 and 24-bit images in a traditional way: power
function is applied to pixel values, which are clamped at 255. For
the other image type another mapping method has been chosen, which
preserves dynamic range of the original image. For 16, 32 and 64
bit images full dynamic range is mapped to the range [0,1], then
power function is applied to the pixels, which then is mapped into
the palette display range.
Viewing Neighbourhood of Pixel
under Cursor
option opens the dialog
showing the 5x5 neighbourhood of a given pixel. The dialog shows
the horizontal and vertical pixel addresses on top and left. It
also shows magnified bitmap of the neighbourhood.

If zoom is applied to the image in the Full
Size window, the view in the neighbourhood dialog will depend on
type of zoom applied. If smooth zoom is applied, the neigh
neighbourhood dialog shows interpolated pixels. In case of windows,
pixel doubling zoom the neighbourhood dialog always shows
neighbours of the central pixel in original image disregarding of
zoom value. This action was elected because no image data is
changed in windows zoom. If gamma correction is applied to
the image, gamma corrected pixels are shown in the 5x5 pixel window
in the dialog. The numeric values though correspond to the true
pixel values.
Cross-section Line
profiles
User can obtain a line profile across the
image by pressing the right mouse button and dragging the line
across the image. When user releases the mouse button line profile window
appears.
Component view
For multi-component images user can view
individual components by choosing View components menu. Pictorial
Image Processor supports the following multi-component images:
RGB

FFT

The components are presented as grey scale
images of corresponding types: 8-bit for RGB and 64-bit floating
point for FFT images
User has access to all tools like histogram,
cross section, etc when viewing the component images
Intensity Histogram
Window
2D Histogram Window
For 24-bit images there are three 2d
histograms: Red-Green, Green-Blue and Blue-Red. These are presented
in one window. Three coloured sectors starting at the centr
e of the window represent the range of possible levels of
particular colour pair. The red axis goes from the centre to right
top, the green axis from the centre down to the bottom, the blue
axis from the centre horizontally to the left. Each point in a
sector represents a colour pair coded in the window with the
corresponding colour. The components of the colour are shown in 3
lower windows in the top grey section of 2d histogram window. The
position of the windows follows the axes pattern. As cursor hovers
over the coloured pattern, the position of the cursor defines
(usually) 2 components of the 2d histogram. The values of these
components are shown in corresponding windows with red, green or
blue font. If the component is equal 0, then the window stays
clear. If 2 windows are clear, the cursor is over the axis.
The pixel count of a particular bi-component
element is coded with a grey level. This level is displayed in the
top window on the top grey patch marked “count=…”. If the level is
absent for a particular pair one, can see the underlying
bi-component colour on that spot. Hence the coloured areas
correspond to the pixel-less bi-component elements of the image and
grey (from black to white) to the filled ones. The intensity of the
grey corresponds to the number of pixels for the bi-component
element up to level 255. After that display intensity saturates and
is not representative of the true pixel count at given level. The
true level can be viewed in the level window.
2D histograms give additional insight into
the properties of the image not obvious from intensity diagram. For
example, the 2D above belongs to the image that appears to have
reasonable smoothness of colour tones.

Meanwhile a 2D histogram (above) shows that
the source image has missing levels in red, green and blue. In fact
nearly every second level is missing. This indicates that useful
dynamic range of the image is about half of the range in the
original image. The contrast of the source image was increased in
each channel with multiplication of each pixel RGB levels by a
fixed number.
The 2D histograms are available in 2 colour spaces RGB and
Hue-Intensity-Saturation (HIS). The HIS histogram for the same
image is shown below. The orthogonal part of the histogram set is
the Intensity-Saturation histogram with the maximum at the centre
of the image. Hue-Intensity histogram is at the top-left side of
the widow, Hue-Saturation is on the right of the window. The pixel
count for each histogram is coded in shades of grey from black to
white.
More on this method of the 2D histogram
presentation can be found in “Alexander A. Gutenev, Method of
Visualization of Two-Dimensional Histogram Set of a Color Image,
Lecture Notes in Engineering and Computer Science: Proceedings of
The World Congress on Engineering 2012, WCE 2012, 4-6 July, 2012,
London, U.K., pp1214-1218.”
Spatial Statistics
Histogram Window
Unlike an intensity histogram, that shows
distribution of intensity levels in the image, a spatial statistics
histogram describes spatial relationships between the blobs of the
same intensity. In order to calculate such histogram the image is
thresholded at each grey level and statistics on distances between
the blobs are calculated. Currently such histograms are implemented
only for 8-bit images. The spatial statistics histogram window
appears similarly to intensity histogram window but instead of
pixel counts the ordinate displays some spatial statistic for the
image.

User can select the type of the spatial
statistic to display from Statistics menu. Currently four
statistics are supported: average internal distance within the
blobs, maximum internal distance within the blobs, average
(external) distance between the blobs, maximum (external) distance
between the blobs. Like in the case of an intensity histogram, user
can select the range of level within the window, effectively
zooming into particular parts of the histogram. User can also copy
the viewed histogram to a clipboard.
Moving cursor across the histogram window will
highlight the pixels of the corresponding grey level in the image
window.
For large images the statistics calculation
can be relatively time consuming.
Intensity Profile Window
Line profile window shows the cross-section
of the image along the line shown on the full size image window

As user moves the mouse pointer across the
profile window sections of the status bar show horizontal and
vertical position of the point on the profile within the full size
image window and intensity at this point. For RGB images all 3
values are shown. The last section of the status bar shows the
length of the line drawn of the screen. If the project is not
spatially calibrated, the length is shown in pixels otherwise the
length is in world coordinates. Similarly the coordinates of the
point within the profile window are presented in world coordinates,
if the project is calibrated. The origin of the coordinate system
is the top left corner.
Copy menu option copies profile on
Clipboard. The profile can be retrieved by other applications as
either picture or table of values.
User can adjust the position of the
cross-section line by clicking Adjust line. This gives the dialog
to set start and end positions of the line.

Batch processing of file
lists
Development of algorithms usually requires
fine-tuning of the algorithm parameters. The optimal set of the
parameters is usually identified during testing of the algorithms
on a range of images or with a range of different parameters (e.g.
convolution masks). The task could be quite tedious if the test set
of images or possible parameters are large. In order to automate
processing of large image sets, Pictorial Image Processor© offers
the functionality of batch file processing. The workflow for the
batch processing is as follows:
When user develops an algorithm, the algorithm
usually includes Open Image
IDH_OPEN_IMAGE operations for
supplying processed images or processing operations kernels. File
batch menu item in the I/O menu allows replacing the file

with the list of files which can be processed one after another.
When user selects the “File batch” option the dialog appears, which
allows selecting the images for processing. Use 4 buttons in the
middle to select/deselect 
image files from the left window of the source file list to the
right window of the batch file list. “Clear processing list button”
removes all images from the destination batch list. The right part
of the dialog facilitates navigation of the mapped drives of the
computer.
When user sets the batch list, the Open Image
operation is replaced with the Image List operation. The batch
processing toolbar becomes available to the user. The buttons
mean “Reset”, or point the batch processing to the first file in
the list, “Run whole batch” – execute the algorithm for all lists
in the algorithm project, “Run one cycle and stop” execute
algorithm for one, next set of files in the lists set for the
project. User can set up to 4 lists within the project which will
be calculated nesting the loops for the operands with higher
operand numbers
IDH_OPERAND_ID
inside the loops for the operands with the lower numbers. For
example, if the file list for operand 1 contains 4 files and file
list for the operand 5 contains 3 files, the total batch will be 12
cycles where first 3 cycles are performed for the first file in the
list for operand 1 and all 3 files from the list for operand 5. If
output operation is part of the project, the names of the image
results will automatically include the names of the images from the
lists participating in the current cycle of batch processing.
In this method of batch processing one project
is executed multiple times processing the lists consequentially. If
user wants to process multiple projects then use of drag-and-drop
operation on a set of projects initiates their “simultaneous”
processing. In this case the progress bar cannot be trusted in
representing the status of the processing for the cycle because
multiple projects being processed simultaneously will try to use
the bar for displaying their progress.
WORKFLOW CONSIDERATIONS
Batch processing is designed to help users to
test algorithms on large data sets. It is recommended to design
algorithms on individual images and apply image lists after the
user settled on the algorithm design. With this workflow in mind
UNDO and REDO operations are disabled when user selects image lists
as inputs.
Operands
Operands are the objects, which make input
or output of an image processing operation. Currently supported are
2 types of operands: scalar and image. Operands are represented on
PIP project by rectangles of a fixed size. For a scalar operand the
value is shown in the rectangle, for an image operand an image
thumbnail preserving the image aspect ratio is shown. Each operand
in the project is given a sequential number, an operand ID in the
project. Each operand has an invisible “name” associated with it.
The name is generated automatically from the file name of the first
operand in the operation sequence with first letter of the
operation and operand number added. When user opts to save the
operand this hidden name is given to the output file. When saving
image operand user is prompted for the image file format. The
scalar operands are saved in text format. Name of the saved file is
generated automatically. The directory where the files are saved is
the same directory where the first image of the project is
stored.
Scalar Operand
Scalar operand is either a real number, an
RGB triple or a real/imaginary pair depending on type of the
scalar.
Image Operand
Image operands are images of one of the
following types: binary (1-bit), 8-bit greyscale, 16-bit
greyscale, 24-bit RGB, 32-bit greyscale, 32-bit single precision
floating point, 64-bit double precision floating point,128-bit
complex. 36 and 48-bit RGB images are only partially supported,
application attempts to read image of this type then converts it
into 24-bit RGB image mapping whole dynamic range of the source
image into 8 bit per channel. The application can read palletized
8-bit images and during the operations conserving the image format
it will attempt to preserve the palette of the image. Normally the
resulting operand palette is a copy of the first operand’s
palette.

In Windows operating system there are no
means to display 16, 32 or 64-bit images correctly. In PIP these
images are coded for display as 24-bitRGB images, in other words
palettised. A range of palettes is available for 16, 32 and
64-bit grey scale images. If user wants to see all distinct
levels in the image, there is a limitation on display of 32
and 64-bit images. The number of distinct grey levels in those
images cannot exceed 224, that is around 16 million
levels. The default palette for their display was selected to be
greyscale. That palette can be changed and recorded for future
viewing within the project via Palette menu of the Full Size View
of the operand.
Operations
Operations are the actions performed on the
operandsOPERANDSOPERANDS to
obtain a result.
Operation are represented in the PIP project
canvas by an operation icon and a set of lines linking the input
operands with the output operands. Some operations like for example
“Save to a file” operation may not have the result operand. These
operations are represented by icons only.
Normally operations are specified explicitly
by the designer of the algorithm by right-clicking on one of the
operation source operands. There is one operation “Copy Operand”,
which is presented on the canvas but cannot be selected explicitly.
This operation is invoked automatically when one of the input
operands of the operation is too far on the resulting operand. In
this case a copy of the far operand is placed close to the output
on the project canvas.
Most of operations are accessed by right
click on one of the operation’s input operands. Operations, which
don’t have input operands, are accessed by double-click of left
mouse button on the project canvas.
Input/Output
This group of operations is responsible for
image and scalar input and output. The first image of the project
sets project-wide path for the results of the project. This
project-wide path is used as a stem name for the output results of
the processing. Whenever Save operation is requested the operand
number is added to the project wide path and is used as the name of
the saved result.
Open
Image
Operation icon
. Operation is accessed by double click of left button on
the canvas. This opens an “Open File” dialog. Currently the
following image file types are supported:
Microsoft Bitmaps(*.bmp)
Tagged Image File Format (*.tif)
JPEG (*.jpg).
Text images (*.txt) . Those are compatible
with LabView and ImageJ.
MS Bitmap files of 1, 8 and 24 bits are
supported. Supported TIFs are 1, 8, 16, 32, 64, 128 bits per
pixel grey scale and 24-bit colour. Two floating point types 32-bit
and 64-bit are compatible with tiff version 3.8.2. . Complex
images are stored as 2-component 64-bit floating point images. The
library was obtained from http://www.libtiff.org and is
copyright of Sam Leffler. Reading multi-page TIFs is supported.
Opening a multi-page TIF file is equivalent to opening multiple
image files. It results in multiple images. Note that multi-page
input can only be replaced with another multi-page image in order
not to break the project that uses those images.
JPEG library 6b 27-Mar-1998 supports only
8-bit grey scale and 24-bit colour images. The library was obtained
from ftp://ftp.uu.net/graphics/jpeg/
and is a copyright of Thomas G. Lane.
Pixel format for integral file types is assumed unsigned.
Drag and drop operation for the images is supported. The text
images are the images without header, where pixels are separated by
a tab character (\t or 0x09) and scan-lines are separated by new
line characters (\n or \r, or both). If any of the scan-lines in
the supplied image has a length different from the first scan-line
an error is reported. Text images are detected based purely
on file extension because they do not contain a header.
Image List
Operation icon
. Sets/shows file list of images for batch processing.
Supported images are the same as in Open Image operation. When
operation is loaded from the project file this operation shows that
a list rather than a single file is set as an input. This operation
is an extension of Replace Image operation. The images which can be
replaced by the lists are subject to the same conditions as the
Replace Image operation
Save Operand
Operation icon
. For image operand user has to select one of the supported
image types, BMP, TIFF or JPEG. It is not advisable to
use JPEG format for any images that are intended to be analysed
later because of the lossy compression. The format is only handy
for presentation purposes. Scalar operands are saved in text
format. Palette is saved in BMP and TIFF images of 8-bit
depth. For higher bit depth images it would be impractical to save
the palette. Hence if you prefer a particular palette for an image,
save it in a project because project tracks the palettes of the
images, while other image display applications will not be aware of
the preferred palette.
Name of the saved file is generated
automatically. It is produced from the name of the first image in
the project followed by _ and the first character of the name of
operation before the operand the id of the operand which is being
saved. The directory where the files are saved is the same
directory where the first image of the project is stored. For
example, if user opens file c:\temp\foo.tif inverts the image and
saves it as a TIFF in the PIP project, the save file will have the
name c:\temp\foo_i2.tif. The side effect of this behaviour is
of cause overwriting of the original file, if “save” operation is
used immediately after “open”. If the first operand is not an image
than after first image is entered this operand, if saved will have
in its prefix the name of first image entered later.
Save Image Histogram
Operation icon
. This operation stores the single-dimensional histogram of
the source image in a comma delimited text file with the extension
“.histo.csv” preceded by the common to the whole project file name
stemming from the first image of the project. The file contains 2
columns of numbers the first column is the intensities present in
the image; the second column is the pixel counts for those
intensities. The levels with counts 0 are not recorded in the file.
For RGB images intensity histogram is saved.
Replace Image
This operation does not have an icon and is
not shown on the PIP project. It is designed to facilitate
application of the algorithms to images it was not developed on.
This property of the “Replace” allows to use it for selection of
the most (or least) illustrative example of the project algorithm
performance. The operation can only be applied to 2 types of
images:
a) images which are starting nodes of the
algorithm graphs
b) images which are results of the manual
selection of sub-images of other images. Here replacement means
re-selection of another subregion.
The operation is not logged separately in
the project file. It affects a memory stored project operations
log but if the PIP project is saved after a “Replace”
operation, the replacement image name is saved in the project file.
Replacement is not considered an algorithm change and does not
trigger “Save changes in …?” message on closure of the
project. Operation “Replace” is a test mode operation.
In some cases the nature of the algorithm
would not allow replacement of a single image, that is, replacement
of one input image requires replacement of another as well.
The reason for such “synchronised” replacement is easy understood
in a context of operations on images. Many operations can
only be applied to the images of the same size, hence if 2 input
images in the algorithm are involved in such operations, the images
replacing them have to have the same size as well. Such
synchronised replacement is facilitated by the “Replace Operands”
dialog. In order to change the input file or value double-click on
the item in ”New image” or “New value”

columns. Icons on the left indicate which
images or values were modified in this replacement operation. Old
entries can be checked in the “Old image” and “Old value”
columns.
Enter Scalar
Operation icon
. Operation is accessed by double click of left button on
the canvas. This opens a text box where user can type an operand
value. Enter will close the box and put operand on the canvas.
or
or

Edit Scalar
This operation does not have an icon. This is
a scalar analog of Replace Image operation. Replacement of multiple
values are facilitated by the replacement facilitated by the
“Replace Operands” dialog.

This dialog does not allow you to change the
type of the scalar operand
Select Subimage
Type Conversion Operations
This group of operations is designed to
homogenise operands for the operations, which demand operands of
the same bit-per-pixel format. For some operations the type of the
image produced is only known at the run time. An example of such
operation is binary image labelling. In order to
prevent problems with type conversions the implementation of the
conversions is input type independent.
1-bit to 8-bit
Operation icon
. The operation converts a 1-bit image to 8-bit image
(0/1). For the display purposes image palette is set to 2 entries
0/255.
1-bit to 16-bit
Operation icon
. The operation converts a 1-bit image to 16-bit, 2-byte
image (0/1).
1-bit to 24-bit
Operation icon
. The operation converts a 1-bit image to 24-bit RGB image
({0,0,0}/{255,255,255}).
1-bit to 32-bit
Operation icon
. The operation converts 1-bit image to 32-bit, 4
byte integral type image (0/1).
1-bit to Float, 32-bit single precision floating
point
Operation icon
. The operation converts 1-bit image to 32-bit,
floating point image (0/1).
1-bit to 64-bit double precision floating point
Operation icon
. The operation converts 1-bit per pixel image to
64-bit per pixel double precision floating point type image
(0/1.0)..
1-bit to 128-bit complex
Operation icon
. The operation converts a 1-bit per pixel image to 128-bit
per pixel complex type image ((0,0)/(1.0,0.0)).
8-bit to 16-bit
Operation icon
. The operation converts 8-bit image to 16-bit, 2-byte
image. All grey level values preserved.
8-bit to 24-bit
Operation icon
. The operation converts 8-bit image to 24-bit, RGB
image. All grey level values preserved.
8-bit to 32-bit
Operation icon
. The operation converts 8-bit image to 32-bit, 4
byte integral type image. All grey level values preserved.
8-bit to Float, 32-bit single precision floating
point
Operation icon
. The operation converts 8-bit image to 32-bit,
single precision floating point type image. All grey level values
preserved.
8-bit to 64-bit double precision floating point
Operation icon
. The operation converts 8-bit per pixel image to
64-bit per pixel double precision floating point type image. All
grey level values are preserved.
8-bit to 128-bit complex
Operation icon
. The operation converts 8-bit per pixel image to
128-bit per pixel complex type image. All grey level values are
preserved in the real part of the output image, the imaginary part
is set to 0.
16-bit to 8-bit
Operation icon
The operation converts 16-bit image to 8-bit image .
The values are truncated into the range 0 to 255 without any
re-scaling. Negative values assigned value 0. Values
exceeding 255 assigned the value 255. If re-scaling is required,
use arithmetic operations with scalar operands.
16-bit to 32-bit
Operation icon
. The operation converts 16-bit image to 32-bit,
4 byte integral type image. All grey level values preserved.
16-bit to Float, 32-bit single precision floating
point
Operation icon
. The operation converts 16-bit image to 32-bit,
single precision floating point type image. All grey level values
preserved.
16-bit to 64-bit double precision floating point
Operation icon
. The operation converts 16-bit per pixel image to 64-bit
per pixel double precision floating point type image. All grey
level values preserved.
16-bit to 128-bit complex
Operation icon
. The operation converts 16-bit per pixel image to
128-bit per pixel complex type image. All grey level values are
preserved in the real part of the output image, the imaginary part
is set to 0.
24-bit to 8-bitt
Operation icon
. The operation converts 24-bit RGB image to 8-bit grey
scale image. Grey level of the output pixel is equal to the
brightness component of the input pixel, (R+G+B)/3.
24-bit to 16-bit
Operation icon
. The operation converts 24-bit RGB image to 16-bit grey
scale image derived from the first principal component. Principal
component or Hotelling transform of the image is calculated.
Only the component, which has the largest variance, is used. This
component is shifted so that the minimum luminance value for the
image is 0. This operation allows to display the image which is
used for watershed calculations for the corresponding RGB
image.
24-bit to 32-bit
Operation icon
. The operation converts 24-bit RGB image to packed
32-bit grey scale image. This operation is handy for alternative
presentation of RGB images and consecutive processing using
greyscale methods. LSB of 32-bit pixel value is red component of
the pixel, second byte of 32-bit pixel is green, and third byte is
blue, 4th byte is zero.
Extract 1st principal component from 24-bit
image
Operation icon
. Directly extracts 1st principal component, the
component of the largest variance from 24-bit RGB
image. The result is a 32-bit, single precision floating point grey
scale image. Unlike in 24bit to 16-bit operation the result
can have pixels with negative intensity.
Extract red component of 24-bit image
Operation icon
. The operation extracts 8-bit grey scale red
component image out of 24-bit RGB.
Extract green component of 24-bit image
Operation icon
. The operation extracts 8-bit grey scale green
component image out of 24-bit RGB.
Extract blue component of 24-bit image
Operation icon
. The operation extracts 8-bit grey scale blue
component image out of 24-bit RGB.
Combine 3 grey components into 24-bit image
Operation icons are
indicating red, green and blue components. Operation
combines three 8-bit grey scale images into a 24-bit RGB image.
User initiates the operation selecting the red component then
prompted by the shape of the cursor to select other components.
Technically it is a ternary operation, the one which takes 3 input
parameters
Extract hue component of 24-bit image
Operation icon
. Operation extracts the 32-bit, single precision floating
point image of hue component out of 24-bit RGB image. The component
is defined as an angle in the range of [0, 2p). Value 0=2p corresponds to colour red, value
2p/3 corresponds to colour
green, value 4p/3
corresponds to colour blue. The default palette for the hue images
is Circular. It permits display of the perceptually smooth
transition between hue of 2p and 0. This presentation is more
natural than traditional mapping into grey scale from 0 to 255 that
shows high contrast between the values close in hue on both sides
of 2p.
Extract saturation component of 24-bit image
Operation icon
. Operation extracts the 32-bit, single precision floating
point image of saturation component out of 24-bit RGB image. The
component is defined in the range of [0,1]. Saturation 0
describes grey-scale pixels.
Extract intensity component of 24-bit image
Operation icon
. Operation extracts the 32-bit, single precision floating
point image of intensity component out of 24-bit RGB image. The
component is defined in the range of [0,255] as the original 8-bit
RGB image.
Combine 3 HSI components into 24-bit image
Operation icons are
indicating hue, saturation and intensity components.
Operation combines 3 32-bit, single precision floating point image
into a 24-bit RGB image. The assumptions about the components are
as follows:
1) Hue is an angle, where value 0
corresponds to red hue,
2) Saturation belongs to the
interval [0,1]. If saturation is outside this interval error
is generated.
3) Intensity is belongs to the
interval [0,255]. For the pixels whose intensity exceeds this value
will have their conversion from HSI to RGB calculated and result
truncated to 255. This may cause some distortion of colour which
can be avoided by proper scaling of the intensity component.
User initiates the operation selecting the hue
component then prompted by the shape of the cursor to select other
components.
32-bit integral to 8-bit
Operation icon
. The operation converts a 32-bit image to 8-bit image. The
values are truncated into the range 0 to 255 without any
re-scaling. Negative values assigned value 0. Values
exceeding 255 assigned the value 255. If re-scaling is required,
use arithmetic operations with scalar operands.
32-bit integral to 16-bit
Operation icon
. The operation converts a 32-bit image to 16-bit, 2-byte
image. The values are truncated into the range 0 to 65535 without
any re-scaling. Negative values assigned value 0. Values
exceeding 65535 assigned the value 65535. If re-scaling is
required, use arithmetic operations with scalar operands.
32-bit integral to 32-bit single precision floating
point
Operation icon
. The operation converts a 32-bit per pixel integral type
image to 32-bit per pixel single precision floating point type
image. Since mantissa of the floating point image has a smaller
than 32 bit count some of the grey levels in the original image are
lost.
32-bit integral to 64-bit double precision floating
point
Operation icon
. The operation converts a 32-bit per pixel image to 64-bit
per pixel double precision floating point type image. All grey
level values preserved.
32-bit integral to 128-bit
complex
Operation icon
. The operation converts a 32-bit per pixel integral image
to 128-bit per pixel complex type image. All grey level values are
preserved in the real part of the output image; the imaginary part
is set to 0.
32-bit single precision floating point to 8-bit
Operation icon
. The operation converts a 32-bit per pixel, single
precision floating point type image to 8-bit per pixel image. The
values are truncated into the range 0 to 255 without any
re-scaling. Negative values assigned value 0. Values
exceeding 255 assigned the value 255. If re-scaling is required,
use arithmetic operations with scalar operands.
32-bit single precision floating point to 16-bit
Operation icon
. The operation converts a 32-bit per pixel, single
precision floating point type image to 16-bit per pixel
image. The values are truncated into the range 0 to 65535 without
any re-scaling. Negative values assigned value 0. Values
exceeding 65535 assigned the value 65535. If re-scaling is
required, use arithmetic operations with scalar operands.
32-bit single precision floating point to 32-bit
integral
Operation icon
. The operation converts a 32-bit per pixel, single
precision floating point image to 32-bit per pixel image. The
values are truncated into the range 0 to 4294967295 without any
re-scaling. Negative values assigned value 0. If re-scaling
is required, use arithmetic operations with scalar operands.
32-bit single precision floating point to 64-bit
double precision floating point
Operation icon
. The operation converts a 32-bit per pixel, single
precision floating point image to 64-bit per pixel double precision
floating point type image. All grey level values preserved.
32-bit single precision
floating point to 128-bit complex
Operation icon
. The operation converts 32-bit per pixel floating
point image to 128-bit per pixel complex type image. All grey level
values are preserved in the real part of the output image, the
imaginary part is set to 0.
64-bit double precision floating point to 8-bit
Operation icon
. The operation converts 64-bit per pixel, double precision
floating point type image to 8-bit per pixel image. The values are
truncated into the range 0 to 255 without any re-scaling. Negative
values assigned value 0. Values exceeding 255 assigned the
value 255. If re-scaling is required, use arithmetic operations
with scalar operands.
64-bit double precision floating point to 16-bit
Operation icon
. The operation converts 64-bit per pixel, double precision
floating point type image to 16-bit per pixel image. The
values are truncated into the range 0 to 65535 without any
re-scaling. Negative values assigned value 0. Values
exceeding 65535 assigned the value 65535. If re-scaling is
required, use arithmetic operations with scalar operands.
64-bit double precision floating point to 32-bit
integral
Operation icon
. The operation converts 64-bit per pixel, double
precision floating point image to 32-bit per pixel image. The
values are truncated into the range 0 to 4294967295 without any
re-scaling. Negative values assigned value 0. Values
exceeding 4294967295 assigned the value 4294967295. If re-scaling
is required, use arithmetic operations with scalar operands.
64-bit double precision floating point to 32-bit
single precision floating point
Operation icon
. The operation converts 64-bit per pixel, double precision
floating point image to 32-bit per pixel single precision floating
point image. Some of the grey levels of the original image may be
lost in this conversion.
64-bit double precision
floating point to 128-bit complex
Operation icon
. The operation converts 64-bit per pixel, double
precision floating point image to 128-bit per pixel complex type
image. All grey level values are preserved in the real part of the
output image, the imaginary part is set to 0.
128-bit complex to 8-bit
Operation icon
. The operation converts 128-bit per pixel, complex
type image to 8-bit per pixel image. For each pixel the absolute
value of the complex pixel value is truncated into the range 0 to
255 without any re-scaling. Negative values assigned value 0.
Values exceeding 255 assigned the value 255. If re-scaling is
required, use arithmetic operations with scalar operands.
128-bit complex to 16-bit
Operation icon
. The operation converts 128-bit per pixel, complex
type image to 16-bit per pixel image. For each pixel the
absolute value of the complex pixel value is truncated into the
range 0 to 65535 without any re-scaling. Negative values assigned
value 0. Values exceeding 65535 assigned the value 65535. If
re-scaling is required, use arithmetic operations with scalar
operands.
128-bit complex to 32-bit integral
Operation icon
. The operation converts 128-bit per pixel, complex type
image to 32-bit per pixel image. For each pixel the absolute value
of the complex pixel value is truncated into the range 0 to
4294967295 without any re-scaling. Negative values assigned value
0. Values exceeding 4294967295 assigned the value 4294967295.
If re-scaling is required, use arithmetic operations with scalar
operands.
128-bit complex to 32-bit single precision floating
point
Operation icon
. The operation converts 128-bit per pixel, complex type
image to 32-bit per pixel single precision floating point image. .
For each pixel the absolute value of the complex pixel value is
converted. Some of the grey levels of the original image may be
lost in this conversion.
128-bit complex to 64-bit double precision floating
point
Operation icon
. The operation converts 128-bit per pixel, complex type
image to 64-bit per pixel double precision floating point image. .
For each pixel the absolute value of the complex pixel value is
converted
Extract real component of 128-bit complex image
Operation icon
. The operation extracts 64-bit floating point real
component image out of 128-bit complex image.
Extract imaginary component of 128-bit complex
image
Operation icon
. The operation extracts 64-bit floating point imaginary
component image out of 128-bit complex image.
Extract magnitude component of 128-bit complex
image
Operation icon
. The operation extracts 64-bit floating point magnitude
component image out of 128-bit complex image.
Extract argument component of 128-bit complex
image
Operation icon
. The operation extracts 64-bit floating point argument
component image out of 128-bit complex image.
Combine 2 images of the same size into 128-bit complex
image
Operation icons are:
for real component of the resulting image and
for
imaginary component of the resultion image. This operation offers
an explicit way of creation of a complex 128-bit image. Another,
implicit way is the FFT.
Extract red component interpolating Bayer mosaic
image
Operation icon
. The operation extracts red component image after
interpolating input Bayer mosaic image. The mosaic is assumed to
have the structure as shown on the left of the icon. Operation
currently is implemented only for 16 bit images. Resulting image
has the same bit count.
Extract green component interpolating Bayer mosaic
image
Operation icon
. The operation extracts green component image after
interpolating Bayer mosaic image. The mosaic is assumed to have the
structure as shown on the left of the icon. Operation currently is
implemented only for 16 bit images. Resulting image has the same
bit count.
Extract blue component interpolating Bayer mosaic
image
Operation icon
. The operation extracts blue component image after
interpolating Bayer mosaic image. The mosaic is assumed to have the
structure as shown on the left of the icon. Operation currently is
implemented only for 16 bit images. Resulting image has the same
bit count.
Function Operations
Different functions applied to images and
values belong to the operation of this class. The operations here
are Unary or Binary and their separation in a distinct class is
probably artificial. The intention is to include here elementary
algebraic functions.
Histogram Equalisation
Operation icon
. Non-interactive contrast enhancement method resulting in
distribution of the image pixel grey levels “uniformly” across the
whole dynamic range permissible by the image bits per pixel count.
Uniformity is described in terms of cumulative histogram. Note that
for RGB images this operation is performed not as separate RGB
equalisations. It takes into account human perception of colour by
converting the image into Hue-Lightness-Saturation colour space and
performing equalisation on lightness component only leaving hue and
saturation components unchanged. For 32-bit single precision
and 64-bit double precision floating point images this operation
does not stretch the histogram over the whole range of
corresponding precision floating point numbers but only within a
limited range 0 to 1. This is done purely to reduce the complexity
of implementation.
Absolute value
Operation icon
. This operation calculates absolute value of all pixels in
the image or of the value operand. In reality it is only useful for
value operands and for images of signed, floating point types
Power function
Operation icon
. This is a binary operation. It calculates power function
of all pixels in the image or power of the value operand. The
exponent is supplied as the operand connected to this icon. This is
a binary operation. The first operand is the source image or
value
Reassign dark outliers
Operation icon
. This binary operation takes source image and the fraction
as the inputs. It calculates the histogram of the input image;
starting from the darkest part calculates all levels whose
cumulative histogram makes the given fraction of the original
histogram; then re-maps all those found histogram levels into the
closest above. For 24-bit RGB image all 3 channels are processed
individually.
Reassign bright outliers
Operation icon
. This binary operation takes source image and the fraction
as the inputs. It calculates the histogram of the input image;
starting from the brightest part calculates all levels whose
cumulative histogram makes the given fraction of the original
histogram, then re-maps all those found histogram levels into the
closest below. For 24-bit RGB image all 3 channels are processed
individually.
Reassign dark and bright outliers
Operation icon
. This binary operation takes source image and the fraction
as the inputs. It splits fraction into 2 and processes dark and
bright parts of the histogram using the half of the original
fraction. It calculates the histogram of the input image;
starting from the brightest part calculates all levels whose
cumulative histogram makes the given fraction of the original
histogram, then re-maps all those found histogram levels into the
closest below. In a similar fashion starting from the darkest part
it calculates all levels whose cumulative histogram makes the given
fraction of the original histogram; then re-maps all those found
histogram levels into the closest above. For 24-bit RGB image all 3
channels are processed individually.
Unary Operations
Operations in this group require a single
input operand. Some of the operations in this group can only be
performed on images of a particular type. For example, Image
Labelling is defined on binary images only. Pop-up menu of
available operations lists all operations, which could be performed
with the selected operand.
Invert Image
Operation icon
. This operation belongs to the class of Unary
operations which can be be loosely described as arithmetic. It
inverts the value of each pixel. Image type is preserved. For
integral unsigned image types inversion of a pixel value
a means
subtraction TypeMAX–a. where
TypeMAX is the
maximum value for the type. For signed, floating point image types
the inversion means change of sign.
Add Image to Itself
Operation icon
. This is an arithmetic operation of doubling each pixel
value in the image. The result is clipped at maximum grey level
permissible for source image type. Image type is preserved.
Exclusive OR on Image
Operation icon
. This is an arithmetic operation is equivalent to
subtracting image by itself. The result is an image of the same
size as the source image with all pixels set to 0. Image type is
preserved.
Multiply Image by Itself
Operation icon
. This is an arithmetic operation of squaring each pixel
value in the image. The result is not clipped at maximum grey level
permissible for source image type, it rolls over. Image type is
preserved.
Automatic Thresholding Using Simple Image
Statistic
Operation icon
. This is one of the thresholding operations that is those
classifying image pixels as belonging to one of 2 classes
foreground or background. The result of the operation is a binary
image. For grey scale images this technique classifies pixels
based on their grey level. For RGB images individual red, green and
blue channels are thresholded independently then the result is a
union (in a bitwise sense) of those 3 binary maps. The thresholding
method itself is an unattended method which does not require
calculation of the image histogram and is described in J.
Kittler, J. Illingworth, and J. Forglein, “Threshold
selection based on a simple image statistic” Computer Vision,
Graphics, and Image Processing, vol 30 ,pp. 125-147,1985
Automatic Segmentation Using Simple Image
Statistic
Operation icon
. This segmentation technique is inspired by the method
described in J. Kittler, J. Illingworth, and J. Forglein,
“Threshold selection based on a simple image statistic” Computer
Vision, Graphics, and Image Processing, vol 30 ,pp.
125-147,1985. It extends the original method by grouping image
intensities around the histogram maxima. Detailed description will
be given in a pending publication.
Automatic Thresholding using Maximum between Class
Variance
Operation icon
. This is one of unattended thresholding operations.
Segments image into 2 classes, foreground and background selecting
the threshold so that between the class variance is minimal. The
method is described in detail in Gerhard X. Ritter, Joseph N.
Wilson “Computer vision algorithm in Image Algebra” CRC Press,
1996, p131.
Automatic Thresholding using Isodata algorithm
Operation icon
. This unattended thresholding operation is introduced in
order to perform thresholding similar to default method used in
popular ImageJ package. It implements the algorithm described
in T.W. Ridler, S. Calvard, Picture thresholding using an
iterative selection method, IEEE Trans. System, Man and
Cybernetics, SMC-8 (1978) pp.630-632. By design it is
supposed to be faster than between class variance algorithm but its
implementation in ImageJ is very inefficient and was rewritten in
Pictorial Image Processor in order to make it usable for images of
any supported bit count.
Modified Roberts Cross Filter
Operation icon
. This is one of the first digital edge detectors as well
as one of the simplest. Despite its simplicity most of image
analysis applications include it into their toolbox possibly
because of its high speed. In its original implementation due to
application of an even size 2x2 mask the resulting edge image ends
up on a grid shifted half-pixel down and right. Everyone is aware
of this discrepancy but for some reason ignores it. In Pictorial
Image Processor© we decided to correct at least this fault of the
filter. After application of the convolution mask pair to the
original image resulting in an image on shifted grid, the pixels on
the original grid are linearly interpolated and the result of the
interpolation is presented as the output of the modified filter.
More on original Roberts filter can be found in B. Jahne, “Digital
ImageProcessing” Springer-Verlag 2002, p.331.
Sobel Filter
Operation icon
. This is a standard edge detection operator described in
many books on image processing, for example in Gerhard X. Ritter,
Joseph N. Wilson “Computer vision algorithm in Image Algebra” CRC
Press, 1996, p187. For RGB images the operator is applied to each
component.
Elementary Dilation with 8-connected
kernel
Operation icon
. Morphological image dilation on binary image with 3x3
flat kernel. All 8-neighbours are participating in the operation.
The diagonal pixels reach to radius Ö2 while others reach only 1 pixel
distance. This may create “blockyness” artefact in the operation
result
Elementary Dilation with 4-connected
kernel
Operation icon
. Morphological image dilation on binary image with 3x3
flat kernel where only 4-neighbours, 4 pixels at the distance of 1
pixel exactly plus the central pixel are participating in the
operation.
Elementary Erosion with 8-connected kernel
Operation icon
. Morphological image erosion on binary image with 3x3 flat
kernel. All 8-neighbours are participating in the operation.
Elementary Erosion with 4-connected kernel
Operation icon
. Morphological image erosion on binary image with 3x3 flat
kernel where only 4-neighbours, 4 pixels at the distance of 1 pixel
exactly plus the central pixel are participating in the
operation.
Elementary Opening with 8-connected kernel
Operation icon
. Morphological image opening on binary image with 3x3 flat
kernel. All 8-neighbours are participating in the operation.
Elementary Opening with 4-connected kernel
Operation icon
. Morphological image opening on binary image with 3x3 flat
kernel where only 4-neighbours, 4 pixels at the distance of 1 pixel
exactly plus the central pixel are participating in the
operation.
Elementary Closing with 8-connected kernel
Operation icon
. Morphological image closing on binary image with 3x3 flat
kernel. All 8-neighbours are participating in the operation.
Elementary Closing with 4-connected kernel
Operation icon
. Morphological image closing on binary image with 3x3 flat
kernel kernel where only 4-neighbours, 4 pixels at the distance of
1 pixel plus the central pixel exactly are participating in the
operation.
Watershed
Label Disjoint Histogram Blobs
Direction of gradient
Operation icon
.This operation transforms image into a map of the
direction of image intensity gradient at each pixel. The gradient
is calculated using Sobel mask. For floating point images the
gradient is defined within the interval [-p/2,p/2]. For the images of the integral
type the gradient is mapped into the whole dynamic range of the
image. For example, [0,255] for 8-bit images, where -p/2 is mapped into 0 and p/2 into 255. The For RGB images the
operator is applied to each component. In order to obtain the
orientation of the gradient use abs function with floating
point images.
Create circular 1-bit per pixel kernel
Create vertical 1-bit per pixel line
Create horizontal 1-bit per pixel line
Unary Operations Applicable
Only To Binary Images
Fill Closed Contours
Operation icon
. This operation is applicable to binary images only. It
fills areas of background (0) situated within a closed contour line
of foreground (1). It will fill the area no matter how thin the
contour line is (8-connectivity). Image edge is considered as a
background, hence any background blob touching the edge will not be
filled.
Fill Small Holes
Operation icon
. This operation is applicable to binary images only. It
fills areas of background (0) situated within a closed contour line
of foreground (1). It will fill the area only if the contour line
is thick (4-connectivity). Image edge is considered as a
background, hence any background blob touching the edge will not be
filled.
Outline Foreground Blobs
Operation icon
. This operation is applicable to binary images only.
Foreground pixels in the original image, which have 4-connected
background neighbours are unchanged. All other pixels change
to background. This produces an 8-connected foreground
boundary.
Skeletonise
Operation icon
. Binary image skeletonisation procedure preserving
homotopy. Procedure described in G X Ritter Handbook of
computer vision algorithms in Image Algebra CRC Press 1996,
pp153-157.
Prune
Operation icon
. Binary image pruning procedure similar to described in G
X Ritter Handbook of computer vision algorithms in Image Algebra
CRC Press 1996, p.170 but for 8-connected blobs rather than
4-connected. Before removal pixel is checked for 8-connected
neighbours and removed if it only has one.
Prune Not Closed Lines
Operation icon
. This binary image pruning is stronger than the previous
one. It removes all strenuous branches from the skeleton leaving
only those branches that have close contours. As parts of their
branches. The goal of this function is to leave only closed
lines
Label 4-connected Blobs in the
Binary Image
Operation icon
. Identifies all disjoined blobs of the foreground (grey
level 1) of the binary image and assigns each of them individual
grey level. Two blobs are considered disjoint if neither pixel of
one blob has pixels of the other blob in its 4-neighbourhood. This
operation will mark as separate the areas separated by one-
pixel-wide lines. Use this operation to label blobs obtained by
inversion of a skeleton image. Image type of the operation result
depends on number of blobs in the original B&W image. If number
blobs below 256 the result is an 8-bit greyscale image otherwise it
is 16-bit or even 32 bit integer type image.
Label 8-connected Blobs in the Binary Image
Operation icon
. Identifies all disjoined blobs of the foreground (grey
level 1) of the binary image and assigns each of them individual
grey level. Two blobs are considered disjoint if neither pixel of
one blob has pixels of the other blob in its 4-neighbourhood.
According to this definition one-pixel-thin separation line is not
enough to make blobs separated by this line disjoint. When
skeletonisation or watershed are employed to segment the image they
produce 1 pixel wide lines. In order to perform labelling apply
elementary erosion prior to labelling. On the other hand this
operation will label thin line of 8-connected pixels as a
single line while the 4-connected labelling will label each pixel
as separate blob. Use this operation to label thin lines.
Image type of the operation result depends on number of blobs in
the original B&W image. If number blobs below 256 the result is
an 8-bit greyscale image otherwise it is 16-bit or even 32 bit
integer type image.
Label 4-connected Blobs in the Binary Image by the
Blob Area
Operation icon
. Identifies all disjoined blobs of the foreground (grey
level 1) of the binary image and assigns each of them individual
grey level. This grey level is the equal to the area of the blob in
pixels. Two blobs are considered disjoint if neither pixel of one
blob has pixels of the other blob in its 4-neighbourhood. If
maximum blob size is below 256 the result is an 8-bit greyscale
image otherwise it is 16-bit or even 32 bit integer type image.
This operation provides capability to differentiate the blobs by
their size or, if the blobs are skeletons, by their lengths. It
encodes the size of the blob into its intensity and exposes it to
the intensity-base processing techniques.
Label 8-connected Blobs in the Binary Image by the
Blob Area
Operation icon
. Identifies all disjoined blobs of the foreground (grey
level 1) of the binary image and assigns each of them individual
grey level. This grey level is the equal to the area of the blob in
pixels. Two blobs are considered disjoint if neither pixel of one
blob has pixels of the other blob in its 8-neighbourhood. If
maximum blob size is below 256 the result is an 8-bit greyscale
image otherwise it is 16-bit or even 32 bit integer type image.
This operation provides capability to differentiate the blobs by
their size or, if the blobs are skeletons, by their lengths. It
encodes the size of the blob into its intensity and exposes it to
the intensity-base processing techniques.
Distance Transform with Outside Assumed
Background
Operation icon
. This operation is applicable to binary images only. For
each foreground pixel in the source image the grey level of the
corresponding pixel in the operation output is proportional to its
distance from the nearest background pixel. Pixels
corresponding to background pixels in the source image have the
value of distance set to zero in the output image. Image type
of the operation result depends on maximum distance calculated for
the source B&W image. If the distance is below 256 the result
is an 8-bit greyscale image otherwise it is 16-bit or even 32 bit
integer type image. For calculation efficiency Euclidean distance
is approximated with chamfer 5-7-11 distance. The pixel grey levels
obtained as the result of the operation should be divided by 5 to
get the Euclidean distance in pixels. Since the pixel outside the
boundary assumed to be background, the distance is measured either
from background pixels or boundary.
Distance Transform with Outside Assumed
Foreground
Operation icon
. Same as previous chamfer 5-7-11 distance transform with
exception of assumption of the area outside the boundary.
Since it is considered foreground, the distance is measured only
between the pixels within the image.
Unary Operations Applicable
Only To 24-bit Images
Extract Red-Green Histogram Image
Operation icon
. This operation creates a 256x256 8-bit per pixel image of
a two-dimensional histogram of the source image. The histogram
describes red and green channels of the image with red intensities
of the source image mapped into X axis and green intensities of the
source image mapped into Y axis.
Extract Red-Blue Histogram Image
Operation icon
. This operation creates a 256x256 8-bit per pixel image of
a two-dimensional histogram of the source image. The histogram
describes red and blue channels of the image with red intensities
of the source image mapped into X axis and blue intensities of the
source image mapped into Y axis.
Extract Blue-Green Histogram Image
Operation icon
. This operation creates a 256x256 8-bit per pixel image of
a two-dimensional histogram of the source image. The histogram
describes blue and green channels of the image with blue
intensities of the source image mapped into X axis and green
intensities of the source image mapped into Y axis.
Extract Hue-Intensity Histogram Image
Operation icon
. This operation creates a 256x256 8-bit per pixel image of
a two-dimensional histogram of the source image. The histogram
describes hue and intensity channels of the image with hue
intensities of the source image mapped into X axis and intensity
channel intensities of the source image mapped into Y axis.
Extract Hue-Saturation Histogram Image
Operation icon
. This operation creates a 256x256 8-bit per pixel image of
a two-dimensional histogram of the source image. The histogram
describes hue and saturation channels of the image with hue
intensities of the source image mapped into X axis and saturation
intensities of the source image mapped into Y axis.
Extract Intensity-Saturation Histogram Image
Operation icon
. This operation creates a 256x256 8-bit per pixel image of
a two-dimensional histogram of the source image. The histogram
describes intensity and saturation channels of the image with
intensity channel intensities of the source image mapped into X
axis and green intensities of the source image mapped into Y
axis.
Unary Transforms
Forward Fast Fourier Transform
Operation icon
. Forward fast Fourier transform produces an image of type
Complex. For the RGB images the transform is performed on the
intensity component. Prior to transform the image is augmented in
size to the closest power of 2 and fading is applied to the padded
parts of the image in order to reduce any ringing in processed and
converted back to space domain images. FFT images hold the
information about their original size.
Reverse Fast Fourier Transform
Operation icon
. Reverse fast Fourier transform converts a FFT image of
type Complex to an image of type double by applying the reverse
FFT.
Unary Geometric Operations
Crop image removing dark border
Operation icon
. This operation attempts to remove a dark border
around the central part of the image. The central part is assumed
the image and the dark border a worthless background. It is assumed
that the sensible part of the picture is rectangular with the sides
aligned with the frame sides. The operation attempts to find this
rectangle and crop the image to it. Resulting image is smaller
Get Crop Mask
Operation icon
. This operation generates a binary image where the area of
the dark border around perimeter is set to background 0 and the
central area of higher than background intensity is set to 1.
Output binary image has the same size as the input image.
Rotate image by 90o
Operation icon.
This operation rotates image counterclockwise by 90
degrees. Height and width of the image swap.
Rotate image by -90o
Operation icon.
This operation rotates image clockwise by 90 degrees.
. Height and width of the image swap.
Get Top Border Mask for the Image
Operation icon
. This operation generates a binary image where the line of
pixels at the top of the image is set to 1. Output binary image has
the same size as the input image. This mask can work as a probe to
test objects touching the top border of the image.
Get Bottom Border Mask for the Image
Operation icon
. This operation generates a binary image where the line of
pixels at the bottom of the image is set to 1. Output binary image
has the same size as the input image. This mask can work as a probe
to test objects touching the bottom border of the image.
Get Top Border Mask for the Image
Operation icon
. This operation generates a binary image where the line of
pixels on the left edge of the image is set to 1. Output binary
image has the same size as the input image. This mask can work as a
probe to test objects touching the left border of the image.
Get Right Border Mask for the Image
Operation icon
. This operation generates a binary image where the line of
pixels on the right edge of the image is set to 1. Output binary
image has the same size as the input image. This mask can work as a
probe to test objects touching the right border of the image.
Expand Image Half Size in Each Direction
Operation icon
. This operation is design to help the user to overcome the
edge effects caused by mirroring of the border of the image, which
is default border action in many operations in Pictorial Image
Processor, and replace it with repeat of the border row/column of
pixels in the image. This operation expands the image half image
size in each direction by repeating corresponding border. Then user
can apply the desired operation ensuring that the border action is
“repeat last pixel” rather than “mirror last pixel”.
Contract Image Quarter Size in Each Direction
Operation icon
. This operation inverts the action of the previous
operation, setting the image back to the original after it was
processed with “repeat last pixel” border action.
Circular Shift of Origin by Half-Image
Operation icon
. This is a supportive operation for frequency domain
processing. It is intended for different ways of presenting the FFT
image: origin in the centre of the image (default) or origin in the
top left corner, like any other image. Traditionally FFT images
have the origin in the centre. This operation will toggle the
position.
Upsample Image by Linear Interpolation
Operation icon
. This operation doubles the image resolution by linearly
interpolating the values between the pixels. The operation is
designed to be the inverse of the Downsample by Linear
Interpolation operation.
Downsample Image by Linear Interpolation
Operation icon
. This operation halves the image resolution by linearly
interpolating the values between every second row of the pixels.
The operation is designed to be the inverse of the Upsample by
Linear Interpolation operation.
Upsample Image by Duplicating Each Pixel
Operation icon
. This operation doubles the image resolution by
duplicating each pixel in both directions.
Downsample Image by Removing Each Second Pixel
Operation icon
. This operation halves the image resolution by removing
each second pixel in each direction.
Unary Statistical Operations
This class of operations is designed to
obtain measurements from the images. Their input operands are
images and outputs are scalars
Mean
Operation icon
. Calculates mean of the image pixel grey values. For RGB
images calculates mean of the brightness component of the
image.
Standard Deviation
Operation icon
. Calculates standard deviation of the image pixel grey
values. For RGB images calculates standard deviation of the
brightness component of the image.
Width
Operation icon
. Retrieves image width.
Height
Operation icon
. Retrieves image height.
Histogram Maximum
Operation icon
. Calculates the number of pixels corresponding to the most
frequently met grey level in the image. Level 0, normally reserved
for background, is ignored in the calculations. For RGB images
calculates the number of pixels corresponding to the most
frequently met RGB level in the image.
Peak Grey Level
Operation icon
. Calculates the grey level corresponding to the image
histogram maximum. Level 0, normally reserved for background, is
ignored in the calculations. Currently this operation is not
available for RGB images because it requires vector operands.
Maximum Grey Level of the Image
Operation icon
. Calculates maximum intensity, maximum grey level met in
the image. For RGB images it calculates maximum
intensity.
Median Grey Level of the Image
Operation icon
. Calculates median intensity, median grey level met in the
image. For RGB images it calculates median intensity.
Minimum Grey Level of the Image
Operation icon
. Calculates minimum intensity, maximum grey level met in
the image. For RGB images it calculates minimum
intensity.
Total sum of intensities
Operation icon
. Calculates total sum of the image pixel grey values. For
RGB images calculates total sum of the intensities of the image
pixels. This operation is handy when user needs to calculate
weighting for kernels produced by Kernel Designer
Unary Statistical Operations Applicable Only To
Binary Images
This class of operations is designed to
obtain measurements from binary, 1 bit per pixel images. Their
input operands are binary images and outputs are scalars
Blob count
Operation icon
. Operation calculates number of foreground blobs,
connected areas in the binary, 1 bit per pixel image. Blobs are
identified through image label operation. According
to its definition blobs are disjoint if no pixel of one blob has a
pixel of another blob in its 8-neighbourhood.
Mean blob area
Operation icon
. Operation calculates average area of foreground blobs
across the whole image.
Mean diagonal of minimum enclosing rectangle
(MER)
Operation icon
. Operation calculates average across the whole binary
image length of minimal enclosing rectangle (MER) for the
foreground blobs. MER is illustrated in the picture below

Total foreground area
Operation icon
. Calculates total area in pixels making the foreground.
This operation is a binary equivalent of total sum of the image
pixel grey values for gray scale images.
Minimum distance of foreground blobs to the image
right border
Operation icon
. This operation calculates horizontal distance from the
right border of the image for a foreground pixel closest to that
border.
Minimum distance of foreground blobs to the image
left border
Operation icon
. This operation calculates horizontal distance from the
left border of the image for a foreground pixel closest to that
border.
Minimum distance of foreground blobs to the image top
border
Operation icon
. This operation calculates horizontal distance from the
top border of the image for a foreground pixel closest to that
border.
Minimum distance of foreground blobs to the image
bottom border
Operation icon
. This operation calculates horizontal distance from the
bottom border of the image for a foreground pixel closest to that
border.
Binary Arithmetic
Operations
Add
Operation icon
. This arithmetic operation takes either two image
operands, or one image and one scalar operand, or two scalar
operands. If both operands are images they have to have the same
size. Images can be of different types, have different
bit-per-pixel counts. .If the source operand is an image, he output
image has the same type as the first operand. The result is clipped
at maximum grey level permissible for source image type.
Table of operation results for the
operation A + b, where A is image and b is scalar
Operand
Type
|
8b
scalar
|
16b
scalar
|
24b
scalar
|
32b
scalar
|
float
scalar
double
scalar
|
complex
scalar
|
8b
image
|
min(A+b,255)
|
min(A+ b mod
256, 255)
|
min(A+ |b|,
255)
|
min(A+ b mod
256, 255)
|
min(A+
floor(b) mod 256, 255)
|
min(A+ floor(
Re(b)), 255)
|
16b
image
|
min(A+b,65535)
|
min(A+b,65535)
|
min(A+ |b|,
65535)
|
min(A+ [b mod
65536], 65535)
|
min(A+
floor(b) mod 65536, 65535)
|
min(A+ floor(
Re(b)), 65535)
|
24b
image
|
min(A+b,256)
for each channel R,G,B
|
min(A+ b mod
256, 255) ) for each channel R,G,B
|
R =min(A+
bR, 255) ) , G=min(A+ bG, 255) ) B=min(A+
bB, 255) )
|
min(A+ b mod
256, 255) ) for each channel R,G,B
|
min(A+
floor(b) mod 256, 255) ) for each channel R,G,B
|
min(A+ floor(
Re(b)), 255) ) for each channel R,G,B
|
32b
image
|
min(A+b, 4294967295)
|
min(A+b, 4294967295)
|
min(A+ |b|,
4294967295)
|
min(A+b, 4294967295)
|
min(A+
floor(b) , 4294967295)
|
min(A+ floor(
Re(b)), 4294967295)
|
float
image
|
A+b
|
A+b
|
A+
|b|
|
A+b truncated
to float
|
A+b truncated
to float
|
A+Re(b)
truncated to float
|
double
image
|
A+b
|
A+b
|
A+
|b|
|
A+b
|
A+b
|
A+Re(b)
|
complex
image
|
Re =
Re(A)+b
Im =
Im(A)
|
Re =
Re(A)+b
Im =
Im(A)
|
Re =
Re(A)+|b|
Im =
Im(A)
|
Re =
Re(A)+b
Im =
Im(A)
|
Re =
Re(A)+b
Im =
Im(A)
|
Re =
Re(A)+Re(b)
Im =
Im(A)+Im(b)
|
A+b denotes an image where each pixel C
i,j =Ai,j+ b
|b| denotes a norm of multi-component
scalar. For the rgb image it is (R+G+B)/3,
bR , bG, bB
denotes R, G, B components of b
floor(b) is the largest integer smaller than
b
Re(b) denotes the real component of the
complex number b
a mod b is a modulus
b operation on a
Table of operation results for each
element in the operation A + B, where A and B are images
Operand
Type
|
8b
image
|
16b
image
|
24b
image
|
32b
image
|
float
image
double
image
|
complex
image
|
8b
image
|
min(a+b,256)
|
min(a+ b mod
256, 255)
|
min(a+ |b|,
255)
|
min(a+ b mod
256, 255)
|
min(a+
floor(b) mod 256, 255)
|
min (a+ floor(
Re(b)), 255)
|
16b
image
|
min(a+b,65535)
|
min(a+ b mod
65536, 65535)
|
min(a+ |b|,
65535)
|
min(a+ b mod
65536, 65535)
|
min(a+
floor(b) mod 65536, 65535)
|
min (a+ floor(
Re(b)), 65535)
|
24b
image
|
min(a+b,256)
for each channel R,G,B
|
min(a+ b mod
256, 255) ) for each channel R,G,B
|
R=min(aR+ bR, 255) ) ,
G=min(aG+ bG, 255) ) B=min(aB+
bB, 255) )
|
min(a+ b mod
256, 255) ) for each channel R,G,B
|
min(a+
floor(b) mod 256, 255) ) for each channel R,G,B
|
min(a+ floor(
Re(b)), 255) ) for each channel R,G,B
|
32b
image
|
min(a+b, 4294967295)
|
min(a+b, 4294967295)
|
min(a+ |b|,
4294967295)
|
min(a+b, 4294967295)
|
min(a+
floor(b) , 4294967295)
|
min(a+ floor(
Re(b)), 4294967295)
|
float
image
|
a+b
|
a+b
|
a+
|b|
|
a+b truncated
to float
|
a+b truncated
to float
|
a+Re(b)
truncated to float
|
double
image
|
a+b
|
a+b
|
a+
|b|
|
a+b
|
a+b
|
a+Re(b)
|
complex
image
|
Re =
Re(a)+b
Im =
Im(a)
|
Re =
Re(a)+b
Im =
Im(a)
|
Re =
Re(a)+|b|
Im =
Im(a)
|
Re =
Re(a)+b
Im =
Im(a)
|
Re =
Re(a)+b
Im =
Im(a)
|
Re =
Re(a)+Re(b)
Im =
Im(a)+Im(b)
|
a and b denote pixel values of matching
pixels Ai,j and Bi,j of images A and B
Subtract
Operation icon
. This arithmetic operation takes either two image
operands, or one image and one scalar operand, or two scalar
operands. If both operands are images they have to have the same
size. Images can be of different types, have different
bit-per-pixel counts. In case of image operand present the
output image has the same type as the image operand. The output
image has the same type as the first operand. . If the source
operand is an image, the result is clipped to minimum grey level
permissible for the source image type.
Table of operation results for the
operation A - b, where A is image and b is scalar
Operand
Type
|
8b
scalar
|
16b
scalar
|
24b
scalar
|
32b
scalar
|
float
scalar
double
scalar
|
complex
scalar
|
8b
image
|
max(A-b,0)
|
max(A- b mod
256, 0)
|
max(A- |b|,
0)
|
max(A- b mod
256, 0)
|
max(A-
floor(b) mod 256, 0)
|
max(A- floor(
Re(b)), 0)
|
16b
image
|
max(A-b,0)
|
max(A- b mod
65536, 0)
|
max(A- |b|,
0)
|
max(A- b mod
65536, 0)
|
max(A-
floor(b) mod 65536, 0)
|
max(A- floor(
Re(b)), 0)
|
24b
image
|
max(A-b,0) for
each channel R,G,B
|
max(A-b,0) for
each channel R,G,B
|
R=max(AR-bR,0)
G=max(AG-bG,0)
B= max(AB-bB,0)
|
max(A-b,0) for
each channel R,G,B
|
max(A-
floor(b) mod 256, 0) for each channel R,G,B
|
max(A- floor(
Re(b)), 0) for each channel R,G,B
|
32b
image
|
max(A-b,0)
|
max(A-b,0)
|
max(A- |b|,
0)
|
max(A-b,0)
|
max(A-floor(b),0)
|
max(A- floor(
Re(b)), 0)
|
float
image
|
A-b
|
A-b
|
A-|b|
|
A-b
|
A-b truncated
to float
|
A-Re(b)
truncated to float
|
double
image
|
A-b
|
A-b
|
A-|b|
|
A-b
|
A-b
|
A-Re(b)
|
complex
image
|
Re =
Re(A)-b
Im
=0
|
Re =
Re(A)-b
Im
=0
|
Re =
Re(A)-|b|
Im =0
|
Re =
Re(A)-b
Im
=0
|
Re =
Re(A)-b
Im
=0
|
Re =
Re(A)-Re(b)
Im = Im(A)-Im(b)
|
A-b denotes an image where each pixel C
i,j =Ai,j- b
|b| denotes a norm of multi-component
scalar. For the rgb image it is (R+G+B)/3,
floor(b) is the largest integer smaller than
b
Re(b) denotes the real component of the
complex number b
a mod b is a modulus
b operation on a
Table of operation results for each
element in the operation A - B, where A and B are images
Operand
Type
|
8b
image
|
16b
image
|
24b
image
|
32b
image
|
float
image
double
image
|
complex
image
|
8b
image
|
max(a-b,0)
|
max(a- b mod
256, 0)
|
max(a- |b|,
0)
|
max(a- b mod
256, 0)
|
max(a-
floor(b) mod 256, 0)
|
max(a-floor(
Re(b)) mod 256, 0)
|
16b
image
|
max(a-b,0)
|
max(a- b mod
65536, 0)
|
max(a- |b|,
0)
|
max(a- b mod
65536, 0)
|
max(a-
floor(b) mod 65536, 0)
|
max(a-floor(
Re(b)) mod 65536, 0)
|
24b
image
|
max(a-b,0) for
each channel R,G,B
|
max(a-b,0) for
each channel R,G,B
|
R=max(aR-bR,0)
G=max(aG-bG,0)
B= max(aB-bB,0)
|
max(a-b,0) for
each channel R,G,B
|
max(a-
floor(b) mod 256, 0) for each channel R,G,B
|
max(a- floor(
Re(b)), 0) for each channel R,G,B
|
32b
image
|
max(a-b,0)
|
max(a-b,0)
|
max(a- |b|,
0)
|
max(a-b,0)
|
max(a-floor(b),0)
|
max(a- floor(
Re(b)), 0)
|
float
image
|
a-b
|
a-b
|
a-|b|
|
a-b
|
a-b truncated
to float
|
a-Re(b)
truncated to float
|
double
image
|
a-b
|
a-b
|
a-|b|
|
a-b
|
a-b
|
a-Re(b)
|
complex
image
|
Re =
Re(a)-b
Im
=0
|
Re =
Re(a)-b
Im
=0
|
Re =
Re(a)-|b|
Im
=0
|
Re =
Re(a)-b
Im
=0
|
Re =
Re(a)-b
Im
=0
|
Re =
Re(a)-Re(b)
Im = Im(a)-Im(b)
|
a and b denote pixel values of matching
pixels Ai,j and Bi,j of images A and B
Multiply
Operation icon
. This arithmetic operation takes either two image
operands, or one image and one scalar operand, or two scalar
operands. If both operands are images they have to have the same
size. Images can be of different types, have different
bit-per-pixel counts. In case of image operand present the output
image has the same type as the image operand. .If the source
operand is an image, he result is not clipped at maximum grey level
permissible for source image type, it rolls over.
Table of operation results for the
operation A ´ b,
where A is image and b is scalar
Operand
Type
|
8b
scalar
|
16b
scalar
|
24b
scalar
|
32b
scalar
|
float
scalar
double
scalar
|
complex
scalar
|
8b
image
|
A´b mod 256
|
(A´b) mod 256
|
(A´|b|) mod 256
|
(A´b ) mod 256
|
(A´b) mode 256
|
[A´ Re(b)] mod 256
|
16b
image
|
(A´b) mod 65536
|
(A´b) mod 65536
|
(A´|b|) mod 65536
|
(A´b ) mod 65536
|
(A´b) mode 65536
|
[A´ Re(b)] mod 65536
|
24b
image
|
A´b mod 256 for each channel R,G,B
|
(A´b) mod 256 for each channel R,G,B
|
R
=(AR´bR) mod
256 G
=(AG´bG) mod
256 B
=(AB´bB) mod 256
|
(A´b ) mod 256 for each channel R,G,B
|
(A´b) mode 256 for each channel R,G,B
|
[A´ Re(b)] mod 256 for each channel R,G,B
|
32b
image
|
(A´b) mod 4294967296
|
(A´b) mod 4294967296
|
(A´|b|) mod 4294967296
|
(A´b ) mod 4294967296
|
(A´b) mode 4294967296
|
[A´ Re(b)] mod 4294967296
|
float
image
|
A´b
|
A´b
|
A´|b|
|
A´b
|
A´b truncated to float
|
A´Re(b)
|
double
image
|
A´b
|
A´b
|
A´|b|
|
A´b
|
A´b
|
A´Re(b)
|
complex
image
|
Re=Re(A)´b Im
=0
|
Re=Re(A)´b Im
=0
|
Re=Re(A)´|b| Im
=0
|
Re=Re(A)´b Im
=0
|
Re=Re(A)´b Im
=0
|
Re=Re(A)´Re(b) –Im(A)´Im(b) Im =Im(A) ´Re(b) + Re(A)´Im(b)
|
A´b denotes an image
where each pixel C i,j =Ai,j´b
|b| denotes a norm of multi-component
scalar. For the rgb image it is (R+G+B)/3,
floor(b) is the largest integer smaller than
b
Re(b) denotes the real component of the
complex number b
a mod b is a modulus
b operation on a
Table of operation results for each
element in the operation A ´ B, where A and B are images
Operand
Type
|
8b
image
|
16b
image
|
24b
image
|
32b
image
|
float
image
double
image
|
complex
image
|
8b
image
|
(a´b) mod 256
|
(a´ b )mod 256
|
(a´|b|) mod 256
|
(a´ b) mod 256
|
(a´ b) mode 256
|
[a´ Re(b)] mod 256
|
16b
image
|
(a´b) mod 65536
|
(a´ b )mod 65536
|
(a´|b|) mod 65536
|
(a´ b) mod 65536
|
(a´ b) mode 65536
|
[a´Re(b)] mod 65536
|
24b
image
|
a´b mod 256 for each channel R,G,B
|
(a´b) mod 256 for each channel R,G,B
|
R
=(aR´bR) mod
256
G =(aG´bG) mod
256 B
=(aB´bB) mod 256
|
(a´b ) mod 256 for each channel R,G,B
|
(a´b) mode 256 for each channel R,G,B
|
[a´ Re(b)] mod 256 for each channel R,G,B
|
32b
image
|
(a´b) mod 4294967296
|
(a´b) mod 4294967296
|
(a´|b|) mod 4294967296
|
(a´b ) mod 4294967296
|
(a´b) mode 4294967296
|
[a´ Re(b)] mod 4294967296
|
float
image
|
a´b
|
a´b
|
a´|b|
|
a´b
|
a´b truncated to float
|
a´Re(b)
|
double
image
|
a´b
|
a´b
|
a´|b|
|
a´b
|
a´b
|
a´Re(b)
|
complex
image
|
Re=Re(a)´b Im
=0
|
Re=Re(a)´b Im
=0
|
Re=Re(a)´|b| Im
=0
|
Re=Re(a)´b Im
=0
|
Re=Re(a)´b Im
=0
|
Re=Re(a)´Re(b) –Im(a)´Im(b) Im =Im(a) ´Re(b) + Re(a)´Im(b)
|
a and b denote pixel values of matching
pixels Ai,j and Bi,j of images A and B
If value of the product exceeds the
largest 32-bit number the result of the product is 0. This is the
default behaviour of runtime library when converting floating types
to unsigned integer types
Divide
Operation icon
. This arithmetic operation takes either two image
operands, or one image and one scalar operand, or two scalar
operands. If both operands are images they have to have the same
same size. Images can be of different types, have different
bit-per-pixel counts. In case of image operand present the output
image has the same type as the image operand. If first selected
operand is value operand but the second is an image the value
operand is used as a divisor. In case of 2 value operands second
operand divides the first. If the source operand is an image,
he result is not clipped at maximum grey level permissible for
source image type, it rolls over.
Table of operation results for the
operation A ÷ b, where A is image and b is scalar
Operand
Type
|
8b
scalar
|
16b
scalar
|
24b
scalar
|
32b
scalar
|
float
scalar
double
scalar
|
complex
scalar
|
8b
image
|
A÷b mod
256
|
A÷ (b mod 256)
mod 256
|
A÷|b| mod
256
|
A÷ (b mod 256)
mod 256
|
(A÷b)
mode 256
|
[A÷ Re(b)] mod
256
|
16b
image
|
(A÷ b) mod
65536
|
(A÷ b )mod
65536
|
(A÷|b|) mod
65536
|
(A÷ b) mod
65536
|
(A÷ b) mode
65536
|
[A÷Re(b)] mod
65536
|
24b
image
|
A÷b mod 256
for each channel R,G,B
|
(A÷b) mod 256
for each channel R,G,B
|
R
=(AR÷bR) mod
256
G =(AG÷bG) mod
256 B
=(AB÷bB) mod 256
|
(A÷b ) mod 256
for each channel R,G,B
|
(A÷b) mode 256
for each channel R,G,B
|
[A÷ Re(b)] mod
256 for each channel R,G,B
|
32b
image
|
(A÷b) mod
4294967296
|
(A÷b) mod
4294967296
|
(A÷|b|) mod
4294967296
|
(A÷b ) mod
4294967296
|
(A÷b) mode
4294967296
|
[A÷ Re(b)] mod
4294967296
|
float
image
|
A÷b
|
A÷b
|
A÷|b|
|
A÷b
|
A÷b truncated
to float
|
A÷Re(b)
|
double
image
|
A÷b
|
A÷b
|
A÷|b|
|
A÷b
|
A÷b
|
A÷Re(b)
|
complex
image
|
Re=Re(A)÷b Im
=0
|
Re=Re(A)÷b Im
=0
|
Re=Re(A)÷|b| Im
=0
|
Re=Re(A)÷b Im
=0
|
Re=Re(A)÷b Im
=0
|
Re=Re(A) ´Re(b) +Im(A) ´Im(b)
Im =Im(A) ´Re(b) + Re(A) ´Im(b)
|
A÷b
denotes an image where each pixel C i,j
=Ai,j÷b
|b| denotes a norm of multi-component
scalar. For the rgb image it is (R+G+B)/3,
floor(b) is the largest integer smaller than
b
Re(b) denotes the real component of the
complex number b
a mod b is a modulus
b operation on a
Table of operation results for each
element in the operation A ÷ B, where A and B are images
Operand
Type
|
8b
image
|
16b
image
|
24b
image
|
32b
image
|
float
image
double
image
|
complex
image
|
8b
image
|
(a÷b) mod
256
|
(a÷ b )mod
256
|
(a÷|b|) mod
256
|
(a÷ b) mod
256
|
[a÷b] mode
256
|
[a÷Re(b)] mod
256
|
16b
image
|
(a÷ b) mod
65536
|
(a÷ b )mod
65536
|
(a÷|b|) mod
65536
|
(a÷ b) mod
65536
|
(a÷ b) mode
65536
|
[a÷Re(b)] mod
65536
|
24b
image
|
a÷b mod 256
for each channel R,G,B
|
(a÷b) mod 256
for each channel R,G,B
|
R
=(aR÷bR) mod
256
G =(aG÷bG) mod
256 B
=(aB÷bB) mod 256
|
(a÷b ) mod 256
for each channel R,G,B
|
(a÷b) mode 256
for each channel R,G,B
|
[a÷ Re(b)] mod
256 for each channel R,G,B
|
32b
image
|
(a÷b) mod
4294967296
|
(a÷b) mod
4294967296
|
(a÷|b|) mod
4294967296
|
(a÷b ) mod
4294967296
|
(a÷b) mode
4294967296
|
[a÷ Re(b)] mod
4294967296
|
float
image
|
a÷b
|
a÷b
|
a÷|b|
|
a÷b
|
a÷b truncated
to float
|
a÷Re(b)
|
double
image
|
a÷b
|
a÷b
|
a÷|b|
|
a÷b
|
a÷b
|
a÷Re(b)
|
complex
image
|
Re=Re(a)÷b Im
=0
|
Re=Re(a)÷b Im
=0
|
Re=Re(a)÷|b| Im
=0
|
Re=Re(a)÷b Im
=0
|
Re=Re(a)÷b Im
=0
|
Re=Re(a) ´Re(b) +Im(a) ´Im(b)
Im =Im(a) ´Re(b) + Re(a) ´Im(b)
|
a and b denote pixel values of matching
pixels Ai,j and Bi,j of images A and B
Maximum
Operation icon
. This arithmetic operation takes either two image
operands, or one image and one scalar operand, or two scalar
operands. If both operands are images they have to have the same
size. Images can be of different types, have different
bit-per-pixel counts. The output image has the same type as the
first operand. If the source operand is an image, the result is
clipped at maximum grey level permissible for source image
type.
Table of operation results for the
operation max(A , b), where A is image and b is scalar
Operand
Type
|
8b
scalar
|
16b
scalar
|
24b
scalar
|
32b
scalar
|
float
scalar
double
scalar
|
complex
scalar
|
8b
image
|
max(A,b)
|
max(A,b) mod 256
|
max(A,|b|
)
|
max(A,b) mod 256
|
max[A,
floor(b)] mod 256
|
max[A, floor
{Re(b)}] mod 256
|
16b
image
|
max(A,b)
|
max(A,b) mod 65536
|
max(A,|b|
)
|
max(A,b) mod mod 65536
|
max[A,
floor(b)] mod 65536}
|
max[A, floor
{Re(b)}] 65536}
|
24b
image
|
max(A,b) for
each channel R,G,B
|
max{A, [min (b,256)] mod 256} for each channel R,G,B
|
max(A,b
)
R = max(A,b
R)
G = max(A,b G) B = max(A,b B)
|
max(A,b) mod 256 for each channel R,G,B
|
max[A,
floor(b)] mod 256 for each channel R,G,B
|
max[A, floor
{Re(b)}] 256 for each channel R,G,B
|
32b
image
|
max(A,b)
|
max(A,b) mod 4294967296
|
max(A,|b|
)
|
max(A,b) mod 4294967296
|
max[A,
floor(b)] mod 4294967296
|
max[A, floor
{Re(b)}] mod 4294967296
|
float
image
|
max(A,b)
|
max(A,b)
|
max(A,|b|)
|
max(A,b)
|
max[max(A,b),
FLOAT_MAX)
|
max[max(A,Re(b)), FLOAT_MAX)
|
double
image
|
max(A,b)
|
max(A,b)
|
max(A,|b|)
|
max(A,b)
|
max(A,b)
|
max(A,Re(b))
|
complex
image
|
Re=
max(A,b) Im
=0
|
Re=max(A,b) Im
=0
|
Re=
max(A,|b|) Im
=0
|
Re=
max(A,b) Im
=0
|
Re=
max(A,b) Im
=0
|
Re=
max(A,Re(b))
Im
=max(A,Im(b))
|
max(A,b) denotes an image where each pixel C
i,j =max(Ai,j,b )
|b| denotes a norm of multi-component
scalar. For the rgb image it is (R+G+B)/3,
floor(b) is the largest integer smaller than
b
Re(b) denotes the real component of the
complex number b
a mod b is a modulus
b operation on a
FLOAT_MAX =
3.402823466e+38F maximum 32-bit floating point
number
Table of operation results for each
element in the operation max(A ,B), where A and B are
images
Operand
Type
|
8b
image
|
16b
image
|
24b
image
|
32b
image
|
float
image
double
image
|
complex
image
|
8b
image
|
max(a,b)
|
max(a,b) mod 256
|
max(a,|b|
)
|
max(a,b) mod 256
|
max[a,
floor(b)] mod 256
|
max[a, floor
{Re(b)}] mod 256
|
16b
image
|
max(a,b)
|
max(a,b) mod 65536
|
max(a,|b|
)
|
max(a,b) mod mod 65536
|
max[a,
floor(b)] mod 65536}
|
max[a, floor
{Re(b)}] 65536}
|
24b
image
|
max(a,b) for
each channel R,G,B
|
max{a, [min (b,256)] mod 256} for each channel R,G,B
|
max(a,b
)
R = max(a,b
R)
G = max(a,b G) B = max(a,b B)
|
max(a,b) mod 256 for each channel R,G,B
|
max[a,
floor(b)] mod 256 for each channel R,G,B
|
max[a, floor
{Re(b)}] 256 for each channel R,G,B
|
32b
image
|
max(a,b)
|
max(a,b) mod 4294967296
|
max(a,|b|
)
|
max(a,b) mod 4294967296
|
max[a,
floor(b)] mod 4294967296
|
max[a, floor
{Re(b)}] mod 4294967296
|
float
image
|
max(a,b)
|
max(a,b)
|
max(a,|b|)
|
max(a,b)
|
max[max(a,b),
FLOaT_MaX)
|
max[max(a,Re(b)), FLOaT_MaX)
|
double
image
|
max(a,b)
|
max(a,b)
|
max(a,|b|)
|
max(a,b)
|
max(a,b)
|
max(a,Re(b))
|
complex
image
|
Re=
max(a,b) Im
=0
|
Re=max(a,b) Im
=0
|
Re=
max(a,|b|) Im
=0
|
Re=
max(a,b) Im
=0
|
Re=
max(a,b) Im =0
|
Re=
max(a,Re(b))
Im
=max(a,Im(b))
|
a and b denote pixel values of matching
pixels Ai,j and Bi,j of images A and B
Minimum
Operation icon
. This arithmetic operation takes either two image
operands, or one image and one scalar operand, or two scalar
operands. If both operands are images they have to have the same
size. Images can be of different types, have different
bit-per-pixel counts. The output image has the same type as the
first operand. If the source operand is an image, the result is
clipped at minimum grey level permissible for source image
type.
Table of operation results for the
operation min(A , b), where A is image and b is scalar
Operand
Type
|
8b
scalar
|
16b
scalar
|
24b
scalar
|
32b
scalar
|
float
scalar
double
scalar
|
complex
scalar
|
8b
image
|
min(A,b)
|
min(A,b) mod 256
|
min(A,|b|
)
|
min(A,b) mod 256
|
min[A,
floor(b)] mod 256
|
min[A, floor
{Re(b)}] mod 256
|
16b
image
|
min(A,b)
|
min(A,b) mod 65536
|
min(A,|b|
)
|
min(A,b) mod mod 65536
|
min[A,
floor(b)] mod 65536}
|
min[A, floor
{Re(b)}] 65536}
|
24b
image
|
min(A,b) for
each channel R,G,B
|
min{A, [min (b,256)] mod 256} for each channel R,G,B
|
min(A,b
)
R = min(A,b
R)
G = min(A,b G) B = min(A,b B)
|
min(A,b) mod 256 for each channel R,G,B
|
min[A,
floor(b)] mod 256 for each channel R,G,B
|
min[A, floor
{Re(b)}] 256 for each channel R,G,B
|
32b
image
|
min(A,b)
|
min(A,b) mod 4294967296
|
min(A,|b|
)
|
min(A,b) mod 4294967296
|
min[A,
floor(b)] mod 4294967296
|
min[A, floor
{Re(b)}] mod 4294967296
|
float
image
|
min(A,b)
|
min(A,b)
|
min(A,|b|)
|
min(A,b)
|
min[min(A,b)
, -FLOAT_MAX)
|
min[min(A,Re(b)), -FLOAT_MAX)
|
double
image
|
min(A,b)
|
min(A,b)
|
min(A,|b|)
|
min(A,b)
|
min(A,b)
|
min(A,Re(b))
|
complex
image
|
Re=
min(A,b)
Im
=0
|
Re=min(A,b) Im
=0
|
Re=
min(A,|b|) Im
=0
|
Re=
min(A,b) Im
=0
|
Re=
min(A,b) Im
=0
|
Re=
min(A,Re(b))
Im
=min(A,Im(b))
|
min(A,b) denotes an image where each pixel C
i,j =min(Ai,j,b )
|b| denotes a norm of multi-component
scalar. For the rgb image it is (R+G+B)/3,
floor(b) is the largest integer smaller than
b
Re(b) denotes the real component of the
complex number b
a mod b is a modulus
b operation on a
Table of operation results for each
element in the operation min(A ,B), where A and B are
images
Operand
Type
|
8b
image
|
16b
image
|
24b
image
|
32b
image
|
float
image
double
image
|
complex
image
|
8b
image
|
min(a,b)
|
min(a,b) mod 256
|
min(a,|b|
)
|
min(a,b) mod 256
|
min[a,
floor(b)] mod 256
|
min[a, floor
{Re(b)}] mod 256
|
16b
image
|
min(a,b)
|
min(a,b) mod 65536
|
min(a,|b|
)
|
min(a,b) mod mod 65536
|
min[a,
floor(b)] mod 65536}
|
min[a, floor
{Re(b)}] 65536}
|
24b
image
|
min(a,b) for
each channel R,G,B
|
min{a, [min (b,256)] mod 256} for each channel R,G,B
|
min(a,b
)
R = min(a,b
R)
G = min(a,b G) B = min(a,b B)
|
min(a,b) mod 256 for each channel R,G,B
|
min[a,
floor(b)] mod 256 for each channel R,G,B
|
min[a, floor
{Re(b)}] 256 for each channel R,G,B
|
32b
image
|
min(a,b)
|
min(a,b) mod 4294967296
|
min(a,|b|
)
|
min(a,b) mod 4294967296
|
min[a,
floor(b)] mod 4294967296
|
min[a, floor
{Re(b)}] mod 4294967296
|
float
image
|
min(a,b)
|
min(a,b)
|
min(a,|b|)
|
min(a,b)
|
min[min(a,b)
, -FLOAT_MAX)
|
min[min(a,Re(b)), -FLOAT_MAX)
|
double
image
|
min(a,b)
|
min(a,b)
|
min(a,|b|)
|
min(a,b)
|
min(a,b)
|
min(a,Re(b))
|
complex
image
|
Re=
min(a,b)
Im
=0
|
Re=min(a,b) Im
=0
|
Re=
min(a,|b|) Im
=0
|
Re=
min(a,b) Im =0
|
Re=
min(a,b) Im
=0
|
Re=
min(a,Re(b))
Im
=min(a,Im(b))
|
a and b denote pixel values of matching
pixels Ai,j and Bi,j of images A and B
Binary Bitwise
Operations
Bitwise AND
Operation icon
. This bitwise operation takes either two image operands or
one image and one scalar operand. If both operands are images they
have to have the same size and type (number of bits per pixel). The
output image has the same type as the first operand. This operation
applies only to images of integral type: 1, 8,16, 24 bits per pixel
and 32 bits per pixel integral.
Bitwise OR
Operation icon
. This bitwise operation takes either two image operands or
one image and one scalar operand. If both operands are images they
have to have the same size and type (number of bits per pixel). The
output image has the same type as the first operand. This operation
applies only to images of integral type: 1, 8,16, 24 bits per pixel
and 32 bits per pixel integral.
Bitwise exclusive OR
Operation icon
. This bitwise operation takes either two image operands or
one image and one scalar operand. If both operands are images they
have to have the same size and type (number of bits per pixel). The
output image has the same type as the first operand.
Binary Thresholding and
Segmentation Operations
Simple Threshold
Operation icon
. The operation converts a grey scale or
multi-component image to a binary image with pixels having their
grey level above a given value set to foreground (1) while the rest
set to background (0). For RGB images the operation is applied to
individual components and the resulting binary images are ANDed.
The operation takes one image and one scalar operand.
Precise Threshold
Operation icon
. The operation converts a grey scale or
multi-component image to a binary image with pixels having their
grey level equal to a given value set to foreground (1) while the
rest set to background (0). The operation takes either two image
operands or one image and one scalar operand. During the operand
selection process the background selection is prompted by a special
cursor marked BG. This operation is useful for selecting
particular blob in a labelled image, e.g. largest. It can be
applied to floating point images too but it is the user’s
responsibility to make sure that the same levels are
indistinguishable within the tolerances of the selected type.
Threshold Image by Tracing Local Maxima of
Intensity
Operation icon
. This operation takes a grey-scale or colour image as
one input and a binary skeleton-marker image as another input. It
uses the marker skeleton as a seed to trace the "ridges" of the
first operand and extend the skeleton along the ridges until ridge
stops. The operation result is a binary (0/1) image of the extended
skeleton of the "ridges", the bright lines on the first input
image. This operation is useful for tracing, extending edges
with reduced contrast emanating from the edges of higher contrast.
The later ones after thresholding and skeletonisation can be used
for creation of marker skeleton.
Fuzzy C-means Clustering
Operation icon
. This is a classical image clustering method. For
description see J.C.Bezdek “Pattern Recognition With Fuzzy
Objective Function Algorithms” New York, Plenum Press, 1982. Number
of clusters is the second input parameter and is limited by 255.
The resulting image is displayed using palette that corresponds to
the central intensities/colours of the clusters. The indices into
the palette are ranging from 1 to the number of clusters. Due to
recursive nature of the algorithm it can be slow.
Segment by Skeleton
Operation icon
. This operation takes a source image and a binary image
(0/1) of the same size. The binary image is expected to be the
image of a skeletal lines associated with the source image. The
segmentation consists in assignment of the same intensity to the
area enclosed by each closed contour within the skeleton image.
Thus the skeleton guides the segmentation. The value assigned is
the average value of the pixels inside the skeletal contour.
Binary Morphological
Operations
Dilation with Symmetric Kernel
Operation icon
. Morphological image dilation on binary, grey scale or
multi-component images. For multi-component images each component
is dilated individually. During the operand selection process the
kernel selection is prompted by a special cursor marked
KER. Kernel has to be supplied as an image of the same
type (bits per pixel) as the image to be dilated. Kernel may have
either odd or even number of rows and columns. Prior to application
of the operation a border of half-width of kernel size is created
around the original image. Values of pixels within the frame repeat
the values of the original image border extending the original
image border by half-width of the kernel in each direction. This
treatment of the image edges is most appropriate for preservation
of boundary features during morphological operations. The
dimensions of the kernel cannot exceed half of the corresponding
dimensions of the image operand.
Erosion with Symmetric Kernel
Operation icon
. Morphological image erosion on binary, grey scale or
multi-component images. For multi-component images each component
is eroded individually. During the operand selection process the
kernel selection is prompted by a special cursor marked
KER. Kernel has to be supplied as an image of the same
type (bits per pixel) as the image to be eroded. Kernel may have
either odd or even number of rows and columns. Prior to
application of the operation a border of half-width of kernel size
is created around the original image. Values of pixels within the
frame repeat the values of the original image border extending the
original image border by half-width of the kernel in each
direction. This treatment of the image edges is most appropriate
for preservation of boundary features during morphological
operations. The dimensions of the kernel cannot exceed half
of the corresponding dimensions of the image operand.
Opening with Symmetric Kernel
Operation icon
. Morphological image opening on binary, grey scale or
multi-component images. For multi-component images each component
is opened individually. During the operand selection process the
kernel selection is prompted by a special cursor marked
KER. Kernel has to be supplied as an image of the same
type (bits per pixel) as the image to be closed. Kernel may have
either odd or even number of rows and columns. Treatment of the
image border pixels is the same as in erosion and dilation
operations. The dimensions of the kernel cannot exceed half of the
corresponding dimensions of the image operand.
Closing with Symmetric Kernel
Operation icon
. Morphological image closing on binary, grey scale or
multi-component images. For multi-component images each component
is closed individually. During the operand selection process the
kernel selection is prompted by a special cursor marked
KER. Kernel has to be supplied as an image of the same
type (bits per pixel) as the image to be opened. Kernel may have
either odd or even number of rows and columns. Treatment of
the image border pixels is the same as in erosion and dilation
operations. The dimensions of the kernel cannot exceed half of the
corresponding dimensions of the image operand.
Dilation with flat kernel and mask
Operation icon for the binary kernel mask is
.
Morphological image dilation on grey scale or multi-component
images. The kernel is flat that is it has the value 0 for integral
image types and minimum image intensity for the images of floating
point types. This value for the kernel is selected as the most
popular for morphological dilations and erosions because they would
not introduce any values absent in the image source. Unlike
dilation with symmetrically shaped kernel, this operation allows
use of kernels of complex shape. The shape of the kernel is
controlled by the binary mask supplied as the second operand of the
operation. The pixels whose mask values equal 1 (foreground) are
included in the operation, the pixel whose mask values set to 0
(background) are ignored during the operation. For multi-component
images each component is dilated individually. The diameter of the
mask can be any positive integer odd or even.
Erosion with flat kernel and mask
Operation icon for the binary kernel mask is
.
Morphological image erosion on grey scale or multi-component
images. The kernel is flat that is it has the value 0 for integral
image types and minimum image intensity for the images of floating
point types. This value for the kernel is selected as the most
popular for morphological dilations and erosions because they would
not introduce any values absent in the image source. Unlike erosion
with symmetrically shaped kernel, this operation allows use of
kernels of complex shape. The shape of the kernel is controlled by
the binary mask supplied as the second operand of the operation.
The pixels whose mask values equal 1 (foreground) are included in
the operation, the pixel whose mask values set to 0 (background)
are ignored during the operation. For multi-component images each
component is dilated individually. The diameter of the mask can be
any positive integer odd or even.
Opening with flat kernel and mask
Operation icon for the binary kernel mask is
.
Morphological image opening on grey scale or multi-component
images. The kernel is flat that is it has the value 0 for integral
image types and minimum image intensity for the images of floating
point types. This value for the kernel is selected as the most
popular for morphological dilations and erosions because they would
not introduce any values absent in the image source. Unlike opening
with symmetrically shaped kernel, this operation allows use of
kernels of complex shape. The shape of the kernel is controlled by
the binary mask supplied as the second operand of the operation.
The pixels whose mask values equal 1 (foreground) are included in
the operation, the pixel whose mask values set to 0 (background)
are ignored during the operation. For multi-component images each
component is dilated individually. The diameter of the mask can be
any positive integer odd or even.
Closing with flat kernel and mask
Operation icon for the binary kernel mask is
.
Morphological image closing on grey scale or multi-component
images. The kernel is flat that is it has the value 0 for integral
image types and minimum image intensity for the images of floating
point types. This value for the kernel is selected as the most
popular for morphological dilations and erosions because they would
not introduce any values absent in the image source. Unlike closing
with symmetrically shaped kernel, this operation allows use of
kernels of complex shape. The shape of the kernel is controlled by
the binary mask supplied as the second operand of the operation.
The pixels whose mask values equal 1 (foreground) are included in
the operation, the pixel whose mask values set to 0 (background)
are ignored during the operation. For multi-component images each
component is dilated individually. The diameter of the mask can be
any positive integer odd or even.
Morphological reconstruction
Operation icon
for mask and
for marker. Morphological reconstruction of one image
(mask) by another (marker). .Algorithms and application described
in Luc Vincent, Morphological Grayscale Reconstruction in
Image Analysis: Applications and Efficient Algorithms. IEEE TRANS
on Image Processing, v 2, April 1993, pp176-20. During the operand
selection process the marker image selection is prompted by a
special cursor marked MKR. The marker image has to have
the same type (bits per pixel) as the image to be reconstructed.
Prior to application of the operation the image is inflated by the
2 pixels and an artificial background (0) frame is created.
Binary Filtering
Operations
Convolution with rectangular/square kernel
Operation icon
. General convolution operation can be applied to all image
types. The restriction is put on the kernel image type. This image
can only be of type Double (64 bit) or Float (32-bit) and can have
either odd or even dimensions. The resulting image type is the same
as source image type. For odd-sized kernel dimension the
centre of the kernel in that dimension is the central pixel, for
even-sized kernels the centre is between the pixels in the centre
of the corresponding dimension of the kernel Use Kernel Designer to
build even-dimensioned kernels.
Convolution with elliptic/circular kernel
Operation icon
. General convolution operation can be applied to all image
types. The restriction is put on the kernel image type. This image
can only be of type Double (64 bit) or Float (32-bit can have
either odd or even dimensions. The resulting image type is the same
as source image type. If the kernel image supplied as a rectangular
image the kernel actually used is the ellipse inscribed into the
rectangle.

. For odd-sized kernel dimension the
centre of the kernel in that dimension is the central pixel, for
even-sized kernels the centre is between the pixels in the centre
of the corresponding dimension of the kernel Use Kernel Designer to
build even-dimensioned kernels. In case of square kernel image the
kernel used is the circular. Parts of the kernel outside the
inscribed ellipse/circle are not used.
Median Filter with Square Kernel
Operation icon
. Median filter is a non-linear filter belonging to the
class of rank filters. It removes noise but preserves the edges
within the original image better than linear filtering techniques.
First operand in this operation is an image, second is the size of
the square filtering kernel, i.e. the length in pixels of the side
of the square around each pixel within the image where the ranking
is performed. The length can be either odd or even. The pixel which
receives the result is in the centre of the square. For RGB images
the operator is applied to each component. . Prior to application
of the operation the image is inflated by the kernel size and an
artificial frame is created by repeating pixels in the original
boundary. Other applications mirror the boundaries but in case of
very large kernels it leads to loss of edges near the boundary.
Repeating the last known pixel outside the boundary of the image
preserves the original edges near the image boundary. Kernel
dimensions cannot exceed half of the source image dimensions.
Median Filter with Circular Kernel
Operation icon
. This is an isotropic version of median filter. Unlike the
square kernel version it does not introduce geometric distortion
but runs slightly slower. First operand in this operation is
an image, second is the diameter of the kernel. This diameter can
be either odd or even. For RGB images the operator is applied to
each component. Boundary action is the same as in filter with
square kernel.
Separable Median Filter
Operation icon
. This operation runs single dimensional median filter in X
direction, then the result is subject to the single directional
median in Y direction. First operand in this operation is an image,
second is the diameter of the kernel. The diameter can be either
odd or even. For RGB images the operator is applied to each
component. Boundary action is the same as in filter with square
kernel. This operation is faster than both previous median filters.
It distorts the features but tend to preserve vertical and
horizontal edges. It is useful for calculation of illumination
trends in an image.
Fast Isotropic Low Pass Filter with Kernel Equivalent
to Box Filter

Operation icon
. Fast
isotropic smoothing filter with the kernel similar to a box filter.
It has much stronger high frequency suppression, steeper slope of
frequency response curve than the binomial filter below with very
similar calculation speed, that is close to separable filter. Its
proximity to a box filter is illustrated using the test pattern
from Bernd Jahne “ Digital Image Processing” Springer-Verlag 2002,
p.289. Here we present a test image after application of the
filter of the kernel size 9x9 pixels. Unlike traditional box
filter it shows no anisotropy and cross section at the centre of
the image exhibits a distinct pattern of the sinc function.

Smoothing Filter with Binomial Kernel
Operation icon
. This is a separable isotropic smoothing filter. For
description see Bernd Jahne “Image Processing for Scientific
Applications” p. 372. Second operand is the size of the smoothing
kernel. Treatment of the image border pixels is the same as in
median filter operation. Kernel horizontal and vertical size are
limited by the integer arithmetic used and cannot exceed 25 pixels.
One can stack them to emulate increased kernel size.
Binary Transforms
Variance Transform
Operation icon for radius of the transform’s
kernel is
.
Variance transform operation generates an image consisting of
variance in the given neighbourhood of each pixel of the source
image. The neighbourhood is a circle defined by its radius as the
second operand. Transform is useful for texture analysis. The
operation conserves the image type. For example, variance transform
of the 8-bit image is an 8-bit image. Values outside 0-0xFF range
are set to 0 and 0xFF respectively. If precise variance is
required, use images of floating point types.
Normalised Sum of Squared Differences Transform
Operation icon for the radius of the
transform’s kernel is
.
Normalised sum of squared differences transform operation generates
an image consisting of sum of squared differences of the pixels in
the given neighbourhood from the central pixel of the
neighbourhood. The neighbourhood is a circle defined by its radius
as the second operand. The resulting sum is divided by the number
of pixels in the neighbourhood. Transform is useful for texture
analysis. It does not suffer from apparent resolution reduction
observed in Variance transform caused by implicit averaging built
into the variance transform. The operation conserves the image
type.
Deviation Trend Transform
Operation icon for the radius of the
transform’s kernel is
. This
operation is intended as a texture measure. It generates an image
of the trend in the intensity deviation from the central pixel
value in given neighbourhood of each pixel of the source image. The
neighbourhood is a circle defined by its radius as the second
operand. The operation produces image of floating point type. For
8, 16 and 24-bit images the result is a 32-bit floating point
image. For higher bit count image types it is an image of type
double. For multi-component images the operation is applied to the
intensity component of the image.
Texture Directionality
Operation icon
. Texture directionality transform generates an image with
pixel values representing strength of texture directionality in the
neighbourhood of a given pixel. The strength of directionality
measure is obtained as follows:
1. In the square of the edge size N
given by the user N darkest and N brightest pixels
are calculated.
2. From each set of pixels, the
darkest and the brightest a fitted line are obtained together
with the values of

explained variances
and
.
3. The texture directionality measure is
calculated as the cosine of the angle between those 2 line scaled
by the explained variances and the ratio of the dynamic
range
of
the neighbourhood to the dynamic range
of the image type. For example for 8-bit
images I =255. For floating point image types the value of
I is set to 1.

For the images of integral types this
measure is scaled to the dynamic range of the image type.
Usefulness of this operation is demonstrated in the following test
project. Here different textures from the set of Bordatz Textures
are processed with this operation. The texture in operand 1 has
more directional features than the one in operands 5 or 11 but same
directionality with less contrast than in operand 5.

Average intensity of the resulting image
indicates that the operation ranks the textures according to the
presence of the directionality in the texture and contrast of the
directional information.
Forward Fast Fourier Transform on Kernel Image
Operation icon
. This is a supportive operation for frequency domain
processing. This operation is designed to synchronise the frequency
range of an image of a convolution kernel (first operand) with the
frequency range of a given image (second operand) for future
processing in frequency domain. The term convolution refers to
spatial domain. Usually convolution kernel of a finite impulse
response (FIR) filter is an image smaller in size than the intended
processing target. Direct FFT of that image will produce in general
case a frequency domain image of smaller frequency range. This
operation will set the frequency range of the result to that of the
second operand.
Binary Interpolation
Operations
Interpolate under a mask anisotropic
Operation icon for the mask image
is
. This
operation takes a source image and a binary image of the same size.
The foreground pixels of the binary image make the mask of the area
that needs to be interpolated from the pixels outside the masked
area. This is a fast operation for anisotropic interpolation inside
the area defined by the mask somewhat similar to inpainting
technique described in "Fast Digital Image Inpainting., Manuel M.
Oliveira & all, Proceedings on the International Conference on
Visualization, Marbella 2001, Spain.” The difference is in
expanding kernel size depending on the local thickness of the mask
and inverse distance weighing of the pixels. The thickness of the
mask in this operation cannot exceed 255 pixels.
Interpolate under a mask tangent to mask
Operation icon for the mask image is
. This
operation takes a source image and a binary image of the same size.
The foreground pixels of the binary image make the mask of the area
that needs to be interpolated from the pixels outside the masked
area. This is a fast operation for isotropic interpolation inside
the area defined by the mask. During the interpolation process the
values of the pixels are propagated from the edge into the masked
region along the line tangent to the mask in this point. Tangent is
deduced from the distance transform of the mask. The thickness of
the mask in this operation cannot exceed 255 pixels.
Fill mask with bright background
Operation icon for the mask image is
. This
operation takes a source image and a binary image of the same size.
The foreground pixels of the binary image make the mask of the area
that needs to be “guessed” from the pixels outside the masked area.
The goal of this operation is to create a blended into background
replacement for the masked out area. The area outside the mask is
not affected. This operation fills the area under the mask with the
bright local background. The intensity of the bright local
background is calculated for each pixel of the mask as follows:
neighbourhood of the mask of radius R is selected, this
neighbourhood is thresholded into 2 classes, bright and dark,
average of the bright class makes the resulting value. The radius
R = 3·d, where d is the maximum
thickness of the mask. The thickness of the mask in this operation
cannot exceed 255 pixels. The operation uses simple image
statistic, SIS threshold in order to make the operation as fast as
possible.
Fill mask with neighbouring pixels
Operation icon for the mask image is
. This
operation takes a source image and a binary image of the same size.
The foreground pixels of the binary image make the mask of the area
that needs to be “guessed” from the pixels outside the masked area.
The goal of this operation is to create a blended into background
replacement for the masked out area in case when the image consists
of the areas with the same intensity, e.g. labelled image. The area
outside the mask is not affected. This operation fills the area
under the mask with the closest most representative neighbour
starting from the edges of the mask down to its skeleton. The
thickness of the mask in this operation cannot exceed 255 pixels.
Intended use of the operation is suppression of small areas in the
labelled image.
Binary Auxiliary
Operations
Build Gaussian kernel
This is an image generation operation.
Operation icons are
for
the kernel size and
for
standard deviation. The operation creates the image of Gaussian
function centred in the image centre, normalised so that the area
of the image is equal 1.The image created is of a type of floating
point
Binary Geometric
Operations
Crop by mask
Operation icon
. This operation reduces the image to a rectangular
region of interest. The region of interest is the largest rectangle
which can fit into the mask of the object of interest. The mask of
the object of interest, a binary image is supplied as the second
operand.
Augment Image Mirror Border
Operation icons are:
for the image source and
for
the border size. This operation produces an image of augmented size
with the border region mirroring the adjacent internal region of
the image.
Crop Image Border
Operation icons are:
for the image source and
for
the border size. This operation produces an image of reduced size
with the border region of specified size removed. It complements
Augment Image Mirror Border operation.
Binary Statistical
Operations
This class of
operations takes works on images, takes scalar or image as a
parameter and returns a scalar.
Pixel Count for Given Grey Level
Operation icon
. Operation calculates the number of pixels corresponding
to a given grey in the histogram. For RGB images the histogram is
calculated on the intensity component of the image.
Number of Pixels Exceeding Given Grey Level
Operation icon
. Operation calculates the number of pixels in the image
histogram higher than a given grey level. For RGB images the
operation is performed on the histogram of the intensity component
of the image.
Per Element Maximum of Two Operands
Operation icon
. Calculates per element maximum of 2 operands. If
both operands are images calculates per pixel maximum of 2 images.
For RGB images it calculates per pixel maximum for each
channel.
Per Element Maximum of Two Operands
Operation icon
. Calculates per element minimum of 2 operands. If both
operands are images calculates per pixel maximum of 2 images.
For RGB images it calculates per pixel minimum for each
channel
Mean within Masked Area
Operation icon
. This operation calculates mean of the image pixel grey
values within the area marked by the supplied mask. Mask foreground
indicates the pixels of interest, participating in the calculation
of mean. For RGB images calculates mean of the brightness,
intensity component of the image within the mask.
Standard Deviation within Masked Area
Operation icon
. This operation calculates standard deviation of the image
pixel grey values within the area marked by the supplied mask. Mask
foreground indicates the pixels of interest, participating in the
calculation of standard deviation. For RGB images calculates
standard deviation of the brightness, intensity component of the
image within the mask.
Maximum Grey Level within Masked Area
Operation icon
. This operation calculates maximum intensity, maximum grey
level of the image pixel grey values within the area marked by the
supplied mask. For RGB images it calculates maximum of the
brightness, intensity component of the image within the mask.
Median Grey Level within Masked Area
Operation icon
. This operation calculates median intensity, median grey
level of the image pixel grey values within the area marked by the
supplied mask. For RGB images it calculates median of the
brightness, intensity component of the image within the mask
Minimum Grey Level within Masked Area
Operation icon
. This operation calculates minimum intensity, minimum grey
level of the image pixel grey values within the area marked by the
supplied mask. For RGB images it calculates minimum of the
brightness, intensity component of the image within the mask.
Binary Operations Applicable
Only To Binary Images
Threshold by Blob Area, Preserve Blobs of
Large Area
Operation icon
. The operation takes one image and one scalar operand.
Operation identifies 8-connected blobs within the given binary
image. Blobs of the area, number of pixels larger than given by the
second operand are preserved in the resulting binary image. Smaller
blobs have their pixels assigned to background.
Threshold by Blob Area, Preserve Blobs of Small
Area
Operation icon
. The operation takes one image and one scalar operand.
Operation identifies 8-connected blobs within the given binary
image. Blobs of the area, number of pixels larger than given by the
second operand are preserved in the resulting binary image. Smaller
blobs have their pixels assigned to background.
Threshold by Blob Eccentricity, Preserve Blobs of
Large Eccentricity
Operation icon
. The operation takes one image and one scalar operand.
Operation identifies 8-connected blobs within the given binary
image. An ellipse in inscribed into the blob. Blobs of the
eccentricity larger than given by the second operand are preserved
in the resulting binary image. Blobs with smaller eccentricity,
close in shape to a circle have their pixels assigned to
background.
Threshold by Blob Eccentricity, Preserve Blobs of
Large Eccentricity
Operation icon
. The operation takes one image and one scalar operand.
Operation identifies 8-connected blobs within the given binary
image. An ellipse in inscribed into the blob. Blobs of the
eccentricity smaller than given by the second operand are preserved
in the resulting binary image. Blobs with larger eccentricity, more
elongated have their pixels assigned to background.
Binary Operations Applicable Only To 24-bit
Images
Segment image by Red-Green histogram
Operation icons are:
for the RGB image source (first input) and
for
the labelled 256x256 image of 2-dimensional red-green histogram of
the source image (second input). Areas of the histogram attributed
t the same label are marked in the output image with the same
colour, average to each cluster in the labelled histogram. Note
that the labelled image cannot have more than 256x256 levels. Hence
it can be at most a 16-bit image. A raw 2D histogram of a large
image can be a 32-bit image. The operation is not design to work
with those and will generate and error.
Segment image by Red-Blue histogram
Operation icon
. Takes an RGB image source
as the first input and the labelled 256x256 image of
2-dimensional red-blue histogram of the this image as the second
input. Areas of the histogram attributed t the same label are
marked in the output image with the same colour, average to each
cluster in the labelled histogram.
Segment image by Green-Blue histogram
Operation icon
. Takes an RGB image source
as the first input and the labelled 256x256 image of
2-dimensional green-blue histogram of the this image as the second
input. Areas of the histogram attributed t the same label are
marked in the output image with the same colour, average to each
cluster in the labelled histogram.
Segment image by Hue-Intensity histogram
Operation icon
. Takes an RGB image source
as the first input and the labelled 256x256 image of
2-dimensional hue-intensity histogram of the this image as the
second input. Areas of the histogram attributed t the same label
are marked in the output image with the same colour, average to
each cluster in the labelled histogram.
Segment image by Hue-Saturation histogram
Operation icon
. Takes an RGB image source
as the first input and the labelled 256x256 image of
2-dimensional hue-saturation histogram of the this image as the
second input. Areas of the histogram attributed t the same label
are marked in the output image with the same colour, average to
each cluster in the labelled histogram.
Segment image by Intensity-Saturation histogram
Operation icon
. Takes an RGB image source
as the first input and the labelled 256x256 image of
2-dimensional intensity-saturation histogram of the this image as
the second input. Areas of the histogram attributed t the same
label are marked in the output image with the same colour, average
to each cluster in the labelled histogram.
Ternary Filter
Operations
Local Image Smoothing with Intensity Range
Constraint
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is a filter inspired by the popular
Bilateral Filter, described in C. Tomasi and R. Manduchi,
"Bilateral Filtering for Gray and Color Images", Proceedings of
the 1998 IEEE International Conference on Computer Vision,
Bombay, India. The operation takes one image and two scalar
operands. First operand is the diameter of the kernel. It has to be
odd. The second operand is k=δ, if
δ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel (see below). The filter belongs to so called
Intensity Constrained Flat Kernel (ICFK) filters, whose output is
described by the formula:
,
where
is a histogram of the part of the
image, which is masked by the kernel χ with the centre at
,
is a vector describing the spatial position of
the pixels
,
where S is the spatial domain,
The constraint K(p) takes 2
forms:
K(p) = Ip ± δ (
δ³ 1)
K(p) = Ip ± Ip
·g ( 0<
g<1).
The later makes the filter applicable to
images of any type because image dynamic range does no appear
explicitly in the constraint expression,

is the average intensity
within that part of the histogram under the kernel mask, which
satisfies the constraint K(p),
is the
median of the area under the kernel mask.
The filter is described in detail in A. Gutenev
“Intensity Constrained Flat Kernel Image Filtering Scheme -
Definition and Applications”, submitted to Proceedings of the
2010 International Conference of Signal and Image Engineering,
London, U.K., 30 June - 2 July, 2010.
Local Image Median with Intensity Range
Constraint
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. The operation takes one image and two
scalar operands. First operand is the diameter of the kernel. It
has to be odd. The second operand is k=δ, if
δ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel (see below). The filter belongs to so called
Intensity Constrained Flat Kernel (ICFK) filters, whose output is
described by the formula:
,
where
is a histogram of the part of the
image, which is masked by the kernel χ with the centre at
,
is a vector describing the spatial position of
the pixels
,
where S is the spatial domain,
K(p) = Ip ± Ip
·g, is the
constraint. Selection of constraint in this form makes the filter
applicable to images of any type because image dynamic range does
no appear explicitly in the constraint expression,

is the median of the
intensity within that part of the histogram under the kernel mask,
which satisfies the constraint K(p),
is the
median of the area under the kernel mask.
Local Exclusive Median with Intensity Range
Constraint
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another operation falling within
definition of Intensity Constrained Flat Kernel filtering scheme.
It is designed to suppress features falling within the intensity
constraint of central pixel. Pixels within the given range are
replaced with median of the area under the kernel with intensities
outside the range. The operation takes one image and two scalar
operands. First operand is the diameter of the kernel. It has to be
odd. The second operand is k=δ,
ifδ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel. Operator’s output is described by the
formula:
,
where
is the pixel count of the histogram at the
level Ip,
is the part of the histogram
satisfying the constraint
K(p)
,
where
is the compliment of the constraint
K(p), that is the set of all intensities within the
histogram
lying outside the K(p) range defined around
the pixel at
;
sup{ K(p)} is the top of
the range K(p); for example for K(p) written
as
K(p)={
} it is
G = F
.
Detailed description of the operator and one
of its applications is given in “Alex A. Gutenev., Intensity
Constrained Flat Kernel Filter for Local Dark Feature Suppression.
Application to Removal of Hair Artifacts in Dermatoscopic
Images., in Image Processing: Algorithms and Systems X; and
Parallel Processing for Imaging Applications II Proceedings
of the SPIE, Volume 8295, pp. 829517-829517-9 (2012).”
Maximize Contrast within Intensity Range
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another filter falling within the
definition of Intensity Constrained Flat Kernel filtering scheme.
The operation takes one image and two scalar operands. First
operand is the diameter of the kernel. It has to be odd. The second
operand is k=δ, if
δ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel (see below). The operation is aiming to
increase the contrast of the pixels in the output image. The output
of the filter is described by the formula:
,
where
is a histogram of the part of the
image, which is masked by the kernel χ with the centre at
,
is a vector describing the spatial position of
the pixels
,
where S is the spatial domain,
K(p) = Ip ± Ip
·g, is the
constraint. Selection of constraint in this form makes the filter
applicable to images of any type because image dynamic range does
no appear explicitly in the constraint expression,

F =
,
where
is the average intensity of the area under the kernel
χ at 
The filter is described in A. Gutenev
“Intensity Constrained Flat Kernel Image Filtering Scheme -
Definition and Applications”, submitted to Proceedings of the
2010 International Conference of Signal and Image Engineering,
London, U.K., 30 June - 2 July, 2010.
Local Maximum within Intensity Range
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another filter falling within the
definition of Intensity Constrained Flat Kernel filtering scheme.
The operation takes one image and two scalar operands. First
operand is the diameter of the kernel. It has to be odd. The second
operand is k=δ, if
δ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel. It can be viewed as intensity constrained
morphological dilation and is defined by the formula:
,
where
is a histogram of the part of the
image, which is masked by the kernel χ with the centre at
,
is a vector describing the spatial position of
the pixels
,
where S is the spatial domain,
K(p) = Ip ± Ip
·g, is the
constraint. Selection of constraint in this form makes the filter
applicable to images of any type because image dynamic range does
no appear explicitly in the constraint expression,

F =
where
is the average intensity of the area under the kernel
χ at 
At the time of creation this filter
presented only a theoretical interest, no applications were found
for it. The operation takes one image and two scalar operands.
First operand is the diameter of the kernel. It has to be odd. The
second operand is the fraction (0,1) of intensity used for
constraining the intensity range within the kernel.
Local Minimum within Intensity Range
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another filter falling within the
definition of Intensity Constrained Flat Kernel filtering scheme.
The operation takes one image and two scalar operands. First
operand is the diameter of the kernel. It has to be odd. The second
operand is k=δ,
ifδ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel. It can be viewed as intensity constrained
morphological erosion and is defined by the formula:
,
where
is a histogram of the part of the
image, which is masked by the kernel χ with the centre at
,
is a vector describing the spatial position of
the pixels
,
where S is the spatial domain,
K(p) = Ip ± Ip
·g, is the
constraint. Selection of constraint in this form makes the filter
applicable to images of any type because image dynamic range does
no appear explicitly in the constraint expression,

F =
where
is the average intensity of the area under the kernel
χ at 
At the time of creation this filter
presented only a theoretical interest, no applications were found
for it. The operation takes one image and two scalar operands.
First operand is the diameter of the kernel. It has to be odd. The
second operand is the fraction (0,1) of intensity used for
constraining the intensity range within the kernel.
Directional low pass filter
Operation icons are
for the length of the kernel and
for
the direction of the smoothing. This operation applies smoothing
along a line to a source given as a first operand. The kernel is a
line whose size is given by the second operand and the direction is
specified by the third operand. The direction is specified in
radians.
Ternary Threshold
Operations
Threshold at Local Average within Intensity
Range
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another filter falling within the
definition of Intensity Constrained Flat Kernel filtering scheme.
The operation takes one image and two scalar operands. First
operand is the diameter of the kernel. It has to be odd. The second
operand is k=δ, if
δ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel. Its output is described by the formula:
,
where
is a histogram of the part of the
image, which is masked by the kernel χ with the centre at
,
is a vector describing the spatial position of
the pixels
,
where S is the spatial domain,
K(p) = Ip ± Ip
·g, is the
constraint. Selection of constraint in this form makes the filter
applicable to images of any type because image dynamic range does
no appear explicitly in the constraint expression,
F =G=
,
where
is the average intensity of the area under the
kernel χ at 
The operation takes one image and two scalar
operands. First operand is the diameter of the kernel. It has to be
odd. The second operand is the fraction (0,1) of intensity used for
constraining the intensity range within the kernel. The operation
finds the average intensity within the kernel and assigns to the
central pixel to the foreground if its intensity is within the
given range of the average, otherwise it assigns the corresponding
output pixel to the background. The threshold operation is
described in detail in A. Gutenev “Intensity Constrained Flat
Kernel Image Filtering Scheme - Definition and Applications”,
submitted to Proceedings of the 2010 International Conference of
Signal and Image Engineering, London, U.K., 30 June - 2 July,
2010.
Threshold Below Local Average within Intensity
Range
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is one of the possible inverses of
the previous operation, where the output is assigned to foreground,
if local average is below the infimum of the range around the
central pixel:
F =G=
,
where
is the average intensity of the area under the
kernel χ at 
K(p) = Ip ± Ip
·g, is the
constraint
The operation takes one image and two scalar
operands. First operand is the diameter of the kernel. It has to be
odd. The second operand is the fraction (0,1) of intensity used for
constraining the intensity range within the kernel.
Threshold Above Local Average within Intensity
Range
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another of the possible inverses
of the Threshold at Local Average within Intensity Range operation,
where the output is assigned to foreground if local average
is above the supremum of the range around the central
pixel:
F =G=
,
where
is the average intensity of the area under the
kernel χ at 
K(p) = Ip ± Ip
·g, is the
constraint
The operation takes one image and two scalar
operands. First operand is the diameter of the kernel. It has to be
odd. The second operand is the fraction (0,1) of intensity used for
constraining the intensity range within the kernel.
Pixel Clustering in Local Neighbourhood
Operation icons are
for the diameter of the kernel and
for
the intensity range. This operation performs local clustering on
neighbouring pixels based on given definition of neighbourhood and
on the image intensity range defining intensity equivalence within
the cluster. This is an experimental procedure in the process of
evolution and it will be modified. We do not recommend using it as
yet in a production environment.
Threshold by Statistics of another Image
Operation icons are
for the diameter of the image source,
for
the second, usually smaller sized image and
for the standard deviation multiplier. This
operation is designed to take the mean and standard deviation of a
second operand, presumably a smaller image or a sub-image of the
first operand, multiply the standard deviation by the supplied
multiplier. The results of the multiplication define a range around
the calculated mean. This range is the threshold range defining the
foreground in the output binary image. For multi-component images
the ranges obtained from different components yield the axis of the
ellipse or ellipsoid defining the foreground of the resulting
binary image.
Ternary Threshold Operations
Applicable to Multi-component Images
Threshold by Relative Statistics of another
Image
Operation icons are
for the diameter of the image source
, for the
second, usually smaller sized image and
for the standard deviation multiplier. This operation
is designed to take the mean and standard deviation for each
component of a second operand, presumably a smaller image or a
sub-image of the first operand, multiply the components standard
deviations by the supplied multiplier. The ratios of the component
means are calculated together with scaled standard deviations. The
scaled standard deviations yield the axis of the ellipse or
ellipsoid. The calculated ratios of component means make the centre
of the ellipse/ellipsoid. The ratios of the components of each the
pixel are compared against the ellipse/ellipsoid thus being
assigned to the foreground or background of the resulting binary
image.
Ternary Transforms
Local Image Variance with Intensity Range
Constraint
Operation icons are
for the diameter of the kernel and
for
the intensity constraint. This is another operation falling within
definition of Intensity Constrained Flat Kernel filtering scheme.
It is designed as a texture measure. The operation takes one image
and two scalar operands. First operand is the diameter of the
kernel. It has to be odd. The second operand is k=δ, if
δ³ 1, where
δ is an intensity range or k=g, if 0< g<1, where g is the fraction of the intensity of
the reference pixel. Detailed description will be provided
following pending publication.
Special tasks
Determining Average Grain Size
From Metallographic Images
This feature is available in Full Size image
view of a calibrated binary image.

If the project is not calibrated the menu is
greyed out.
In this feature it is assumed that the
binary image is a two-phase metallographic image, where one phase
is represented by the foreground (white) and another with the
background (black). The background is assumed consisting of
thing lines separating the grains of the foreground. The average
size of these grains is calculated according to the ASTM standard E
112-96 and close to it Australian Standard AS 1733-1976. ASTM
standard employs formula for calculation of the grain size while
the Australian standard employs a look up table.
The results of the calculations are presented
in the following form

Two calculation methods of the grain size
calculations are employed: Planimetric Method and Intercept Method.
These methods are described in detail in the standards. In the
Planimetric Method the size of the 3-dimensional grain is deduced
from the average area of the grain in the image. In the Intercept
Method the size is deduced from the average length of the line
segments intercepted by the grain body.
In Supplementary Information section we
present the data used in calculation for both methods as well as
additional grain size calculation based on fully visible grains
only. The standard methods make use of partially usable grains as
well.
Pressing “Save” button user can save the
results in comma delimited .csv text file. The name of the file is
specified interactively.
Memory management
With advent of megapixel cameras size of
images quickly increased to the point of filling all available
address space of 32-bit Windows operating system. In these
circumstances any image processing application without memory
management is self-limiting. In Pictorial Image Processor© the
objects responsible for the largest memory consumption are the
images. For example, 5 megapixel image converted to type
double precision floating point takes 40 megabyte. Keeping in RAM
even a small algorithm comprising this type of images exerts a
significant stress on operating system and ultimately performance
of the computer.
Memory manager of Pictorial Image Processor©
performs the following tasks:
1. Monitors memory consumption of
the Pictorial Image Processor© application
2. If a preset limit of the system
memory is reached, caches into a temp directory image stores of the
images
3. If a Pictorial Image Processor©
project loses focus the image store for the whole project is cached
to a temp directory.
Memory management tasks are performed on
background minimising impact on application performance in its
principal task. The pixel stores are cached into a subdirectory
“/pip” of the system directory holding temporary files, defined by
environment variable TEMP. The cache is cleaned when application
terminates normally. On application’s start up it attempts to
clean up cache directory. This may not happen, if TEMP system
variable has been changed since last execution of the
application.
The memory manager also operates on 64-bit
operating systems reducing the need for use of virtual memory.