VIPBase is a free software with unique features that are useful for image and video processing. See highlights of the included features.

What's new (Current version 06.08.01)

Highlights of Features

Image processing Video processing Photo enhancement
Convert RGB to other color spaces
Replace colors
Change tone
Canny edge detection
Label images
User defined image filter
Compose multiple images
Extract images from a video
Create videos from image sequences
Split / Merge videos
Label a video
Add photo frame
Create online photo album
Computer Vision algorithms Visualization File management
Affine, Perspective transformation
Radial distortion removal
Background subtraction
Camera calibration
AdaBoost face detection and feature training
Visualize a hierarchical graph
Visualize data sequences
Batch rename files
Batch create folders
Remove duplicate files
Remove empty folders and files

Copyright

Downloading, installing or using VIPBase (the software) signifies acceptance of these terms and conditions of the license.

Downloads and Installation

Documentations

Change Log

FAQ


Supported image formats

Format Extension Read Write
Windows Bitmap bmp 1~24-bit 8,24-bit
Jpeg jpg,jpeg 8-bit grayscale, 24-bit 8-bit grayscale, 24-bit
Tiff tif,tiff 1~24-bit 24-bit
CompuServe Gif gif 1~8-bit 8-bit
Portable Network Graphics png 1~24-bit 24-bit
Targa tga 1~24-bit 24-bit
Portable Bitmap ppm,pgm,pbm 1,8,24-bit 1,8,24-bit
Encapsulated Postscript eps 8-bit grayscale 8-bit grayscale
Adobe Photoshop psd 8,24-bit 24-bit

Note that:


User interface

The workspace of VIPBase can be divided into 6 parts, as shown below.

The child windows (called image windows here), the menu, the toolbar and the status bar are standard in a Multiple Document Interface (MDI), as seen in many Windows applications such as Photoshop and Visual Studio. The shortcut bar and the list bar are two unique features that are introduced in VIPBase.

The usage of each part is explained as follows.

The image windows, the menu, the toolbar and the status bar

You can open multiple images in VIPBase and each opened image is displayed in a child window. See here for how to open images in VIPBase.

The shortcut bar

Tip: You can quickly hide or show the shortcut bar using the "Tab" key.

The list bar

When you open multiple images or when you create a web album using VIPBase's AlbumCreator, the list bar allows you to quickly go through multiple images in a single image window. See here for how to use the list bar.


Menu Commands

File, Edit, Draw, Image, Video, Tool, View, Window, Help, Popup context menu

File

Edit

Draw

Image

Video

Tool

View

Window

Help

Popup context menu


Toolbar and keyboard shortcuts

Toolbar Keyboard Menu Function
Ctrl+O File->Open Open an image file
Ctrl+S File->Save Save the current image
  Edit->Copy Selection Copy selection to clipboard
  Edit->Paste Selection Paste clipboard image as selection
    Go to the parent folder in the "Folder" and the "Files" tab of the shortcut bar
    Open selected files in the "Files" tab of the shortcut bar
  View->Point Tool Reset to the normal mouse pointer
  View->Zoom at Cursor Zoom at cursor
  View->Zoom Rectangle Zoom a rectangular region
  View->Magnifying Glass Zoom like a magnifying Glass
  View->Pan Window Navigate through the whole image using a thumbnail view
    Go to the first image on the list bar
    Go to the previous image on the list bar
    Go to the next image on the list bar
    Go to the last image on the list bar
  F5 File->Reload Reload the current image
  ESC or Ctrl+F4 File->Close Close the current image
  F6 File->Save As Save the current image as another file
  Ctrl+P File->Print Print the current image
  Ctrl+C Edit->Copy Copy the current image to clipboard
  Ctrl+V Edit->Paste Paste the clipboard image to a new file
  Ctrl+X Edit->Cut Selection Cut and fill the current selection with white color
  F4 Edit->Copy Image File Path Copy the full path name of the current image to clipboard
  F8 Image->Basic Operation->Grayscale Convert the current image to grayscale
  F9 Image->Edge detection->Canny Apply canny edge detection to the current image
  F7 Image->Histogram->Intensity Display the intensity histogram of the current image
  F3 Image->Image Info Display information of the current image
  + View->Zoom In Zoom in by 150%
  - View->Zoom Out Zoom out by 150%
  * View->Fit to Window Fit the current image to the window size
  / View->Normal Size Reset to the actual size of the current image
  Tab View->Shortcut Bar Show/Hide the shortcut bar
  F1 Help->Content Open the index page of documentations
  F2 Help->About VIPBase Open the About dialog
  Ctrl+Tab   Switch between image windows
  Left or J   Move cursor 1 pixel left
  Right or L   Move cursor 1 pixel right
  Up or I   Move cursor 1 pixel up
  Down or K   Move cursor 1 pixel down
  S   Move cursor to the left border of the current image window
  F   Move cursor to the right border of the current image window
  E   Move cursor to the top border of the current image window
  D   Move cursor to the bottom border of the current image window
  Home   Go to the first file on a list of consecutive file names
  PageUp   Go to the previous file on a list of consecutive file names
  PageDown   Go to the next file on a list of consecutive file names
  End   Go to the last file on a list of consecutive file names
  Insert   Change the color at the cursor position

Change Log

Release dateVersionChanges
08/01/200606.08.01First release


