Research Software


This is a toolbox for tomography reconstruction using proximal algorithms. It is based on the ASTRA Toolbox and works under Linux and Windows.


Caltech Large Scale Image Search Toolbox

This is a Matlab/C++ package for large scale image search. It implements several popular algorithms: Bag of Words, Inverted File, Min-Hash, Kd-trees, Hierarchical K-Means, K-Means, Locality Sensitive Hashing (LSH), among others.

Details here

Caltech Lane Detection Software

This is a C/C++ package to detect lane markers in images in real time.

Details here

CaltechCV Family Viewer

This is a Matlab script to view/edit/annotate lists of images.

Details here

CaltechCV Image Labeler

This is a Matlab script to label/annotate image datasets.

Details here

Feature Subset Ensembles

A set of Matlab files implementing various regression algorithms, including feature subset ensembles, bagging, boosting, forward/backward selection, and least squares. This work was part of the Master thesis in Cairo University.

Matlab source [75KB]

Mohamed A. Aly. Enhanced Ensemble Learning Technique With A Case Study Of Video Network Traffic Forecasting. Master thesis, Computer Engineering Department, Cairo University, Giza, Egypt, June 2005. [pdf]

Sparse Basis Image Compression

A set of Matlab files implementing an image compression technique using Sparse Basis Selection from an overcomplete set of basis functions.

Matlab source [10KB]

In collaboration with Ahmed H. Abdelgawad.

Miscellaneous Software

ANSI/Visual C/C++

  • Base64 encoding and CRC generation
    [ source 7KB]
    A C program implementing Base64 encoding and CRC algorithms.
  • CD Store
    [ windows binary 208KB | source 223KB]
    A Visual C++ 6 program handles CD databases. It has its own format and provide the ability to quickly search through CDs for certain files or folders with different criteria.
  • Crazy Ball
    [ windows binary 115KB | source 16KB]
    A Borland C game that resembles DX-Ball (the ball bouncing off the walls and hitting bricks).
  • Split It!
    [ windows binary 132KB | source 98KB]
    A Visual C++ 6 program that can split and recombine files. Can also prepare self-extracting splitted files.
  • MPL Parser
    [source 88KB]
    An ANSI C program that parses a hypothetical Pascal-like language and produces the symbol table and quadruples.


  • Base64 encoding and CRC generation
    [ source 6KB]
    A Java program implementing Base64 encoding and CRC algorithms.
  • Quine-McCluskey Solver
    [ source 8KB]
    A Java program implementing the Quine-McCluskey algorithm to minimize boolean functions.

Visual Basic

  • MagiCrypt
    [windows binary 25KB | source 17KB]
    A Visual Basic 6 simple encryption program that can encrypt both text and files given a user password. It also has the ability to create self-extracting encrypted files.
  • Playlist Editor
    [windows binary 72KB | source 270KB]
    A Visual Basic 6 play list editor program. Can handle .asx, .m3u and .pls playlists and has a built-in media player.
  • Shutdown Timer
    [ windows binary 12KB | source 8KB]
    A Visual Basic 6 shutdown timer for Windows 2000. It can be set to Log off/hibernate/shutdown the computer at a specific time or after a given interval, and remains in hidden the tray till the timer goes off.
  • Web Clock
    [ windows binary 148KB | source 314KB]
    A Visual Basic 6 program to monitor dial-up connections on Windows 2000 and log all connection information to calculate expenses. It also has built-in database functionality to query all aspects of dial-up internet connection (search by date, duration, connection name, ..etc).


  • Nearest City Finder
    [source 4KB]
    A Python script that conencts to and given a certain city returns the closest cities within a given search radius.


  • Projects Checker
    [source 4KB]
    A Perl/CGI script that conencts to and returns the projects that are ending today or tomorrow.
  • Email Parser
    [source 4KB]
    A Perl script that parses emails from its stdin or input files and prints them to stdout.
  • Slimbox code generator
    [source 4KB]
    A Perl script that takes a directory, looks for all pictures inside, and produces the html code to work with slimbox for that directory. It also automatically resizes the images and creates thumbnails.

Shell Scripts

  • Checker
    [source 4KB]
    A Bash shell script that get the list of prices and ISBNs of books by connecting to and parsing the returned html files.
  • Patch-mode image resizer
    [source 4KB]
    A Bash shell script that resizes image automatically in a given directory and produces thumbnails using ImageMagick software convert. It also makes extension lowercase, and adds suffix if required.


  • Base64 encoding and CRC generation
    [source 6KB]
    A PHP script implementing Base64 encoding and CRC algorithms.
  • phpMyEdit Setup script with login support
    [source 8KB]
    A modified phpMyEdit setup script that provides the option of authentication to the form generated. This is modified from phpMyEdit 5.4.


  • Modified Slimbox 1.4
    [source 8KB]
    This is a modified version of the Javascript image overlayer Slimbox. The modifications provide the functionality of a simple slideshow by allowing automatic timed transitions between photos. The time interval can be set via timerDuration option to the Lightbox object. It also has has a button to pause/resume the slideshow. The variable timerOn controls whether it starts with the slideshow on or off.
  • Modified Lightbox V2
    [source 32KB]
    This is a modified version of the Javascript image overlayer Lightbox version 2. The modifications show the navigation pane (Previous, Next, and Close buttons) above the image, keeping the image description below the image. It also adds a border around the whole image.
  • Analog Clock
    [source 4KB]
    A small Javascript analog clock.
  • Base64 encoding and CRC generation
    [source 6KB]
    A Javascript script implementing Base64 encoding and CRC algorithms.

Embedded C

  • SecuriT
    [source 56KB]
    An embedded C project implemented on an Atmel 89C52 microcontroller in collaboration with Ahmed H. Abdelgawad and Yousif Kamal El-Dien. It implements a smart card-based access control system, that includes an LCD, keypad, and smart card reader


  • Maze Solver
    [windows binary 104KB | source 91KB]
    A Turbo Prolog program to solve mazes using breadth-first or depth-first search. It also has a Visual Basic wrapper program that provides the interface to the Prolog solver. In collaboration with Mohamed Abdellah, Mohamed Jaafar and Mohamed Zakaria.