 Good evening everyone, my name is Abhilasha and she is Priyanka and I'll introduce you our project which is Sylab Image Processing Toolbox using OpenCV. So this is the table of contents, first we'll show, we'll give you what is our aim, then our short introduction on what is Sylab, what is OpenCV and then how did we proceed while making our toolbox. So the basic aim of our project is to build a comprehensive toolbox for Sylab which does image processing. The basic idea is to port the OpenCV functions to the Sylab environment and we achieve this by using Sylab APIs. What are Sylab APIs? Sylab APIs provides an interface for reading and writing data from and to the Sylab environment. What is Sylab? Sylab is a freely distributed open source of scientific software package. It is an alternative to MATLAB. It is a very powerful toolbox for manipulating matrices and matrix based operations such as inverse, transpose and other basic manipulation. What is OpenCV? OpenCV stands for open source computer vision. It is a library of functions which is mainly aimed at real time image processing and computer vision. The functions which we are implementing from Sylab to in from OpenCV in Sylab are C and C++ functions. The functions which we have implemented comes under the following categories, basic drawing functions which includes functions like drawing of circles, lines, ellipse, polygons, etc. Basic image transformation functions include warp of fine transformation, image filtering functions like erode and dilating of the images comes under this category, miscellaneous image transformations under this category. We have implemented functions like threshold, watershed and all. Then what is Sylab APIs? I will introduce you what is Sylab API. We have used many functions from this API. The functions which we have used include some of the low level functions which helps in reading and writing matrices of doubles, matrices of strings, matrices of integers, some variable reference functions which lets us get the address of the argument passed to the Sylab. Variable dimension lets us get the dimension of the matrix. There are other list manipulation functions also which helps in creating a list and getting the number of items in the list. Next is how did we develop the code? So code development includes building of two files for each function which we need to port to the Sylab environment. It includes a build a gateway file which X is a gateway between open CV functions and Sylab environment and second is a CPP file which is how we retrieve the data from the Sylab environment, process it using open CV and then again send that process data to the Sylab environment. Now Priyanka will tell you about the common library which we use. Good evening everyone. Myself Priyanka Hiranandani. As Abhilasha has already told that we have used two files, builder gateway file and CPP file. The third library which we have created is common library. The thing is for every open CV function which we are importing to our CPP file, code was about 300 to 400 lines. So to make our code more compact we have created a library, common library. This library includes common functions which are mostly used by all of our open CV functions. So this library includes four functions. First function is type two string. This type two string function will convert type of image which is integer returned by open CV function to string. Basically why we are converting it to string because it will be helpful in our CPP file to get comparison. So second function is number of channel. This number of channel function will give number of channel of images. As we all know that images are saved in the form of pixel and we can have number of channels like for RGB image that is a colored image we have three channels and for grayscale image we have one channel. And third function is retrieve image and fourth is return image. Now here we are facing an issue with passing arguments. Since RGB image is a three dimensional image so it was like it was not possible to return an image directly from like to pass a three dimensional matrix from Sylab console to a CPP file for that we have come up with a solution that to convert it in the form of list. Like the list exchange will be there, not matrix exchange. So like if my function will given list and in another function when I want to retrieve it will again retrieve and convert it in the form of matrix. So retrieve image will convert a list into matrix and return image will do the opposite job. And next we will come to toolbox creation. Up till now what we are doing is we are making CPP file, builder file for every function which we are putting and we have huge function. So for making a common builder file we are creating toolbox and in toolbox these are the set of folders which we need to create that is Sylab gateway. This folder will include all CPP file, builder file, loader file. So now we have a common builder file for every function. Help folder will include help files. We have help files for every function. We can just write help and function and we get help files. And next is Macros and ETC. After that challenges, first challenge I have already discussed about three-dimensional matrix. Second challenge we face with IM show function. When we directly call an IM show function with open CV window it got crashes. So for that we have write in script that is a script Sylab script and that script will work. Third challenge which we are facing was porting pointers. We were facing issues with pointer. The thing was in one function suppose I call a pointer and in another function if I close that function that memory I am not able to access that memory. So that issue we solved using passing matrix of like if you want to pass a pointer of image I will pass as a list of all the images and then convert it in the form of pointer in my CPP file. And next issue we were facing was overloaded functions and the solution we come up with is if else and checking number of input arguments. Future work. We have three phases. First phase is directly porting open CV function in Sylab. Second phase is combining two or three functions and then porting into Sylab and third phase is we have to write our own code for the functions which we don't have an open CV alternative. So now we have just completed phase one, phase two and three are yet to be done. So now I will show demo. I will show IM read function. Already loaded the toolbox. This is the image which is being displayed. Now and with the help of IM show we are able to display it. Now this is the output of IM rotate function in IM rotate function. I have passed first argument as a matrix which was being returned by IM read and second argument is angle. So we can pass any angle and it will get rotate and we will show it by IM show. This is the function for RGB to gray. It will convert colored image into a gray image and function is will pass directly the colored image which we are getting from IM read function. This function is for histogram equalization. It will equalize intensity histogram of image and arguments of this function was also an RGB image. This function works only for RGB image. It is an open CV function. This function will calculate mean, mean of all pixel values and it will be saved in E variable. This function arc length I have given in J variable I have given points. Points are again in the form of matrix and it will calculate an arc length joining those points. This function will calculate contour area. Again in X I have given all the coordinates of point and E will contain contour area. This function circle will draw a circle of specified dimensions around an image. Dimensions are specified in the function call. This is 300, 300 is the center coordinates and 200 is the radius. This function will put a text on the image, whatever text we have specified. Lastly we have help files for every function. We have to write help and function name. It will generate a help file. User can see syntax from it and a brief description about every function. Thank you.