FAQ

  1. Q: What is special about VIPBase and how it all started?

    A: If you are a researcher in the fields of computer vision and image processing, there are some features of VIPBase that you may find very handy and are difficult to find in other popular free image and video processing softwares such as ImageMagick, XNView, Picasa, GIMP and VirtualDub. For example, to replace one RGB value with another in an image sounds very simple but believe it or not, there is no easy way to do this. Another example is extracting frames of some part of a video. VirtualDub certainly can do this but you have to extract frames of the entire sequence first, which takes time and disk space.

    I was so surprised finding out that such useful features were missing that I decided to write something as a complement to existing softwares. Initially VIPBase was intended to serve my own needs in my research work, but it turns out to be a popular tool widely used by my colleagues. So I decide to release it publicly and hope more people will find it useful.

    If your are a different type of user, you may also need some features of VIPBase such as the AlbumCreator, the hierarchy visualization tool and the batch renaming tool.

  2. Q: What tools are used in the development of VIPBase?

    A: The coding is done using Visual C++ 6.0 with SP5. The following tools are also used.

    • Leadtools Imaging SDK is used for loading/saving images and some image processing routines.
    • BCG Controlbar is used to create an OfficeXP-like user interface.
    • Xerces C++ Parser is used to parse XML files.

  3. Q: How to report bugs?

    A: Please make sure you have completed the following steps before reporting a bug:

    1. Read this FAQ and the documentation of the function you are using. Your answer may already be there.
    2. Visit our guestbook. The same problem may have been reported before and solutions may have been provided by other users.
    3. Make sure the problem you found is really caused by a bug of VIPBase rather than a misuse of the software, such as specifying a non-existent file or opening an image with unknown format.

    Please provide a detailed description of the problem. Sometimes when VIPBase encounters a problem, it will display an error dialog indicating the exact line number (of the source code) that caused the problem, such as the one shown below. Please include such information if it is available.

    Please send the report to supporting email. Keep your report concise and direct to the point. Since I work on this project only in my spare time, I may not be able to answer all emails in a timely manner. I appreciate your patience.


Open image file(s)

See here for the supported image formats for reading.

There are several ways to open a single image or multiple images.

File->Open

This command opens a single file open dialog, as shown below.

You can have a preview of the selected image before opening it. You can view the image information by clicking the "File Info" icon on the left. An example of image information is shown below.

File->Reload

This command reloads the current image. Note that if the current image has not been saved, any changes made will be lost after it is reloaded.

File->Open Multiple Files

This command opens a multiple files open dialog, as shown below. The selected (highlighted) files will be opened.

Note that:

  1. The maximum number of files that can be opened using this command is 10240.
  2. Only one window will be opened and the first selected file is displayed in this window. To navigate through these files, use the list bar at the bottom of VIPBase, as shown below, or use the navigation toolbar

File->Open Folder

This command opens a folder open dialog, as shown below. All images in the selected folder will be opened.

Note that:

  1. There is no upper limit for the number of files opened this way.
  2. Again, only one window will be opened and the first selected file is displayed in this window.

File->Open List

This command opens the images that are listed on a text file. Each line of the text file is the file name (with full path) of one image file. It is very convenient to use this command to open multiple files from different folders.
Note that:
  1. There is no upper limit for the number of files opened this way.
  2. Again, only one window will be opened and the first selected file is displayed in this window.

File->Recent file history

Up to 8 most recently opened images are recorded in the recent file history. Click any of them to open one image at a time.

File->Clear recent file history

This command clears the recent file history.

Open files using the shortcut bar

This feature allows you to open multiple files without opening any dialog.

First, choose the "Folder" tab on the shortcut bar and select the folder that contains the images. The content of the folder will be displayed in the "Files" tab on the shortcut bar, as shown below.

"Folder" tab"Files" tab

Double click any item and it will be opened in VIPBase if its format can be recognized. Otherwise, it will be opened with the associated program.

If multiple files have been selected, use the toolbar to open the selected files.

In the "Files" tab, use the toolbar to go to the upper folder.
Note that:

  1. You can right click in the "Folder" and the "Files" tab to bring up the popup context menu, as you do in a window explorer.
  2. The "Folder" and the "Files" tab are coupled which means when you change folder from either tab, the context of the other will change accordingly.

Drag and drop

You can open multiple files by dragging and dropping them into VIPBase. VIPBase will open a new window for each file.

Edit->Paste

If there is an image in the Windows clipboard, this command will paste the image to a new file in the system temporary folder (e.g. "c:\temp\" on my computer). The file name has the format "paste_yyyy_mm_dd_hh_mm_ss.bmp" (e.g. "paste_2005_08_11_23_55_40.bmp"). This is very convenient for exchanging data between VIPBase and other image processing softwares.

Command prompt

The command opens an image from the command line and the usage is "VIPBase image_filename".

Save image file

See here for the supported image formats for writing.

Note that when a file is being closed, VIPBase will NOT prompt you to save it. Please save any changes you have made before the file is closed.

File->Save

This command saves the current image using the same file name and format.

File->Save As

This command saves the current image as another file with a specified format. It opens a file save dialog, as shown below.

You can specify the image format and settings associated with that format, such as:


Batch rename files

This command opens the "Batch rename" dialog as shown below, which searches for files by criteria, gathers information of the files and batch renames the files according to specified rules.

This is a one of the most useful features of VIPBase because it offers a fast searching (compared with Windows searching) and multiple options for renaming files.

Warning: Some operations may delete or overwrite files.
Please always BACKUP your files before proceeding further.
The author will NOT be liable for any data loss while using or misusing this function.

File searching and handling

Gather information about the listed files

Batch renames files


Batch create folders

This command batch creates folders. In the dialog shown here, specify the folder list either by loading a text file or pasting text from the Windows clipboard. Each line is a folder name.

You can edit the content of the list. After you finish, click the "Create" button, VIPBase will create all the folders listed in the above text box.

VIPBase recursively creates folder which means if a folder's parent folder does not exist, VIPBase will create the parent folder first. In the above example, "C:\output\3" will be created first, then "C:\output\3\4" and finally "C:\output\3\4\5".

This is a safe command, which means if a folder exists and is not empty, VIPBase will not change or destroy the content of that folder.


Remove duplicate files

This command opens the "Remove duplicate files" dialog as shown below, which searches for and delete duplicate files within a single folder or across two folders.

Warning: Some operations may delete files.
Please always BACKUP your files before proceeding further.
The author will NOT be liable for any data loss while using or misusing this function.

Remove duplicate files within the same folder

  1. Specify the folder in the "Source folder".
  2. Uncheck the "Find duplicates between two directories" option.
  3. Set the searching criteria. Only files that meet the criteria will be searched.
    • In the "Prefix" box, input the string that must appear in the prefix of a file name. For example, if your input is "img", files with prefix such as "img01", "dc_img_0001", "00img" will be found. If you leave this box blank, any prefix is valid.
    • In the "Extension" box, input the extension you want to include or exclude. For example, if you want to find all ".jpg" and ".tif" files and exclude all ".bmp" files, input "jpg;tif;-bmp". If you want to find any files except all ".bmp" files, input "-bmp". Leaving this box blank means any extension is valid.
    • In the "Size(>=)" box, input the lower limit (in bytes) of the file size. Any file size will be valid if the number is "0".
  4. Specify the type of operation applied to the duplicate files.
    • "Test only" records the duplicate files in a log file (if enabled) and does not delete any file;
    • "Delete" records the duplicate files in a log file (if enabled) and deletes the files permanently;
    • "Move to" (which will enable the "Destination folder" box below) records the duplicate files in a log file (if enabled), renames the files according to their file name and moves the files to the destination folder that you specified. The renaming rule is Replace every "\" in the path with a "_" and replace the drive symbol ":\" with a "__". For example, a duplicate file "C:\output\aa.jpg" will be moved to "C:\temp\C__output_aa.jpg" if the destination folder is "C:\temp".
  5. Click the "Remove" button to start the process. The following description of the searching algorithm for the duplicate files may help you understand the behavior of this function better.
    1. The algorithm first gets the size information of all files in the source folder that meet the searching criteria.
    2. Then it groups files with the same size.
    3. It reads and compares the content of each file in the same group and then finds out the duplicate files within that group, which means that the algorithm finds out all duplicates regardless of the name, date and location of the files.
    4. The algorithm sorts the duplicates by their file names in either ascending or descending order, depending on what you have chosen.
    5. The algorithm only keeps the first file on the sorted list and deletes the remaining files.
  6. The number of sets of duplicates and deleted files are shown at the bottom of the dialog.
  7. Check out the log file (if enabled) for the list of duplicate files by clicking the "View" button, or you can delete the log file by clicking the "Clear" button.

Remove duplicate files across two folders

  1. Specify the folder in the "Source folder".
  2. Check the "Find duplicates between two directories" option and specify "Source folder 2" (called a reference folder).
  3. Set the searching criteria and type of operation, as described in step 3 and 4 in the previous section.
  4. Click "Remove" to start the process. In additional to what are described in the previous section, the algorithm also finds files (in the first folder) that have duplicates in the reference folder .
  5. Similarly, the algorithm sorts the duplicates by their file names in either ascending or descending order and deletes all files on the list except the first one. Note that, none of the files in the reference folder will be deleted.

Remove empty folders and files

This command removes all empty subfolders and files in the folder that you specified. In the dialog shown here, specify the folder. You can choose to remove empty folders or empty files or both. Click the "Find" button to find all empty folders and/or files and click the "Remove" button to delete them. You can edit the list before you click the "Remove" button.

Note that empty file means the size of the file is zero. Empty folder means the total size of the files contained in that folder is zero. So if a folder contains only empty files or empty subfolders, it is considered to be an empty folder too.


Print an image

The printing function of VIPBase is straightforward. It simply resizes the image proportionally to fit the paper size and prints it out from your default printer.


Working with the Windows clipboard

Edit->Copy

Copy the current image to the Windows clipboard.

Edit->Paste

Paste the image from the Windows clipboard to a new file in the system temporary folder (e.g. "c:\temp\" on my computer). The file name has the format "paste_yyyy_mm_dd_hh_mm_ss.bmp" (e.g. "paste_2005_08_11_23_55_40.bmp"). This is a tiny but extremely useful feature because it saves the clipboard image directly without opening any image editor.

Edit->Select None

Clear the selection.

Edit->Select Rectangle

Set the selection shape as a rectangle, as shown below. You can move the selection or click outside to cancel the selection.

Edit->Select Ellipse

Set the selection shape as an ellipse, as shown below. You can move the selection or click outside to cancel the selection.

Edit->Select Polygon

Set the selection shape as a polygon, as shown below. You can move the selection or click outside to cancel the selection.

Edit->Select Freehand

Set the selection shape as freehand, as shown below. You can move the selection or click outside to cancel the selection.

Edit->Copy Selection

Copy the current selection to the Windows clipboard.

Edit->Paste Selection

Paste the image from the Windows clipboard onto the current image as a rectangular region.

Edit->Cut Selection

Fill the current selection with white color.

Edit->Fill Selection

Fill the current selection with specified color.

Edit->Copy image file path

Copy the full path name of the current image to the Windows clipboard. It is very useful if you want to open the current image in other softwares.

Drawing functions

Draw->Text

Draw text on the current image. In the following dialog, you can specify the position and the content of the text as well as the font type, size and color.

The result looks like

Draw->Point

Draw a point on the current image. Similar to the above function except it also draws a red cross at the specified location.

Draw->Line

Draw a line on the current image. In the following dialog, you can specify the starting point, the ending point, the width, color and style of the line. You can also display text which will cross the center of the line.

The result looks like

Draw->Rectangle

Draw a rectangle on the current image. You can specify the top-left and the bottom-right corner of the rectangle as well as line width, color and style. You can also display text which will be centered in the rectangle.

Draw->Ellipse

Draw an ellipse on the current image. You can specify the top-left and the bottom-right corner of the bounding box of the ellipse as well as line width, color and style. You can also display text which will be centered in the ellipse.


Draw grids

This function generates a grid image. You can specify in the following dialog

You can choose from the following eight patterns of the grid.

Some examples of these patterns are shown below.


Draw a hierarchy from an XML file

This function draws a hierarchical graph from an XML file. One example of the generated image is shown as follows, which is the hierarchy of body joints.

The xml file that is used to generate this image is here.

Don't be intimidated by this. Actually it is quite straightforward even if you are not familiar with XML. Let's look at the definition of the xml file, which itself is a DTD file.

There are three attributes for the root of the hierarchy.

The attributes for each child node are.

Basic image processing

Resize

Resize the current image.

Rotate

Rotate the current image.

Flip Horizontal

Flip the current image horizontally.

Flip Vertical

Flip the current image vertically.

Grayscale

Convert the current color image to grayscale. The following dialog allows you to assign different weights for R,G and B channel. The default weights are 0.299, 0.587 and 0.114 respectively. Click the "Preview" button to get a quick preview of the result.

Inverse

Inverse the current image, making it like a photographic negative.

Blur

Blur the current image.

Sharpen

Sharpen the current image.

Convert RGB to other color spaces

This set of functions convert the RGB color space to other color spaces such as HLS, HSV, YIQ, YUV, YCbCr and CIE_XYZ.

Three grayscale images will be generated for each of three color channels. Note that the intensity of these grayscale images may have been rescaled to the range of [0,255].

The following example shows the same image in different color spaces.


Merge color channels

This function merges three channels in RGB, HLS or HSV color space into a 24 bit color image.

The following dialog allows you to select three channels and each should be a grayscale image.


Swap RGB channels

This set of functions swap RGB channels to RBG, GRB, GBR, BRG and BGR, respectively.

The following example shows an image and the swapped results.


Replace colors

This function replaces one set of colors with another.

In the following dialog, the left column is the list of colors that you want to replace. Each line contains the R,G,B value of one color. Each line in the right column is the corresponding new color. You can edit the lists directly. To add one more line, press CTRL+Enter. Or you can paste the lists from a text editor.

Both columns should have the same number of lines. If not, the smaller number will be considered.

The following example replaces RGB value of (0,0,255) and (0,0,128) with (0,0,255) and (0,0,128), respectively.

->

Change color of the pixel at the cursor position

You can easily change color of the pixel at the cursor position by pressing the "Insert" key. A dialog will show up as follows. Specify the R,G,B of the new color and click OK.


Change color tone

This set of functions change the color tone of the current image to the following settings: sepia, rose, apple, violet, aqua and metal. See the following example.

The original image:

After changed to each of the tone settings:


Count colors

This function counts the total number of unique colors in the current image. One example is shown here.


Auto color correction

This function automatically adjusts the contrast and color of the current image.

The following example shows one image and the corrected result.


Combine images

This function combines multiple images pixel-wisely. Available operations include add, subtract (2 images only), mean, median, and, or, xor, max and min.

In the dialog shown here, you can either select multiple files or specify a folder name to combine all images in that folder (including subfolders). You can only include certain types of files in that folder by giving the file extension. For example, to include all jpg files, use "jpg"; to include all jpg as well as bmp files, use "jpg;bmp"; to include all jpg files and exclude all bmp files, use "jpg;-bmp"; to include all but bmp files, use "-bmp". Leaving the extension box blank will include all files (same as "*.*").

The following example shows two images and the combined results.

Note that:

You can specify a transparent color, which will not be involved in any computation.
In the above example, if we set white as the transparent color, the results will change as follows.


Compose images


Trim an image

This function removes unwanted background pixels around the current image.

In the following dialog, you can specify a region around the foreground area. First, click the "Select top-left corner" button and then click the top-left corner of the region you want on the image. Do the similar for the bottom-right corner. VIPBase will use the color of the top-left corner as the background color.

Or you can directly specify the background color by clicking the "Select color to be trimmed" and then click any background pixel on the image. VIPBase will consider the whole image as the selected region.

The trimmed result of the above example is shown here:


Slice an image

This function sliced the current image into smaller pieces with the specified size. Each piece is saved as a single BMP file.

One example is shown here.

The original image:

Each sliced piece:


Canny edge detection

This function applies Canny, one of the most widely used edge detection algorithms, to the current image. A good introduction to the Canny algorithm is here. For details, please refer to the original paper [1].

In the following dialog, you can specify the kernel size and standard deviation of the Gaussian smoothing function. A larger kernel size will take more surrounding pixels into account for smoothing. A larger standard deviation will decrease the weight of the center pixel for smoothing.

The other two parameters you can play with are the high and low threshold that are used in the non-maximum suppression and the tracing part of the Canny algorithm. You will get more edge pixels by decreasing the thresholds.

The following figures show the results using different parameter settings. The first one is the result using the default parameters.

The original image (half sized):

Result using default parameters: kernel size=3, standard deviation=1, low threshold=12, high threshold=24

kernel size=3, standard deviation=1, low threshold=6, high threshold=12

kernel size=4, standard deviation=1, low threshold=10, high threshold=20

kernel size=5, standard deviation=2, low threshold=12, high threshold=24

Note that the Canny algorithm works on grayscale image only. VIPBase allows you to apply the Canny algorithm on each of the R,G,B channels and then combine three result images. To do this, check the "Detect edge in all three channels" option.

You can tell whether a pixel is an edge pixel in each of the R,G,B channels by its color. For example, a white (RGB=255,255,255) pixel means an edge pixel in all three channels; a yellow (RGB=255,255,0) means an edge pixel in R and G channels. So there are in total 8 possible colors in the result image. Result of the above example in all three channels is shown here.

VIPBase also supports other commonly used edge detection algorithms such as Sobel. See the documentation here

Reference

[1] Canny, J., A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence, 8:679-714, 1986.


Emboss effect

This function applies emboss effect to the current image. The following dialog allows you to adjust the depth and direction of the effect. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following shows some results using different values of the depth and the direction.

depth=50, direction=north

depth=0, direction=north

depth=75, direction=south east

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.

depth=50, direction=north


Halftone effect

This function converts the current image to a halftone image, which is a one-bit image that has been dithered for black and white printing or display.

The following dialog allows you to adjust the pattern rotation angle and the type of halftone (print or view). You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following shows result using 135 degree of rotation angle and the printing type of halftone.

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Mosaic effect

This function applies mosaic effect to the current image. The following dialog allows you to adjust the block size. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following shows some results using different values of the block size.

size=8

size=16

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.

size=4


Motion blur effect

This function applies motion blur effect to the current image. The following dialog allows you to adjust the size of the blur effect (in pixels), the direction of the motion (in hundredths of a degree. A positive value indicating a clockwise motion.), flag that indicates whether the motion extends only in one direction.

The following shows some results using different values of parameters.

size=30, direction=0, uni-direction=true

size=60, direction=3000, uni-direction=false

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.

size=15, direction=1500, uni-direction=true


Oil painting effect

This function applies oil painting effect to the current image. The following dialog allows you to adjust the sample size. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following shows some results using different values of the sample size.

size=8

size=16

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.

size=4


Posterize effect

This function applies poster effect to the current image by quantizing the image's colors to a specified number of color levels per plane. The following dialog allows you to adjust the levels. For example, two levels means two of red, two of green, and two of blue. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following shows some results using different levels.

levels=4

levels=16

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.

levels=4


Solarize effect

This function applies an effect to the current image that mimics the accidental exposure of photographic film to light. The following dialog allows you to set a threshold. The function will invert a pixel's intensity (in R,G,B respectively) if it is larger than this threshold.

The following shows some results using different thresholds.

threshold=36

threshold=128

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.

threshold=128


Affine transformation

This function applies an affine transformation to the current image.

An affine transformation consists of four sub-transformations: Scale, Stretch, Shear (in x or y direction) and rotation. The following dialog illustrates the exact meaning and matrix of each sub-transformation.

The overall transformation matrix is

or

One example of the affine transformation is show as follows.

The original image.

The image after the affine transformation. Scale=0.5, Stretch=1, Shear(y)=1.1, Rotate=10 degrees.

Note that the size of the result image can be very large. VIPBase sets an upper limit of 3600 pixels for the larger of the width and the height.

VIPBase also supports the perspective transformation, another widely used geometric transformation. See the documentation here.


Perspective transformation

This function applies a perspective transformation to the current image.

A perspective transformation projects 3D points onto a 2D plane, which is used to simulate the relationship between an object and its image shot with a camera. A perspective transformation can be represented with a 3*4 transformation matrix M. The relationship between M and the camera parameters can be modeled as

Given M and a 3D point with coordinate (X,Y,Z), its imaged coordinate (x,y) can be computed as:

In the following dialog, you can specify these camera parameters and VIPBase will compute the projection matrix M or you can provide M yourself.

Note that if you used the camera calibration tool of VIPBase previously, the computed camera parameters will be automatically loaded here.

You can test the perspective transformation by providing points with known 3D and 2D coordinates (the groundtruth). After you click the "Project" button, the groundtruth 2D points and the projected 2D points are marked in red and blue, respectively. One example is shown here.

You can visually test the perspective transformation by generating images from virtual cameras. First, click the "Select region to reconstruct" button and select a region on the image. Then click any of the three buttons below to generate image from a virtual overhead camera in x, y or z direction. If you skip the step of "Select region to reconstruct", VIPBase will consider the whole source image. Be aware that this may result in very large images. VIPBase sets an upper limit of 3600 pixels for the larger of the width and the height. Examples of reconstructed images are shown here.

VIPBase also supports the Affine transformation, another widely used geometric transformation. See the documentation here.


Radial distortion removal

This function removes the radial lens distortion in the current image. Radial distortion means world lines are not imaged as lines. VIPBase uses the algorithm in [1].

One example of an image before and after the radial distortion removal is shown here.

To remove radial distortion, click the "Pick a line" button in the following dialog then pick a distorted world line in the current image. Each line needs three points from one end to the other. To add one more line, click the button again and pick the new line.

Or you can directly type the coordinates of three points at each line. To add one more line, press "CTRL+Enter".

The following figure shows the picked lines that are used to generate the above result.

VIPBase supports the batch processing of radial distortion removal. See the documentation here.

Reference

[1] Richard Hartley, Andrew Zisserman, "Multiple View Geometry in Computer Vision", 2nd Ed., Chap. 7, Cambridge University Press, ISBN: 0521540518, 2004.


Change brightness

The following dialog allows you to change the brightness of the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

You can limit the change to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Image thresholding

The following dialog allows you to convert each channel of the current image to a binary bitmap using a pair of thresholds. In each channel, any pixel that is between the low and the high threshold is changed to white, otherwise to black. So the result image contains up to 8 unique colors. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following example shows an image before and after thresholding.

The original image:

The image after thresholding (low=128, high=255):

You can limit the change to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Image auto-thresholding

VIPBase can automatically decide a threshold [1] and convert the color image to a black and white bitmap. The following example shows an image before and after auto-thresholding.

The original image:

The image after auto-thresholding:

Reference

[1] N. Otsu, "A Threshold Selection Method from Gray-Level Histograms," IEEE Transactions on Systems, Man, and Cybernetics, vol. 9, no. 1, pp. 62-66, 1979.


Image normalization

The following dialog allows you to normalize the current image according to the specified mean and standard deviation (std) of pixel values. The mean and std of the current image before the normalization are computed and displayed initially.

The following example shows an image before and after an increase of std value (similar to an increase of contrast).

The original image (mean=72.6, std=64.1):

After normalization (mean=72.6, std=128):


Change image contrast

The following dialog allows you to change the contrast of the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following example shows an image before and after contrast change.

The original image:

After contrast change:

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Change Gamma value

The following dialog allows you to change Gamma value of the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following example shows an image before and after Gamma change.

The original image:

After Gamma change (blue=25):

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Change image hue

The following dialog allows you to change the hue of the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following example shows an image before and after hue change.

The original image:

After hue change:

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Change image saturation

The following dialog allows you to change the saturation of the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The following example shows an image before and after saturation change.

The original image:

After saturation change (+64%):

After saturation change (-32%):

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Display histogram

VIPBase can display the histogram of each of the R,G,B channel as well as the intensity values of the current image.

The following figures are the histograms of the intensity and B channel of the image shown here. You can see the count of each pixel value by moving the mouse cursor.

The histogram of the intensity values.

The histogram of the B channel.


Histogram Equalization

This function applies Histogram Equalization to the current image. The following example shows an image before and after histogram equalization.

The original image:

The image after histogram equalization:


Label images

This function labels multiple images.

In the dialog shown here, you can either select multiple files or specify a folder name to label all images in that folder (including subfolders). You can only include certain types of files in that folder by giving the file extension. For example, to include all jpg files, use "jpg"; to include all jpg as well as bmp files, use "jpg;bmp"; to include all jpg files and exclude all bmp files, use "jpg;-bmp"; to include all but bmp files, use "-bmp". Leaving the extension box blank will include all files (same as "*.*").

Labels are stored in a text file. Each line of the text file contains labels for each image. You need to specify the horizontal position (left, center or right) and the vertical position (top, center or bottom) for each label. Multiple labels are separated by ";". You can specify the text file name in the "Text file" edit box.

The following example draws two labels on one image. The first one is "2006.05.07" on the top-left corner and the second is "Congress Center (Graz)" on the bottom-right corner. The labels should be:

left,top,2006.05.07;right,bottom,Congress Center (Graz)

After you click the "Label" button, you can choose the font type, size and color of the labels. The following figure shows the labeled results of the above example.

The labeled images are saved in the folder that you specified in the "Save to folder" edit box.


Morphological operations

The following dialog allows you to apply the morphological operations to the current image, including dilation, erosion, open, close and skeletonize.

Since morphological operations are performed on a binary image, you need to specify a threshold to convert the current image to black and white. Or this threshold can be decided automatically by VIPBase.

You also need to specify the background color. Morphological operations apply to the foreground pixels only. For example, the "erosion" operation erodes foreground pixels. The following example shows the results of all operations with black or white background color.

The original image:

The result of each morphological operation.

The result image is saved to the file that you specified at the bottom of the dialog.


Add image noise

The following dialog allows you to add random noise to the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

You can specify the level of noise and which channel (Master,R,G,or B) you want to add noise to. For example, the result of adding noise to the master channel of the following image is shown here.

The original image:

After noise (level=32) is added:

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Median filtering

The following dialog allows you to apply a median filter to the current image. You can see the result (the whole image or part of image at full size) instantly from the preview window.

The median filter is widely used for removing salt-and-pepper type of noise. You can specify the sample size of the filter. A larger sample size works better for noise removal, however, it also makes the blurring effect more visible. So a filter with sample size 3 will be a good starting point.

The following example shows an image before and after the median filtering.

The original image with noise:

After a median filter (with sample size 3) is applied:

You can limit the effect to the selected region. First select the region using the selection tool and then apply this function. One example is shown here.


Add photo frame

This function adds a frame to the current image. One example of the added frame is shown as follows.

The interface of this function is very simple. The only parameter that you can play with is the intensity of the shadow, which has a floating point value between 0 and 1. The above example uses 1. The following two use 0 and 0.5, respectively.


Display image information

This function shows information of the current image, including general information such as resolution, size and image format as well as EXIF information (if there is any).

One example is shown here.


View image in text

This function displays each pixel value (either in grayscale or RGB) of the current image in a plain text file. This can be very useful when you debug your image processing algorithms.

In the following dialog, you can choose to display or hide the position of each pixel in the text file.

Examples of both options are shown as follows.

A text file with pixel position. The first line of the file shows the size of the image.

A text file without pixel position.

For an image with the "BMP" format, you need to check the "Flip vertically" option because an image is vertically inverted in the BMP format.


User defined filter

The following dialog allows you to define your own image filters.

The meaning of each parameter is illustrated as follows.

After applying the filter, pixel value of the center of the sliding window becomes . So divisor can not be zero.

Pre-defined filters

VIPBase has pre-defined some well known image filters, including


Batch image processing

VIPBase can process multiple images in batch mode. Note that so far it only supports two functions: "Canny edge detection" and "Radial distortion removal".
  1. In the dialog shown here, you can specify either a text file that contains the list of files to be processed, or a folder so that all images in that folder (including subfolders) will be processed. You can only include certain types of files in that folder by giving the file extension. For example, to include all jpg files, use "jpg"; to include all jpg as well as bmp files, use "jpg;bmp"; to include all jpg files and exclude all bmp files, use "jpg;-bmp"; to include all but bmp files, use "-bmp". Leaving the extension box blank will include all files (same as "*.*").

  2. Click the "Load" button to load the file list.
  3. Select the destination folder. You can choose to delete all source files after the processing. (Backup your files before doing this!!)
  4. Choose the function and the usage of that function will show up.
  5. Set the parameters according to the usage.
  6. Click the "Run" button to start the batch processing. The progress is shown in the following dialog. You can stop the process by clicking the "Stop" button.


Extract video frames

This function allows you to extract frames from a video file. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify the source video file, the output folder, the first and the last frame of the segment you want to extract. If you want to extract the whole sequence and don't know the exact length of the sequence, just set a very large number as the last frame.

  2. Click the "Extract" button to extract each frame within the specified range. Each extracted frame will be saved as a single BMP file in the output folder.
  3. The progress is shown in the following dialog. You can stop the process by clicking the "Stop" button.


Create a video from images

This function allows you to create a video from a sequence of images. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, you can either select multiple files or specify a folder name to include all images in that folder including subfolders. You can only include certain types of files in that folder by giving the file extension. For example, to include all jpg files, use "jpg"; to include all jpg as well as bmp files, use "jpg;bmp"; to include all jpg files and exclude all bmp files, use "jpg;-bmp"; to include all but bmp files, use "-bmp". Leaving the extension box blank will include all files (same as "*.*").

    Note that images that have been found by VIPBase are sorted by name in ascending order. These files should be compatible in the created video, which means they should have the same width, height and image type (24-bit color or 8-bit grayscale). VIPBase decides the above information based on the first image on the list. Any image with different width, height or number of bits per pixel will be disregarded.

  2. Uncheck the "Batch mode" option.
  3. Specify the output video file name and the frame rate.
  4. If you want to compress the output video using some specific codec, check the "Specify video format" option. A dialog will show up as follows, allowing you to specify the video codec you want.

    Otherwise, leave it unchecked. By default, VIPBase will try to compress the video using the "Microsoft Mpeg-4 Video Codec V2". It is a highly recommended codec for its high compression rate and high image quality. You may need to download the codec from Microsoft's website. If this codec is not found on your computer, VIPBase will compress the video using the "Microsoft video 1" codec, which is usually available on your computer.

    Note that if the width of the video is not divisible by 4, the video will not be compressed properly using the Microsoft Mpeg4 codec. (I think this is a bug of the codec.) Therefore, you are prompted to truncate the width to the closest multiple of 4. If you don't want to do so, just click No.

Create videos in batch mode

By checking the "Batch mode" option, you can create multiple videos in batch mode. Each video corresponds to one image sequence in the same folder. For example, suppose you have image files as shown on the left of the following list. VIPBase will generate three videos, corresponding to the sequences in "c:\input\1", "c:\input\2" and "c:\input", respectively and the videos have the same path names as the folders, as shown on the right of the list.


Split a video

This function allows you to split a long video into several shorter videos with equal length. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify the source video file, the output folder, the first and the last frame of the range you want to split. If you want to split the whole sequence and don't know the exact length of the sequence, just set a very large number as the last frame.

  2. Specify the number of result segments and number of overlapped frames between each two successive segments. The following figure illustrates one example in which a sequence with 14 frames is split into 3 segments with 2 overlapped frames.

  3. Click the "Split" button to start the process.


Merge videos

This function allows you to concatenate several videos into a single video. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify the input folder (which contains source video files) and the result video file name.

    Note that videos that have been found by VIPBase are sorted by name in ascending order. These files should be compatible, which means they should have the same width, height and image type (24-bit color or 8-bit grayscale). VIPBase decides the above information based on the first video on the list. Any video with different width, height or number of bits per pixel will be disregarded.

  2. The parameter "Overlap" means the number of overlapped frames between each two successive segments. The parameter "Offset" means the number of the disregarded frames in the beginning of each video (starting from the second file). The following figures illustrate two examples of the same three videos being concatenated. These two examples have the same number of overlapped frames but the offsets in these two examples are 1 and 0, respectively.

  3. Click the "Merge" button to start the process.

Combine two videos

This function allows you to combine two videos pixel-wisely. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify two source videos and the result video, the first and the last frame of the segment you want to combine. If you want to combine the whole sequence and don't know the exact length of the sequence, just set a very large number as the last frame.

    Note that:

    • The two source videos should have the same width, height and image type (24-bit color or 8-bit grayscale).
    • If the lengths of the two source videos are different, the shorter one will be considered.
  2. Select the operation type. Currently, only max and min operation are supported.
  3. Click the "Combine" button to start the process.


Crop images from a video

This function allows you to crop images from a video file if the positions of the images are given. This can be useful when you work on an object tracking project: Given the video and the tracking trajectory of each object, you can get the images containing the tracked objects. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify the source video file, the trajectory file and the output folder.

  2. The trajectory file is a text file containing the positions of the images that need to be cropped. Each line of the trajectory file has the following information: the object id, the frame number and bounding box (left, top, right, bottom) of the object. One example of such trajectory files is shown here.

  3. You can filter out unwanted (e.g. too small) images by specifying a lower limit on the size of the cropped images.
  4. By checking the "Discard those out of boundary" option, you can eliminate those bounding boxes that are beyond the boundary of a video frame.
  5. If you check the "Crop images in two successive frames" option, for each bounding box, VIPBase will crop a pair of images in the current frame and in the previous frame.
  6. Click the "Crop" button to start the process. Each cropped image is saved as a single BMP file with name "xxx_yyyyyy.bmp". "xxx" is the object id and "yyyyy" is the frame number. Examples of cropped images are shown as follows.


Compute video gradient

This function allows you to compute the gradient of a video. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify the input video, the output video, the first and the last frame of the segment you want to process. If you want to process the whole input sequence and don't know the exact length of the sequence, just set a very large number as the last frame.

  2. Specify the weight of each component. VIPBase computes gradient in horizontal, vertical and temporal direction and the final value at each pixel is the weighted sum of these three components.
  3. You can select which channel the function should apply to. It can be the intensity, R, G, B channel or the max of (R,G,B).
  4. For each pixel in the result video, if its final gradient value is lower than the threshold specified in the output settings, the value is set to 0; otherwise, it is increased by the value specified in the "Brightness gain" box.
  5. Click the "Get gradient" button to start the process.

    The following figure shows some frames with computed gradient. Notice the difference between this function and the edge detection algorithm. This function considers not only the spatial but also the temporal gradient. The edges on the ground plane are largely eliminated because we assign more weight to the temporal gradient.

  6. This function can run in batch mode. Check the "Batch mode" and specify the input folder and the output folder (instead of the input video and the output video).

Label a video

This function allows you to draw text labels on a video. Note that only videos with the Video for Windows (VFW) format are supported. The extension of a VFW video usually is "avi".
  1. In the following dialog, specify the input video, output video and the label text file.

  2. The label file is a plain text file. Each line contains labels for each frame. You need to specify the horizontal position (left, center or right) and the vertical position (top, center or bottom) for each label. Multiple labels are separated by ";". See here for more details of how to write labels.

AlbumCreator

VIPBase offers a fully functional yet easy to use utility, called AlbumCreator, for creating web albums. See here for a sample album.

AlbumCreator stands itself out from other popular softwares or services of the same kind (such as PBase, Gallery, JAlbum and Picasa) in following ways:

  1. Unlike server based solutions, AlbumCreator generates albums on your hard drive, so you can view and edit your albums locally without any scripting support.
  2. Albums generated by AlbumCreator are pure html and jpeg files. The only thing you need to view the albums is your web browser. Because all links in the html files are relative links, uploading your albums onto any website is a no-brainer: you don't need to change anything.
  3. AlbumCreator supports subfolders and the hierarchical structure of the source folder is completely preserved in the generated html files, which means you can navigate through the album just like what you do in a Windows explorer. AlbumCreator also provides a way to sequentially browse the whole album just by clicking the previous or the next link.
  4. AlbumCreator automatically generates thumbnails for folders and images. You can set the title for each folder and image, or just use the folder or file name as the title. For each image, you can specify additional information such as date, place and detailed description of the image.
  5. AlbumCreator can add watermark and frame to each image. It also supports displaying of EXIF information
  6. AlbumCreator is super fast and extremely easy to use.
This is the interface of AlbumCreator. Most of items are straightforward and self-explained.

The following tutorial shows you how to create an album in three simple steps.

  1. Step 1: Specify information about the album. (Items with * are required information.)
    • Image and output folder: Image folder is the input folder where your images are stored. It can have subfolders. Output folder is the folder where the album will be saved. Initially it should be empty.
    • Background: You can use a plain background with the color you specified. The color is 3 hex-pairs for red, green and blue. For example, white is "FFFFFF" and black is "000000". If you are not sure about this, just use white.

      Or you can use a background image (in GIF or JPEG format). The background image will be tiled to fill the whole visible area of your web browser.

    • Image size: You may want to resize your images to a smaller size for two reasons: First, images with full resolution waste a lot of bandwidth for uploading and downloading and they are difficult to browse on a not so large screen. Second, you may want to protect your images (from being pirated) by keeping the full resolution version only to yourself. You can resize image either to a specified width or to a specified height. The other dimension will be resized proportionally.

      However, if you want to share the full resolution images anyway, just put zero in the box.

    • Thumbnail size: Specify the size of thumbnails. Thumbnails with height of 120 pixels would be a good choice.
    • Columns per row: Usually 4 thumbnails per row makes your pages look nicely spaced.
    • HTML extension: When someone visits your album website (e.g. www.yourphoto.net), your hosting web server will automatically redirect this domain name to the root index page of your album, which is usually index.htm or index.html, depending on the web server's setting on the default extension of HTML files. If you know this setting, choose the right one, otherwise, choose either one. Just provide the full URL (e.g. www.yourphoto.net/index.htm or www.yourphoto.net/index.html) in the link to your website.
    • Draw frame: If this option is on, AlbumCreator will draw a nice looking frame on each image. See one example here.
    • EXIF: If this option is on, AlbumCreator will display the EXIF information (if there is any) on each image page. One example is shown here.

    • Auto color: If this option is on, AlbumCreator will automatically adjusts the contrast and color of each image.
    • Numbering: If this option is on, a unique index number for each image will be displayed on each image page.
    • Show file name: If this option is on, the file name of each image will be displayed on each image page.
    • Album title and Owner name: These information will be displayed in the title section as well as the copyright section of each page.
    • Email: You can leave your contact email address, which will be displayed in the copyright section at the bottom of each page. If you don't want this email to be scanned by a spam email crawler, you can use an image (in GIF or JPEG format) of this address instead of text. AlbumCreator will decide whether this is an image file or real text.
    • Watermark: You can specify a watermark image, which will be overlaid on the bottom-right corner of each image. Watermark image provides a way to claim your copyright of your photos by imposing information such as your name on the images. One example is shown here.

      The watermark image.

      The image being watermarked.


  2. Step 2: Create thumbnail images and specify information about each image

    After you provide all necessary information in the previous step, click the "Create Thumbnails" button. This will resize all images, generate thumbnail images and copy them to the output folder. If you have hundreds of images, this will take a while. The progress is displayed in a popup window.

    After this is done, the information of each processed image will be displayed in the list bar of VIPBase, as shown below.

    Now you have an opportunity to edit information such as the title, date, place and detailed description of each image. When you navigate through the image list using the UP and DOWN key, the current image will be displayed accordingly.

    Tip: Instead of editing such information in VIPBase, you can do it a text editor.

    1. Close the AlbumCreator by clicking the "Close" button. Click "Yes" to save setting.
    2. Go to the output folder, you will find a text file with name "index_yyyy_mm_dd_hh_mm_ss.txt". Open it with your favorite text editor."
    3. The file contains the same information as in the list bar. Edit it and save it.
    4. Run AlbumCreator again and AlbumCreator will load the text file into the list bar.

  3. Step 3: Create the album

    After you are done with the editing, click the "Create Album" button to generate the html files. When finished, the album will be opened in your web browser.

    Note that:

    • AlbumCreator completely preserves the hierarchical structure of the source folder in the generated html files, which means you can navigate through the album just like what you do in a Windows explorer. For example, suppose we select "c:\photo" as the input folder and "c:\album" as the output folder. "C:\photo" contains the following images.

      The following figure illustrates the hierarchical structure of the input folder and the output folder after the album is created.

      For each image, three files are created: the resized image, the thumbnail image and the html file (called an image page). For each folder, an index page (shown in red) is created which shows the thumbnails of its images and subfolders.

      AlbumCreator sorts files in the same folder by name in ascending order. The thumbnail of the folder (except the root folder) is the thumbnail of the first image on the sorted list (shown in blue).

      On the top-left corner of each page (either folder index page or image page), the path from the root page to the current page is shown. So you clearly know where you are and you can go to any ancestor folder directly by click its link. Because AlbumCreator use relative path instead of absolute path, when you upload your album to a website, you don't need to change anything.

    • AlbumCreator also provides a way to sequentially browse the whole album just by clicking the previous or the next link on each image page.
One sample album is here. Some screen shots of this album are shown as follows.

The index page of the root folder "c:\album".