Friday 31 July 2015

Making a GUI interface in MATLAB

In reference to my last post regarding ping pong game with object tracking, I pushed my work a little bit more and incorporated Kalman Filter and GUI with it.

The following post contains about the GUI creation for beginners in MATLAB. I will post about Kalman Filter soon.


GUI in MATLAB

It is pretty simple to make a GUI in MATLAB. You can find tons of videos on YouTube and even on MATLAB central regarding this.

Type guide and press enter in the command window of MATLAB.
  1. A window will pop-up with "drag and drop" options of various components available for GUI you want to make. 
  2. You may add text-boxes, editable text boxes, sliders, radio buttons, push buttons etc. using panel on the left of guide window and double click on any component to open its property inspector where you can set various fields like Value, Max, Min, Name.
  3. Drag all that you need and save the *.fig file.
  4. To customize a component, right click on component and gotoView  CallBacks > CallBack
  5. This will direct you to the function where Callbacks of components are handled.
    In case of push buttons, type the code you want to be performed on click in that space.
    In case of Value returning components (sliders, radio-buttons), use get() function to get values from component used upon some action performed. For example, to get position of slider,

    variable=get(handles.slider_name,'Value');
where,
           variable is a global variable so that the scope of this variable is beyond a single Class and can be directly used outside the GUI codes in your further process. You can also use varagout() part in the GUI *.m file to get a value returned.
           slider_name is the name of component as specified in the tag field in the Property Inspector of the component.

     6.  If you want to plot a graph or preview an image on the GUI panel, you can add an axes component. To show images on this component, type imshow(image,axes_name)

In the following, video I used guide to make a GUI interface for setting parameters to filter my image for object tracking. On clicking OK, the parameters are transferred to my Tracking and Kalman Filter algorithms which provide a much more effective way of making a generalized object tracking.

Sliders used :
Brightness : Add a positive whole number to every element in image array to increase its brightness.
Contrast : Vary gamma value in imadjust() function for contrast. gamma>1, gamma=1 and  gamma<1 represent relation in intensity of input and output image. Check out Example on imadjust() to use gamma. P.S. : Do not name variable as gamma; it is also a function. :p
Rmin, Rmax, Gmin, Gmax, Bmin, Bmax : RGB minimum and maximum value for segmentation.
Lower Area and Upper Area : Perform connected component analysis and filter Area using lower and upper limit of area from here.

On pressing, a global flag is set high and the program comes out of the infinite loop to continue forward.



No comments:

Post a Comment