FIDE™ -Fuzzy Inference Development Environment

-- An Intelligent Design Tool for Image Processing & Machine Vision


I. Introduction to FIDE™ (fee-day)

The FIDE™ (Fuzzy Inference Development Environment) software toolkit is an easy -to-use, integrated tool set that supports all phases of product development of object detection systems, from concept design to implementation. While easy to use, it incorporates advanced capabilities enabling developers to improve productivity and system performance, and reduce hardware costs and the time to bring products to market.

FIDE is an ideal design tool that can describe and model different objects using their physics, chemical, geometric, relational, and mathematical characteristics. Fuzzy logic can describe many linguistic concepts that are commonly used in object description and detection, such as "very high density," "exactly collinear," "roughly collinear," "almost like a circle," "the match is very close," and so on. With a set of Real Time Code Generators, FIDE automatically generates fuzzy inference algorithms in Java code, ANSI C code, MatLab M file, and assembly code for a variety of microcontrollers. Due to direct mapping from fuzzy logic statement set to machine instruction set of the target microcontrollers, the size of the assembly code generated by FIDE is significantly smaller than hand-written assembly programs, and the time needed to execute code by Fide is much shorter than other programs.

FIDE helps the developer take advantage of fuzzy logic benefits with an integrated tool suite designed to fully support the alternative design methodology of fuzzy logic. Conventional design environments are limited because they target the software algorithm rather than the application. FIDE exploits the non-linear nature of fuzzy logic by including three unique debugging and analysis capabilities which target the application. These easy-to-use tools called the tracer, the analyser, and the simulator enable one to perform both low and high level debugging by providing a seamless path to the source for instantaneous bug isolation and code modification. These tools are invoked from the familiar Windows environment and organised in a logical fashion similar to the step-by-step design flow followed to develop a fuzzy logic controller.

II. Use FIDE™ for Machine Vision Applications: A Step-by-step Illustration

In a general pattern recognition and image processing application, the following steps are adopted:

  1. Compute features from objects (digital image data) detected by image segmentation.
  2. Identify input variables and output variables (labels, hypothesis) for recognition or classification.
  3. Fuzzification - define membership functions (MFs) for input and output variable using FIDE MF Graphical Editors or FIL (fuzzy inference language) Text Editor.
  4. Design recognition algorithms by a set of rules, using Rule Matrix Editor or FIL Text Editor.
  5. Simulate and debug using Debugger containing Simulator and Tracer).
  6. System performance analysis (a 3-D transfer function displayed) using Analyser.
  7. Generate object code for implementation using Fide RTC (ANSI C, Assembly, MatLab, and Java)
  8. Interface with other program modules or controls for system-level design by the Composer.

III. Develop an FIU for Object Recognition: A Hypothetical Example

3.0 A Hypothetical Problem - Medical Image Recognition

One hypothetical example is given here to illustrate the steps in developing an FIU (fuzzy inference unit), the object recognition algorithm software, for medical image analysis. In this example, a set of four (4) object features {density, mass, size, and shape factor} have been identified as input variables to the FIU, and 6 output variables (class labels), {"clear," "object1," "object1," "object2," "object3," "object4," "object5,"} are used as the hypotheses tests for the problem, as listed below. The goal is to design a robust FIU, an algorithm software in C, Java, or Assembly code, to detect unknown objects with a set of given feature values (D, M, S, SH), as shown in Figure-2.

Density (D) ranging from 0 to 2,049 (in CT number)
Mass (M) ranging from 0 to 100 lb.
Size (S) ranging from 0 to 1,000 pixels
Shape factor (SH) ranging from 0 to 100 (no unit)

3.1 Define Membership Functions for the 4 Input Variables
Membership functions for the 4 input variables are shown in figure-3 to figure-6.

3.2 Write Recognition Algorithm as a Set of Rules

Rule Example 1: if Density is B1 and Mass is LTSmall and Size is LTSmall and Shape is Rect then Object1;
Rule Example 2
: if Density is B2 and Mass is LTSmall and Size is LTSmall and Shape is Circle then Object2;

3.3 Use FIDE Text Editor to Write a FIL Source Code
This text editor is used to write a source file in FIL (fuzzy inference language). One example of such source code is shown in Appendix 1.

3.4 Use FIDE Graphical Editor to Define Membership Functions for Input Variables
This editor allows one to define arbitrarily shaped MF’s. One such example is shown in figur-7.

3.5 FIU Debugging & Simulation (with a number of signal generators to drive Simulator)

3.6 Performance Analysis - use Analyser to view system transfer function in color

System performance of the software design can be graphically evaluated by the 3-D system transfer function automatically generated by FIDE Analyser, as shown in figure-9 and figure-10.

Figure-3 Membership function for "Density".

Figure-4 Membership function for "Mass".

Figure-5 Membership function for "Size".

Figure-6 Membership function for "Shape Factor".

Figure-7 Membership function for "Density " drawn by FIDE membership function editor. Figure-8 FIDE Tracer for code debugging (object2

recognised with possibility of 1.0)

Figure-9 Transfer function (Object1 as a function of Density and Shape) generated by FIDE Analyser. Figure-10 Transfer function ("Clear" as a function of Density and Mass) generated by FIDE Analyser.
    1. Interfacing Other Program Modules/Controllers using the CAD Composer

Figure-11 Composer - a block-oriented CAD design tool.

FIDE incorporates a unique capability, which lets one graphically develop, simulate and debug the entire system. This tool, a block-oriented CAD Composer, graphically represents an open or closed loop system consisting of fuzzy and non-fuzzy modules interconnected with data transfer channels. One can think of the Composer as a common schematic capture tool, where each symbol may contain a fuzzy module or a conventional algorithm. When an entire system is entered into the Composer, one can click into a menu entry to automatically generate a project that combines all the modules into a single executable file. An example is shown above in figure-11 where FIU stands for fuzzy inference unit, FOU fuzzy operation unit (operations on variables such as normalisation), and FEU fuzzy execution unit (interfacing with other software modules).

3.8 Real-time Code Generation on the Fly

By simply pushing a button, FIDE automatically generate the following object code: (a) C (Appendix 2), (b) MatLab M file (Appendix 3), © Assembly code (Appendix 4), and (d) Java (Appendix 5).

Appendices:

1. FIL source code
2. ANSI C code
3. MatLab code
4. MC68HC08 Assembly code
5. Java code

Appendix 1 FIL source code

$
$ File created: Fri Jan 17 11:57:44 1997
$ This is a fiu
fiu tvfi (min max) *16
$ Fuzzy operators: (min max prod sum binter bunion)
$ Resolution of grade: 4, 5, ..., 32 (fixed); *4, *5, ..., *32 (floating);
$ Input Variables. Variables range/type should be adjusted
$ Data Type: char, uchar, int, uint, long, ulong, float.
invar Density "CT#" :0 ( 1 ) 2049 [
Low (@0, 1, @450, 1, @550,0),
B1 (@450, 0, @550, 1, @650, 1, @750, 0),
B2 (@0, 0.00000, @652, 0.00000, @751, 1.00000, @850, 1.00000, @955, 0.00000,
@2049, 0.00000),
B3 (@0, 0.00000, @850, 0.00000, @949, 1.00000, @1048, 1.00000, @1153, 0.00000,
@2049, 0.00000),
B4 (@0, 0.00000, @1054, 0.00000, @1147, 1.00000, @1252, 1.00000, @1350, 0.00000


Go to FIDE™, Back to Imaging Home
© copyright Zaptron, 1998-2000.