Scilab Home Page | Wiki | Bug Tracker | Forge | Mailing List Archives | Scilab Online Help | File Exchange
ATOMS : Image Processing Design Toolbox details
Login with GitLab

Image Processing Design Toolbox

This toolbox implements functions for object detection.
(2579 downloads for this version - 278823 downloads for all versions)
A more recent valid version with binaries for Scilab 5.2 exists: 5.0
Dr. Eng. (J) Harald Galda
Owner Organization
private individual
Harald Galda
Creation Date
March 3, 2010
Source created on
Scilab 5.2.x
Binaries available on
The maintainer of this module has not provided binaries.
            IPD - Image Processing Design Toolbox Version 3.3
Copyright (c) by Dr. Eng. (J) Harald Galda, 2009 - 2010.
Conveyed under the conditions of the GNU GPL Version 3 or later.

This toolbox provides functions for designing and parameterizing image
processing algorithms. The following functionality is provided:

1. Histogram calculation
   - gray level histogram
   - cumulated histogram

2. Thresholding
   - segmentation by threshold
   - threshold calculation by Otsu method

3. Morphological filters
   - dilation
   - erosion
   - closing
   - opening
   - top hat
   - bottom hat

4. Median filter

5. Filtering for edge detection
    - Sobel filter
    - Laplace filter
    - Prewitt filter
    - Scharr filter

6. Region based segmentation
   - distance transform
   - watershed transform

7. Blob analysis
   - searching connected regions in binary images
   - removing blobs that have less pixels than a lower bound or more pixels
     than an upper bound
   - calculating specific properties of blobs such as bounding box, centroid
   - drawing bounding boxes around objects found in an image
   - calculating histogram of blob sizes
   - calculating cumulated histogram of blob sizes

8. Displaying images in figure windows
   - display
   - conversion of RGB to indexed images
   - conversion of indexed images to RGB 

9. Conversion between color images and gray level images
   - RGB    to  gray level
   - RGB    to  L*a*b* 
   - L*a*b* to  RGB 

10. Opening image and video files
   - reading image files
   - writing image files
   - reading video files

Changes between version 3.2 and version 3.3

   - help directory structure is changed
   - typo in help of AnalyzeBlobs is corrected   
This version uses OpenCV 2.0 which is available for download at

It is recommended to choose Atlas library option when installing Scilab. IPD
can not be loaded if the reference library option was chosen during Scilab 
installation. The author of this toolbox does not use Intel Math Kernel
Files (3)
[840.15 kB]
Source code archive
This ZIP file contains the Scilab scripts, cpp functions and XML files. If you
have OpenCV 2.0 on your computer, you can copy the files


to the directory


or edit 


in the directory


and set the library path. 

Then you can compile the toolbox.

If you want to load the toolbox, you must copy the files


or the dll equivalent on your operating system to the directory


[5.27 MB]
This ZIP file contains all files necessary on Windows.
[2.12 kB]
Miscellaneous file
This file describes the toolbox.
News (19)
Comments (4)     Leave a comment 
Comment from Chin Luh Tan -- March 4, 2010, 01:59:49 AM    
Hi Dr Harald, 

Thank you again for your contribution. I've been posting some matlab base image 
processing example at, and was trying to
port over to 
scilab last time with sip and svip. 

I believe with your contribution, I could convert even more code to scilab base. I hope 
you don't mind if I quoted you name (and your tools) in my blog ragarding image 
processing using scilab?


Chin Luh
Answer from Harald Galda -- March 4, 2010, 09:35:38 AM    
Hi Chin Luh,

I am pleased to learn that you intend to use the toolbox I have created.

Please feel free to quote my name and tools.

Harald Galda
Comment from Harald Galda -- March 4, 2010, 09:33:59 AM    
This comment has been deleted.
Comment from Harald Galda -- March 4, 2010, 01:04:49 PM    

Comment from Owcz Ale -- March 9, 2010, 12:22:00 PM    
I used this example with newest sci-lab and IPD module loaded via mnodule menager.

Image = 0.5 * ones(9, 9) // generate gray image
Image(:, 3) = 0 // draw dark line
Image(:, 7) = 1 // draw light line
StructureElement = CreateStructureElement('square', 3) // generate structuring element
ResultImage = ErodeImage(Image, StructureElement)

There is stil problem with:

-->StructureElement = CreateStructureElement('square', 3) // generate structuring element
 !--error 4 
Undefined variable: TYPE_STRING

How can I fixed it?

Answer from Harald Galda -- March 10, 2010, 10:56:59 AM    
I loaded the IPD-3.3 into Scilab 5.2.1 and I did not reproduce that error.

The variable


is defined in


and IPD.start is loaded into Scilab by


Does that error occur only once (then it is temporary) or more than once?
Answer from Samuel Gougeon -- March 18, 2010, 12:17:41 PM    
> There is stil problem with:
> -->StructureElement = CreateStructureElement('square', 3) // generate structuring
> element
>  !--error 4 
> Undefined variable: TYPE_STRING

I am also experiencing such issues with IPD 3.3 installed thank to the ATOMS interface:

 !--error 4 
Undefined variable: TYPE_STRING
at line      30 of function ReadImage called by :  
--> // ------------------------------------------------
--> TYPE_STRING=type("a"); 
--> rgb=ReadImage("dispersion_spectrale.png");
--> [image tmp]=RGB2Ind(rgb);
 !--error 4 
Undefined variable: TYPE_DOUBLE
at line      53 of function RGB2Ind called by :  
[image tmp]=RGB2Ind(rgb);
--> // ------------------------------------------------
--> TYPE_DOUBLE=type(1.1); [image tmp]=RGB2Ind(rgb);
-->ShowImage(image,"Image test")
 !--error 4 
Undefined variable: TYPE_INT
at line      62 of function ShowImage called by :  
ShowImage(image,"Image test")
--> // ------------------------------------------------
--> TYPE_INT=type(uint8(1)); 
-->ShowImage(image,"Image test")
 !--error 4 
Undefined variable: TYPE_BOOLEAN

at line     116 of function ShowImage called by :  
ShowImage(image,"Image test")
--> // =======================================================
Apparently, either IPD\3.3\loader.sce launching IPD.start initializing these variables is
not run when installing IPD through the ATOMS manager, or it is run but from a function in
which variables are defined locally and lost at the end of it. Or... ?

Answer from Harald Galda -- March 18, 2010, 01:45:26 PM    
The variables TYPE_STRING, TYPE_INT, EDGE_SOBEL etc. are defined inside IPD.start and
IPD.start is called by loader.sce. Maybe loader.sce is not called after installation by

As far as I know a toolbox is not loaded during the Scilab session in which it was
installed by atomsInstall. A toolbox is loaded after closing and re-starting Scilab.
[get_person] Le compte avec l'identifiant 1 n'existe pas