Efficient Implementations of Machine Vision Algorithms using a Dynamically Typed Programming Language

2012-11-08T00:17:19Z (GMT) by Jan Wedekind
<p>Current machine vision systems (or at least their performance critical parts) are predo-<br>minantly implemented using statically typed programming languages such as C, C++, or<br>Java. Statically typed languages however are unsuitable for development and maintenance<br>of large scale systems.<br>When choosing a programming language, dynamically typed languages are usually<br>not considered due to their lack of support for high-performance array operations. This<br>thesis presents efficient implementations of machine vision algorithms with the (dynam-<br>ically typed) Ruby programming language. The Ruby programming language was used,<br>because it has the best support for meta-programming among the currently popular pro-<br>gramming languages. Although the Ruby programming language was used, the approach<br>presented in this thesis could be applied to any programming language which has equal<br>or stronger support for meta-programming (e.g. Racket (former PLT Scheme)).<br>A Ruby library for performing I/O and array operations was developed as part of this<br>thesis. It is demonstrated how the library facilitates concise implementations of machine<br>vision algorithms commonly used in industrial automation. That is, this thesis is about<br>a different way of implementing machine vision systems. The work could be applied to<br>prototype and in some cases implement machine vision systems in industrial automation<br>and robotics.<br>The development of real-time machine vision software is facilitated as follows<br>1. A just-in-time compiler is used to achieve real-time performance. It is demonstrated<br>that the Ruby syntax is sufficient to integrate the just-in-time compiler transparently.<br>2. Various I/O devices are integrated for seamless acquisition, display, and storage of<br>video and audio data.<br>In combination these two developments preserve the expressiveness of the Ruby program-<br>ming language while providing good run-time performance of the resulting implementa-<br>tion.<br>To validate this approach, the performance of different operations is compared with<br>the performance of equivalent C/C++ programs.</p>