This page lists various software developed at the Information Processing Lab. Information about some utilities developed by lab personals is also given.

Project Pursuit Software (download)

Details: J.-N. Hwang, S. R. Lay, M. Maechler, D. Martin, and J. Schimert, “Regression Modeling in Back-Propagation and Projection Pursuit Learning,” IEEE Trans. On Neural Networks, 5(3), pp. 342-353, May 1994.

Bandwidth Inference Congestion Control for Multimedia Layered Multicast

ns2 code

· Download ns2 simulation package.

BIC server (version 1.3.0a)

· Windows ccs.exe.

· Linux ccs.

· Configuration configs.ini.

· Usage.

· Revision history.

BIC client (version 1.3.0a)

· Windows ccc.exe.

· Linux ccc.

· Configuration configc.ini.

· Usage.

· Revision history.

BIC source code (version 1.3.0a)

· BIC source code will be available soon.

· perl script to calculate fairness index, event rate, and loss rate.

Public BIC server locations

· There are several servers running in the Internet, which are available to the public. Such as:



Comment & Bug reports

             Send your comment and suggestion to              For bug report, please attach the log files of the client and server              for investigation.

cccv1 and cccv2 (click the names to download)

Information Processing Lab

Copyright © 2015, Information Processing Laboratory, University of Washington

Multimedia Networking: from Theory to Practice

Sample Software Download

Multimedia Networking: from Theory to Practice

* Errata_To_Chapter_12

by Jenq Neng Hwang, Cambridge University Press, 2009.

Sample Software Download:

· MMUI Software

· Sample Software 12.4

· Sample Software 12.5

· Sample Software 12.6

· Sample Software 12.7

Related Software:      Windows Media Video 9 VCM

Multiple-Kernel Tracking

The software implements multiple-kernel tracking. For more technical details, please refer to the following papers:

C. Chu, J. Hwang, H. Pai, and K. Lan, “Tracking human under occlusion based on adaptive multiple kernels with projected gradients,” IEEE Transactions on Multimedia, 2013.

C. Chu, J. Hwang, H. Pai, and K. Lan, “Robust video object tracking based on multiple kernels with projected gradients,” Proc. IEEE Conf. on ASSP, May, 2011.


· Please visit Chun-Te Chu’s webpage to download binary and source code.

¨ The implementation uses OpenCV Version 2.1.0. Please download and install the OpenCV library before using the source code.



I. Change the directory of the video and other parameters in "tracking_config.txt". Change the basic parameters for quick experiment. For extensive experiments, check the paper or the source code for adjusting the additional parameters.

II. Execute.

III. Choose the codec for the result video like Fig. 1.

Figure. 1

IV. New window called "tracking" pops out. Change to this window and press "t".   ("t" stands for "tracking")

V. Initialization starts. Three types of initialization methods (selected in "tracking_config.txt"):

0: use mouse to select each kernel: 

This method allows you to mark the ROI for the model of each kernel individually. This usually gives better tracking result since the initial models include less noise.

· New window called "image" pops out. This should be the first frame of your test video. (The system saves this image as "SelectROIFrame.jpeg" as reference)

· Click on the image around the ROI for the model of the first kernel. A blue circle stands for each click and white lines connect two adjacent clicks like Fig. 2. Note that in order to make a valid ROI, the last click should be close to the first click, i.e., two blue circles should overlap (Fig. 3.)

· After the selection of ROI is done, click "Enter". A new window called "ROI image" is shown. It creates a binary mask image named "KernelMask0.jpeg" that shows the mask for the model of  the first kernel. (Fig. 4)

· Now the first kernel has been created. Go back to the "image" window (Fig. 4), you see those markers have been cleared, so now you can follow the similar steps to select the ROI for the second kernel.

· After you have successfully created all the kernels, just press "Esc". The system starts tracking.

Figure 2

Figure 3

Figure. 4


1: use coordinate: 

This method uses the centroid and size of the object for initialization.

· Modify the parameter "BB" in tracking.config. 

· The four entries correspond to [x coordinate of center      y coordinate of center    width    height]. 

· In this way, the tracking will start right after the codec selection. No need to select ROI.

2: use mouse to select the whole object:

This method allows you to mark the ROI of the whole object, and the kernels will generated automatically based on the default layout.

· New window called "image" pops out. This should be the first frame of your test video. 

· Click on the image around the ROI of the whole object. The method to select the ROI is the same as above (mark the object - -> press "Enter" to complete the selection --> press "Esc" to start tracking). It will creates the models for all the kernels based on the whole ROI you select. 

· The system starts tracking.

Below are some useful tips for ROI selection, and you may find them handy:

-    If you would like to use existing mask images instead of selecting ROI again, for instance, you want to use the same initial model for doing some repeating experiments, you can put those files under current directory. When you are asked to select ROI, instead of selecting ROIs, just press "Esc", and it will not create/overwrite binary mask images. The system then will use the existing mask images for initialization. Note that, if you want to do this to two kernels, you need to press "Esc" twice, since the initialization steps for different kernels are taken place separately.

-    During selecting ROI, if you mis-click on wrong places, just press "r" ("r" represents "restore"). All the markers will be cleared, and you can start over.

-    If you do not want to select ROI from the first frame of your video, press "p" ("p" stands for "proceed"). The system will proceed to next frame. Keep pressing "p" until the frame you want to use for initialization. Press "t" to start initialization.

VI. Tracking starts.

Figure. 5

VII. After the tracking is complete, press "Esc" under the "tracking" window to quit. Now you can find the "result.avi", "tracklog.txt" and result images (optional) under the same folder.