Many years ago I worked on a project for the University that I received my Masters degree from called “VisualODF” (my fancy-pants name for it, anyway – this wasn’t related to my actual thesis).  It is a bunch of classes that demonstrate the following:

  • How to open video files (avi, mpeg, etc) and grab screen shots in a QT class, the “frameServer”
  • How to interface the frameServer with an image processing algorithm
  • How to interface the image processing algorithm with a TCAS-II type display, as well as other custom display widgets
  • How to use signals and slots in QT4
  • How to create custom widgets in QT4
  • How to create custom widget plugins for QT Designer
  • How to convert data in a SDL_Overlay from YUV colorspace to RGB colorspace
  • How to display a SDL window inside a QT window

The purpose of these classes was to put together a skeleton that other students could use to actually implement an algorithm that detects obstacles in the context of camera mounted on a UAV. Then the obstacle information should be displayed in a way that the UAV controller can easily understand (custom display widgets). The TCAS-II type widget that I made depends on knowledge of the position of the obstacles relative to the aircraft for display, and a second widget (“pieDisplay”) only relies on knowledge of the relative angle of the obstacle with the aircraft and the vector of its heading.

I think that the most useful things from this project (that other people might be interested in) are:

  • The TCAS-II widget
  • The QT class (based on ffplay and the ffmpeg libraries) that opens and plays videos
  • The YUV to RGB conversion
  • The code that shows how and where to do screen grabs of the playing video

The TCAS-II widget looks like this:

TCAS-II Widget for QT4

It displays threats according to the TCAS-II specs (as far as the coloring, arrows, etc) and has a really simple interface. You can add an unlimited number of threats to the widget and easily delete them (they are kept in a std::list and each has its own unique key). It does not, however, know anything about latitude/longitude or the like : it only uses x,y coordinates at the moment. So it could, of course, use some improvement.

The documentation for the VisualODF classes are located here: html version or pdf version [note: the PDF has outdated email addresses]. The classes and code themselves can be downloaded here : VisualODF Project

Leave a Reply

Your email address will not be published. Required fields are marked *