Gruppal ile Tatile Çıkın
Image Processing
Research B.Sc Thesis
IMPRO - An Image Processing Environment for the 80x86 Platform
B.Sc Thesis - 1993

IMPRO is totally a GUI based environment that runs on MS-DOS operating system in which various image processing routines can be applied to images with ease.

Click to Enlarge... I have co-developed IMPRO with a B.Sc student in my class - Fikret Ballıkaya. Special thanks goes to him for his contributions.

In 1993, visual software development tools were anything but visual :) Image processing requires some heavy memory management, pointer arithmetic and fast screen updates. Our best bet was to developed IMPRO from stratch by blending C and Assembler. A good mix huh ? :)

In those days 640 x 480 x 256 screen resolution was the de-facto desktop standard. We decided to base IMPRO on that resolution partly because of that and partly due to the fact that higher resolution graphics cards were so expensive for a student to afford :)

In fact, the development of such a GUI is quite tough if you don't have a pre-built library featuring mouse, graphics, memory management, disk access, keyboard support, menu and help systems. We had none :)

I have developed all the necessary, very low level routines for mouse, keyboard, graphics, memory management and disk subsytems in 80x86 Assembly Language. This was real fun. Click to Enlarge...

Since the standard C graphics routines for MS-DOS are not re-entrant, you can not use them in interrupt handlers. If you do, chances are; a screen mess or a system crash :)

I must admit that Turbo C, Turbo Assembler, Turbo Debugger and Turbo Profiler from Borland were fantastic programs with which I have developed, debugged and profiled IMPRO for speed and stability.

As you know, when a disk access failure occurs (such as no diskette in floppy) system issues a critical error handler (such as abort, retry, fail ?). If you do not handle that kind of critical error handlers your GUI can get very well messy when the systems breaks in and displays such a message.

Well, IMPRO handles critical errors. Ask me how many days I have spent to debug and make it work in front of the computer with Turbo Assembler & Debugger, PC Intern, Peter Norton's Assembly Language book :)

Memory management for image processing routines were done by using Extended Memory over Expanded Memory. 286 & 386 DOS Extenders or C compilers such as Watcom C (flat addressing) were available but in fact, we did not have enough time to thoroughly evaluate those products so I prefered to access Expanded Memory by own routines written in Assembly Language.

Click to Enlarge... During our image processing classes, we have developed numerous command line programs to execute image processing algorithms.

Since IMPRO can spawn other executable programs, we have provided an innovative way to execute and capture the results of those command line programs inorder to provide a very flexible image processing environment.

IMPRO has 40,000+ lines of C and Assembly Code with its own mouse, keyboard, graphics, memory management, menu & help systems, desktop accessories and error handlers.

It became up and running after doing 4 months (2 developers) of day to night very hard work. We have done our A level computing homework and defended our B.Sc thesis against a jury.

Reward: Got 4 / 4
  • Image Processing Algorithms
  • Extreme Programming and A Real Life Example
  • Back to Research

  • Home
    Content on
    this page is: