diff --git a/help/builder_help.sce b/help/builder_help.sce new file mode 100644 index 0000000..4d4e031 --- /dev/null +++ b/help/builder_help.sce @@ -0,0 +1,21 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// Author: Shamika Mohanan +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// This file must be used under the terms of the BSD. +// This source file is licensed as described in the file LICENSE, which +// you should have received as part of this distribution. The terms +// are also available at +// https://opensource.org/licenses/BSD-3-Clause + +mode(-1) +lines(0) + +toolbox_title = "FOSSEE_Image_Processing_Toolbox" + +help_dir = get_absolute_file_path('builder_help.sce'); + +tbx_builder_help_lang("en_US", help_dir); + +clear toolbox_title; diff --git a/help/builder_help.sce~ b/help/builder_help.sce~ new file mode 100644 index 0000000..da2f4f7 --- /dev/null +++ b/help/builder_help.sce~ @@ -0,0 +1,21 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// Author: Harpreet Singh +// Organization: FOSSEE, IIT Bombay +// Email: harpreet.mertia@gmail.com +// This file must be used under the terms of the BSD. +// This source file is licensed as described in the file LICENSE, which +// you should have received as part of this distribution. The terms +// are also available at +// https://opensource.org/licenses/BSD-3-Clause + +mode(-1) +lines(0) + +toolbox_title = "FOSSEE_Optimization_Toolbox" + +help_dir = get_absolute_file_path('builder_help.sce'); + +tbx_builder_help_lang("en_US", help_dir); + +clear toolbox_title; diff --git a/help/en_US/build_help.sce b/help/en_US/build_help.sce new file mode 100644 index 0000000..81154f3 --- /dev/null +++ b/help/en_US/build_help.sce @@ -0,0 +1,17 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// Author: Shamika Mohanan +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// This file must be used under the terms of the BSD. +// This source file is licensed as described in the file LICENSE, which +// you should have received as part of this distribution. The terms +// are also available at +// https://opensource.org/licenses/BSD-3-Clause + +help_lang_dir = get_absolute_file_path('build_help.sce'); + +tbx_build_help(TOOLBOX_TITLE, help_lang_dir); + +clear help_lang_dir; + diff --git a/help/en_US/build_help.sce~ b/help/en_US/build_help.sce~ new file mode 100644 index 0000000..0205c56 --- /dev/null +++ b/help/en_US/build_help.sce~ @@ -0,0 +1,17 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// Author: Shamika Mohanan +// Organization: FOSSEE, IIT Bombay +// Email: harpreet.mertia@gmail.com +// This file must be used under the terms of the BSD. +// This source file is licensed as described in the file LICENSE, which +// you should have received as part of this distribution. The terms +// are also available at +// https://opensource.org/licenses/BSD-3-Clause + +help_lang_dir = get_absolute_file_path('build_help.sce'); + +tbx_build_help(TOOLBOX_TITLE, help_lang_dir); + +clear help_lang_dir; + diff --git a/help/en_US/colorChange.xml b/help/en_US/colorChange.xml new file mode 100644 index 0000000..b3c6b47 --- /dev/null +++ b/help/en_US/colorChange.xml @@ -0,0 +1,102 @@ + + + + + + + + colorChange + This function seamlessly mixes two differently colored versions of the input image. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = colorChange(src, mask, red_mul, green_mul, blue_mul ) + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input source image + mask: + Input mask image with same size as that of source image. + red_mul: + R-channel multiply factor (float) (default value= 1.0f) + green_mul: + G-channel multiply factor.(float) (default value= 1.0f) + blue_mul: + B-channel multiply factor.(float) (default value= 1.0f) + + + + + Description + +Given an original color image, two differently colored versions of this image can be mixed seamlessly. + + + + + + + Examples + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/convert.xml b/help/en_US/convert.xml new file mode 100644 index 0000000..24defc0 --- /dev/null +++ b/help/en_US/convert.xml @@ -0,0 +1,75 @@ + + + + + + + + convert + This function converts a matrix to another data type with optional scaling. + + + + + Calling Sequence + + src = imread('location-of-src'); + dst = convert(src,rtype, alpha,beta); + + + + + + Parameters + + src : + the source matrix/image + alpha: + optional scale factor (default value is 1) (type- Double) + beta: + optional delta added to the scaled values (default value is 0) (type- Double) + rtype: + (type- string)desired output matrix type/depth.It supports the following types -> 1) CV_8U, 2) CV_8S, 3) CV_16U ,4) CV_16S, 5) CV_32S, 6) CV_64F + + + + + Description + +The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overflows- + + + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/detailEnhance.xml b/help/en_US/detailEnhance.xml new file mode 100644 index 0000000..99d6e99 --- /dev/null +++ b/help/en_US/detailEnhance.xml @@ -0,0 +1,70 @@ + + + + + + + + detailEnhance + This filter enhances the details of a the given image. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + outputImage = detailEnhance(src,sigma_s,sigma_r) + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input 8-bit 3-channel image. + sigma_s: + Range between 0 to 200 (float) (default value is 10) + sigma_r: + Range between 0 to 1. (float) (default value is 0.15f) + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/edgePreservingFilter.xml b/help/en_US/edgePreservingFilter.xml new file mode 100644 index 0000000..dda9ae2 --- /dev/null +++ b/help/en_US/edgePreservingFilter.xml @@ -0,0 +1,82 @@ + + + + + + + + edgePreservingFilter + This function smoothens the given input image while preserving the edges. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + outputImage = edgePreservingFilter(src,flag,sigma_s,sigma_r) + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input 8-bit 3-channel image. + flag: + (default value is 1) (denotes Edge preserving filters). It takes 2 values -> 1) 1 (for RECURS_FILTER) ; 2) 2 (for NORMCONV_FILTER) + sigma_s: + Range between 0 to 200 (float) (default value is 60 ) + sigma_r: + Range between 0 to 1. (float) (default value is 0.4f) + + + + + Description + +Filtering is the fundamental operation in image and video processing. Edge-preserving smoothing filters +are used in many different applications + + + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/getDepth.xml b/help/en_US/getDepth.xml new file mode 100644 index 0000000..33ae8c0 --- /dev/null +++ b/help/en_US/getDepth.xml @@ -0,0 +1,69 @@ + + + + + + + + getDepth + This function returns the depth of the input matrix element. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + depth = getDepth(src) + + + + + + Parameters + + src: + Input 8-bit 3-channel image. + depth: + a string which denoted the depth of the src.It identifies the following- 1) CV_8U - 8-bit unsigned integers ( 0..255 ) ; 2) CV_8S - 8-bit signed integers ( -128..127 ); 3) CV_16U - 16-bit unsigned integers ( 0..65535 ); 4) CV_16U - 16-bit unsigned integers ( 0..65535 ); 5) CV_16S - 16-bit signed integers ( -32768..32767 ) ; 6) CV_32S - 32-bit signed integers ( -2147483648..2147483647 ) ; 7) CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN ) + + + + + Examples + + + + + Description + +Note - Scilab does not support CV_32F - it would be considered as CV_64F + + + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/getStructuringElement.xml b/help/en_US/getStructuringElement.xml new file mode 100644 index 0000000..a486245 --- /dev/null +++ b/help/en_US/getStructuringElement.xml @@ -0,0 +1,90 @@ + + + + + + + + getStructuringElement + This function returns a structuring element required for the morphological operations. + + + + + Calling Sequence + + se = raw_getStructuringElement(gettype, cols, rows, anchorX, anchorY) + + + + + + Parameters + + se: + output structuring element matrix + shape: + element shape that could be one of the following- + cols: + Width of the structuring element + rows: + Height of the structuring element + anchor: + Anchor position within the element. The value (-1, -1) means that the anchor is at the center. + anchor_x: + x-coordinate of the anchor + anchor_y: + y-coordinate of the anchor + + + + + Description + +The function constructs and returns the structuring element that can be further passed to +function that perform morphological operations like erode or dilate. + + + + + + + Examples + + + + + Examples + + + + + Authors + + Sukul Bagai + + + diff --git a/help/en_US/illuminationChange.xml b/help/en_US/illuminationChange.xml new file mode 100644 index 0000000..eab5a07 --- /dev/null +++ b/help/en_US/illuminationChange.xml @@ -0,0 +1,101 @@ + + + + + + + + illuminationChange + This function is used to reduce specular reflections or highlight under-exposed foreground objects. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = illuminationChange(src, mask, alpha, beta ) + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input source image + mask: + Input mask image with same size as that of source image. + alpha: + Value ranges between 0-2. (float) (default value= 0.2f) + beta: + Value ranges between 0-2. (float) (default value= 0.4f) + + + + + Description + +Applying an appropriate non-linear transformation to the gradient field inside the selection and then integrating +back with a Poisson solver, modifies locally the apparent illumination of an image. + + + + + + + Examples + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/localMaximaFinder.xml b/help/en_US/localMaximaFinder.xml new file mode 100644 index 0000000..aff3c17 --- /dev/null +++ b/help/en_US/localMaximaFinder.xml @@ -0,0 +1,77 @@ + + + + + + + + localMaximaFinder + This function returns local maxima in input matrice. + + + + + Calling Sequence + + location=localMaximaFinder(inputMatrix,neighborhood,maxNoOfMaxima,threshold) + + + + + + Parameters + + inputMatrix: + 2-D input matrix + neighborhood: + It specifies the neighborhood around maxima, function zeros out the values inside the block. + maxNoOfMaxima: + maximum number of local maxima you want to find. + threshold: + It specifies minimum value of the local maxima. + + + + + Description + +localMaximaFinder returns [x y] coordinates of the local maxima in a M-by-2 matrix where M is +the number of local maxima and each row represents one local maximum + + + + + + + Examples + + + + + Examples + + + diff --git a/help/en_US/master_help.xml b/help/en_US/master_help.xml new file mode 100644 index 0000000..fe069b9 --- /dev/null +++ b/help/en_US/master_help.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + FOSSEE Image Processing Toolbox + + + +FOSSEE Image Processing Toolbox +&a9ec40b34c5f549027c0eea3e8f1265a9; +&a299a344bcba191174e5f27907137a5a3; +&a499106a84662ba4412a6205674f1fc87; +&a43e4065178b6a3c4e0b5bb54442950ea; +&a78b9cadacbff316f7a1ce51f3df35f9d; +&a0603f323705f457e4dd38568fdf2627b; +&a28faf1d6451ab38a3502e6f30bd02f7e; +&ad269082a179d69d1bebb64224b0dd11f; +&ac26c9c7f3d61cb2afb5c3e3e0efda3d8; +&a03f4c40d3bc0c19671a86caf49064e1b; +&a42c1e9d77c0ad52ff79a65eeecbe9726; +&a3fca328b22cb6929651e630f42a7b0f8; +&a6b42f1c5b15ed223fd5e8325d0026495; +&a7739060770044c23e8397bd2f20616a0; +&a1b6ee78858c49bd79d043dea51d55f6e; +&a2ced9e3a6f8f997e636ea3ae6c6afd62; +&a6054d5e8b605e9d1f7bdff2c1ef04a86; +&a89cbf7de07ce6b50dd9173e8e31c453e; +&aceda8fbf845d059f2253e50367ed6fcd; +&ac010e344a8b8d75230d24be683d83ffa; +&ab0828a610921e67065053cba8eed9099; +&a042a487be4f8e9c1abd060477da56a53; + + diff --git a/help/en_US/minAreaRect.xml b/help/en_US/minAreaRect.xml new file mode 100644 index 0000000..51726ec --- /dev/null +++ b/help/en_US/minAreaRect.xml @@ -0,0 +1,83 @@ + + + + + + + + minAreaRect + This function is used to find a rotated rectangle of the minimum area enclosing the input 2D point set. + + + + + Calling Sequence + + x = [x1 x2 x3 ...............xn] + y = [y1 y2 y3................yn] + out = minAreaRect(x , y) + + + + + + Parameters + + x: + 1xn matrix denoting the x coordinates of the points + y: + 1xn matrix denoting the corresponding y coordinates of the points + out: + Output structure with the following members - 1) width- width of the rectangle, 2) height- height of the rectangle, 3) center_x- x coordinate of the center of the rectangle, 4) center_y- x coordinate of the center of the rectangle, 5) angle- the angle by which the rectanle is rotated, 6) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 7) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 8) y_coordinates_vertices- 1x4 Double matrix denoting the corresponding y coordinates of the vertices of the rectangle + + + + + Description + +The function calculates and returns the minimum-area bounding rectangle (possibly rotated) for a specified point set. +the returned rotatedRect can contain negative indices when data is close to the containing Mat element boundary. + + + + + + + Examples + + + + + Examples + + + + + Authors + + Priyanka Hiranandani + Rohan Gurve + + + diff --git a/help/en_US/minEnclosingCircle.xml b/help/en_US/minEnclosingCircle.xml new file mode 100644 index 0000000..d9d0ec4 --- /dev/null +++ b/help/en_US/minEnclosingCircle.xml @@ -0,0 +1,74 @@ + + + + + + + + minEnclosingCircle + This function is used to find the circumcircle of an object constituted by the given set of input points. + + + + + Calling Sequence + + x = [x1 x2 x3 ...............xn] + y = [y1 y2 y3................yn] + out = minEnclosingCirlce(x , y) + + + + + + Parameters + + x: + 1xn matrix denoting the x coordinates of the points of the object + y: + 1xn matrix denoting the corresponding y coordinates of the points of the object + out: + Output structure with the following members- 1) center_x- x coordinate of the center of the circle, 2)center_y- x coordinate of the center of the circle, 3) radius- radius of the circle + + + + + Examples + + + + + Examples + + + + + Authors + + Priyanka Hiranandani + Rohan Gurve + + + diff --git a/help/en_US/partition.xml b/help/en_US/partition.xml new file mode 100644 index 0000000..0acc665 --- /dev/null +++ b/help/en_US/partition.xml @@ -0,0 +1,86 @@ + + + + + + + + partition + This function is used to split an imageSet. + + + + + Calling Sequence + + imgSet = imageSet(location) //or imgSet = imageSet(location,'recursive') + [set1 set2 ... setN] = partition(imgSet, groupSizes) + [set1 set2 ... setN] = partition(imgSet, groupPercentages) + [set1 set2 ... setN] = partition(..., method) + + + + + + Parameters + + set: + Output imageSet structure + imgSet: + Input imageSet to be split + groupSizes: + Matrix that specifies size of output sets + groupPercentages: + Matrix that specifies percentage content of each output set + method: + (Optional) Determines whether split is 'sequential' or 'randomized' (Default: 'sequential') + + + + + Description + +This function splits an imageSet into two or more imageSets on the basis of the groupSizes or groupPercentages provided. + + + + + + + Examples + + + + + Authors + + Rohit Suri + Rohan Gurve + + + diff --git a/help/en_US/pencilSketch.xml b/help/en_US/pencilSketch.xml new file mode 100644 index 0000000..3a875fb --- /dev/null +++ b/help/en_US/pencilSketch.xml @@ -0,0 +1,74 @@ + + + + + + + + pencilSketch + This function is used to give a non-photorealistic pencil-like line drawing effect to the given input image. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + [outputImage_1 outputImage_2 ] = pencilSketch(src,sigma_s,sigma_r,shade_factor) + + + + + + Parameters + + outputImage_1: + resultant Output image with single channel + outputImage_2: + resultant Output image with 3 channels + src: + Input 8-bit 3-channel image. + sigma_s: + Range between 0 to 200 (float) (default value is 60) + sigma_r: + Range between 0 to 1. (float) (default value is 0.07f) + shade_factor: + Range between 0 to 0.1 (default value is 0.02f) + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/pyramid.xml b/help/en_US/pyramid.xml new file mode 100644 index 0000000..892663a --- /dev/null +++ b/help/en_US/pyramid.xml @@ -0,0 +1,76 @@ + + + + + + + + pyramid + This function computes the pyramid reduction or expansion of input_image. + + + + + Calling Sequence + + output_image=pyramid(inputimage,direction,level); + + + + + + Parameters + + inputimage : + image matrix on which pyramid reduction or expansion has to be applied + Direction : + An input string 'expand' for expand or 'reduce' for reduce the image matrix + level : + It is specify number of times want to expand or reduce the dimension of an image matrix. + output_image : + Expanded or reduced form of image after pyramid reduction or expansio + + + + + Description + +This function computes the pyramid reduction or expansion of input image.It uses Gaussian pyramid to downsamples +and upsamples the image pixels.In reduction it reduces the size of image (if m*n matrix image) by m/pow(2,level) +and n/pow(2,level).In expansion it expands the size of image (if m*n matrix image) by m*pow(2,level) +and n*pow(2,level) where pow(x,y)=x^y. + + + + + + + Examples + + + + + Authors + + Diwakar Bhardwaj + + + diff --git a/help/en_US/regionFill.xml b/help/en_US/regionFill.xml new file mode 100644 index 0000000..f66144b --- /dev/null +++ b/help/en_US/regionFill.xml @@ -0,0 +1,82 @@ + + + + + + + + regionFill + This function restores the selected region in an image using the region neighborhood. + + + + + Calling Sequence + + src = imread(location-for-image) + x = [x1 x2 ...........xn ] //x coordinates of polygon covering the region that you want to fill + y = [y1 y2 ...........yn ] //corresponding y coordinates of polygon covering the region that you want to fill + dstImg 1= regionFill(srcImg,inpaintRadius,x,y) + + mask = roiFreeHand(srx) //making a mask - you can also use other function to make the mask + dstImg2 = regionFill(srcImg,inpaintRadius,mask) + + + + + + Parameters + + srcImg: + input source imge //it is converted to 8 bit internally + inpaintRadius: + Radius of a circular neighborhood of each point inpainted that is considered by the algorithm(Double) + mask: + Inpainting mask. Non-zero pixels indicate the area that needs to be inpainted. + x: + 1xn matrix denoting x coordinates of polygon covering the region that you want to fill + y: + 1xn matrix denoting y coordinates of polygon covering the region that you want to fill + + + + + Examples + + + + + Examples + + + + + Authors + + Vinay Bhat + Rohan Gurve + + + diff --git a/help/en_US/rgb2gray.xml b/help/en_US/rgb2gray.xml new file mode 100644 index 0000000..a0264e9 --- /dev/null +++ b/help/en_US/rgb2gray.xml @@ -0,0 +1,61 @@ + + + + + + + + rgb2gray + Given an original color image, this function converts it into a single channel grayscale image and return the same. + + + + + Calling Sequence + + inputImage = imread("image-location-for-inputImage"); + outputImg = rgb2gray(inputImage) + + + + + + Parameters + + outputImage: + single channel grayscale version of the inputImage + inputImage: + Input source image + + + + + Examples + + + + + Authors + + Priyanka Hiranandani + Rohan Gurve + + + diff --git a/help/en_US/roiFreeHand.xml b/help/en_US/roiFreeHand.xml new file mode 100644 index 0000000..675d98c --- /dev/null +++ b/help/en_US/roiFreeHand.xml @@ -0,0 +1,85 @@ + + + + + + + + roiFreeHand + This is a gui based function which is used to create a mask by selecting the region of interest + + + + + Calling Sequence + + src = imread(image-location-for-src) + mask = roiFreeHand(src) + + + + + + Parameters + + mask: + Output 8 bit mask image with same size as input image + image: + Input image to be masked + + + + + Description + +This function allows the user to create a mask by selecting the region of interest in the image. +Start selecting the region of interest by pressing the left mouse button and moving in the clockwise direction. +Don't leave the left mouse button until you are done selecting the region. Once the region has been selected, +wait until the process completes. +More than one region of interest can be selected by repeating the same procedure. +Once you are done selecting the ROI, press the small 's' key.This would stop the process. +This function returns a 8 bit mask image with (the ROI being white and the rest of the region being black). + + +Note +more than one ROI can be selected from the image. Press key 's' only after all ROI have been selected. +Move the mouse only in the clockwise direction. +This algorithm assumes that the selected points in the ROI are very close to each other. Thus for best result, move +the mouse slowly while selecting the ROI + + + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/roiPoly.xml b/help/en_US/roiPoly.xml new file mode 100644 index 0000000..457ff99 --- /dev/null +++ b/help/en_US/roiPoly.xml @@ -0,0 +1,105 @@ + + + + + + + + roiPoly + This function creates mask by selecting the ROI as a poygon. + + + + + Calling Sequence + + I = imimread(image-location) + c = [c1 c2 ..............cn] + r = [r1 r2 ..............rn] + BW = roipoly(I, c, r) + + + + + + Parameters + + I : + Input image + c : + a 1xn vector specifying the column indices of the vertices of the n sided polygon + r : + a 1xn vector specifying the row indices of the vertices of the n sided polygon + BW: + Output mask image for input I + + + + + Description + +Returns the ROI specified by the polygon described by vectors c and r, which specify the column +and row indices of each vertex, respectively. c and r must be the same size. + + + + + + + Examples + + + + + Examples + + + + + Examples + + + + + Authors + + Vinay Bhat + Rohan Gurve + + + diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS new file mode 100644 index 0000000..42ca2b7 Binary files /dev/null and b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS differ diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB new file mode 100644 index 0000000..6d4b50e --- /dev/null +++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB @@ -0,0 +1,5 @@ +euu_0ueeuu8bF3]aq^(`K8ʾʌ(ҫ2b +*"2 9Jʸ\`T`]w 02r̘ 66/<ͫ20ͪ2&B,Ϊ0.23* +̦/55b*3.203 4`J< +00 +Œ*(*8̊(®/02*2*6*+* 0` \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS b/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS new file mode 100644 index 0000000..b89bfe1 --- /dev/null +++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS @@ -0,0 +1,2 @@ +(י}K]<#*Dg"-FE.IW3 +MfF/)E /L[ыce dHFMᶯ0 \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS b/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS new file mode 100644 index 0000000..104e68b Binary files /dev/null and b/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS differ diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA b/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA new file mode 100644 index 0000000..9dc05ee --- /dev/null +++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA @@ -0,0 +1,2 @@ +JavaSearch 1.0 +TMAP bs=2048 rt=1 fl=-1 id1=807 id2=1 diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP b/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP new file mode 100644 index 0000000..1335a4b Binary files /dev/null and b/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP differ diff --git a/help/en_US/scilab_en_US_help/ScilabCaution.png b/help/en_US/scilab_en_US_help/ScilabCaution.png new file mode 100644 index 0000000..a9e4ff3 Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabCaution.png differ diff --git a/help/en_US/scilab_en_US_help/ScilabEdit.png b/help/en_US/scilab_en_US_help/ScilabEdit.png new file mode 100644 index 0000000..188e1c1 Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabEdit.png differ diff --git a/help/en_US/scilab_en_US_help/ScilabExecute.png b/help/en_US/scilab_en_US_help/ScilabExecute.png new file mode 100644 index 0000000..a7de0fe Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabExecute.png differ diff --git a/help/en_US/scilab_en_US_help/ScilabImportant.png b/help/en_US/scilab_en_US_help/ScilabImportant.png new file mode 100644 index 0000000..81e9ed2 Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabImportant.png differ diff --git a/help/en_US/scilab_en_US_help/ScilabNote.png b/help/en_US/scilab_en_US_help/ScilabNote.png new file mode 100644 index 0000000..8851b99 Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabNote.png differ diff --git a/help/en_US/scilab_en_US_help/ScilabTip.png b/help/en_US/scilab_en_US_help/ScilabTip.png new file mode 100644 index 0000000..8851b99 Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabTip.png differ diff --git a/help/en_US/scilab_en_US_help/ScilabWarning.png b/help/en_US/scilab_en_US_help/ScilabWarning.png new file mode 100644 index 0000000..a9e4ff3 Binary files /dev/null and b/help/en_US/scilab_en_US_help/ScilabWarning.png differ diff --git a/help/en_US/scilab_en_US_help/c_code.css b/help/en_US/scilab_en_US_help/c_code.css new file mode 100644 index 0000000..948d2ee --- /dev/null +++ b/help/en_US/scilab_en_US_help/c_code.css @@ -0,0 +1,54 @@ +.ccomment { + font-style: italic; + color: #b22222 +} + +.cdefault { + font-style: normal; + color: #000000 +} + +.copenclose { + font-style: normal; + color: #000000 +} + +.coperator { + font-style: normal; + color: #000000 +} + +.cstring { + font-style: normal; + color: #a6557a +} + +.ctype { + font-style: normal; + color: #55a655 +} + +.cpreprocessor { + font-style: normal; + color: #9965a6 +} + +.cid { + font-style: normal; + color: #000000 +} + +.ckeyword { + font-style: normal; + color: #ad3ff2 +} + +.cmodifier { + font-style: normal; + color: #ad3ff2 +} + +.cnumber { + font-style: normal; + color: #008b8b +} diff --git a/help/en_US/scilab_en_US_help/colorChange.html b/help/en_US/scilab_en_US_help/colorChange.html new file mode 100644 index 0000000..445cd2b --- /dev/null +++ b/help/en_US/scilab_en_US_help/colorChange.html @@ -0,0 +1,111 @@ + + + colorChange + + + +
+ + + + +
+ << FOSSEE Image Processing Toolbox + + + FOSSEE Image Processing Toolbox + + + convert >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > colorChange + +

+

colorChange

+

This function seamlessly mixes two differently colored versions of the input image.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+mask = roiFreeHand(src); //we can also use other function to create the mask
+outputImage = colorChange(src, mask, red_mul, green_mul, blue_mul )
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input source image

+
mask: +

Input mask image with same size as that of source image.

+
red_mul: +

R-channel multiply factor (float) (default value= 1.0f)

+
green_mul: +

G-channel multiply factor.(float) (default value= 1.0f)

+
blue_mul: +

B-channel multiply factor.(float) (default value= 1.0f)

+ +

Description

+

Given an original color image, two differently colored versions of this image can be mixed seamlessly.

+

+ +

Examples

+
src = imread("/images/color2.jpeg");
+mask = roiFreeHand(src); //creating a mask
+
+outputImage1 = colorChange(src, mask) //using default value for all optional parameters
+imshow(outputImage1);//view the output
+
+outputImage2 = colorChange(src, mask,0.5 ) //specifying just the value of red_mul
+imshow(outputImage2);//view the output
+
+outputImage3 = colorChange(src, mask,0.5 , 1, 2.5 ) //specifying value of all optional parameter
+imshow(outputImage3);//view the output
+
+outputImage4 = colorChange(src, mask,0.5 , [] , 2.5 ) //skipping the second argument
+imshow(outputImage4);//view the output
+ +

Examples

+
src = imread("../images/color2.jpeg");
+[row col] = size(src)
+mask = zeros(row,col) //creating a mask
+mask(100:140,100:150) =255
+imshow(mask); view the mask
+outputImage = colorChange(src, mask,0.5 , 1, 2.5 ) //specifying value of all optional parameter
+imshow(outputImage);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << FOSSEE Image Processing Toolbox + + + FOSSEE Image Processing Toolbox + + + convert >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/convert.html b/help/en_US/scilab_en_US_help/convert.html new file mode 100644 index 0000000..d298a62 --- /dev/null +++ b/help/en_US/scilab_en_US_help/convert.html @@ -0,0 +1,89 @@ + + + convert + + + +
+ + + + +
+ << colorChange + + + FOSSEE Image Processing Toolbox + + + detailEnhance >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > convert + +

+

convert

+

This function converts a matrix to another data type with optional scaling.

+ + +

Calling Sequence

+
src = imread('location-of-src');
+dst = convert(src,rtype, alpha,beta);
+ +

Parameters

+
src : +

the source matrix/image

+
alpha: +

optional scale factor (default value is 1) (type- Double)

+
beta: +

optional delta added to the scaled values (default value is 0) (type- Double)

+
rtype: +

(type- string)desired output matrix type/depth.It supports the following types -> 1) CV_8U, 2) CV_8S, 3) CV_16U ,4) CV_16S, 5) CV_32S, 6) CV_64F

+ +

Description

+

The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overflows-

+

+ +

Examples

+
src = imread('/images/color2.jpeg');
+dst = convert(src,'CV_8U') //convert to 8 bit unsigned int using default values of alpha and beta
+dst //viewing the content of dst
+
+dst2 = convert(src,'CV_64F') //convert to 64 bit floating point using default values of alpha and beta
+dst2 //viewing the content of dst2
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << colorChange + + + FOSSEE Image Processing Toolbox + + + detailEnhance >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/detailEnhance.html b/help/en_US/scilab_en_US_help/detailEnhance.html new file mode 100644 index 0000000..2a6ac2a --- /dev/null +++ b/help/en_US/scilab_en_US_help/detailEnhance.html @@ -0,0 +1,88 @@ + + + detailEnhance + + + +
+ + + + +
+ << convert + + + FOSSEE Image Processing Toolbox + + + edgePreservingFilter >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > detailEnhance + +

+

detailEnhance

+

This filter enhances the details of a the given image.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+outputImage = detailEnhance(src,sigma_s,sigma_r)
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input 8-bit 3-channel image.

+
sigma_s: +

Range between 0 to 200 (float) (default value is 10)

+
sigma_r: +

Range between 0 to 1. (float) (default value is 0.15f)

+ +

Examples

+
src = imread("/images/color2.jpeg");
+outputImage1 = detailEnhance(src) //using the default values for optional parameter
+imshow(outputImage1);//view the output
+
+outputImage2 = detailEnhance(src,[],0.4) //providing value for second optional parameter
+imshow(outputImage2);//view the output
+
+outputImage3 = detailEnhance(src,121,0.4) // providing value all optional parameters
+imshow(outputImage3);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << convert + + + FOSSEE Image Processing Toolbox + + + edgePreservingFilter >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/edgePreservingFilter.html b/help/en_US/scilab_en_US_help/edgePreservingFilter.html new file mode 100644 index 0000000..61720e7 --- /dev/null +++ b/help/en_US/scilab_en_US_help/edgePreservingFilter.html @@ -0,0 +1,95 @@ + + + edgePreservingFilter + + + +
+ + + + +
+ << detailEnhance + + + FOSSEE Image Processing Toolbox + + + getDepth >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > edgePreservingFilter + +

+

edgePreservingFilter

+

This function smoothens the given input image while preserving the edges.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+outputImage = edgePreservingFilter(src,flag,sigma_s,sigma_r)
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input 8-bit 3-channel image.

+
flag: +

(default value is 1) (denotes Edge preserving filters). It takes 2 values -> 1) 1 (for RECURS_FILTER) ; 2) 2 (for NORMCONV_FILTER)

+
sigma_s: +

Range between 0 to 200 (float) (default value is 60 )

+
sigma_r: +

Range between 0 to 1. (float) (default value is 0.4f)

+ +

Description

+

Filtering is the fundamental operation in image and video processing. Edge-preserving smoothing filters +are used in many different applications

+

+ +

Examples

+
src = imread("/images/color2.jpeg");
+outputImage1 = edgePreservingFilter(src) //using default values for all optional arguments
+imshow(outputImage1);//view the output
+
+outputImage2 = edgePreservingFilter(src,2) //using default values for sigma_s & sigma_r
+imshow(outputImage2);//view the output
+
+outputImage3 = edgePreservingFilter(src,[],[],0.6) //using default values for sigma_s & sigma_r
+imshow(outputImage3);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << detailEnhance + + + FOSSEE Image Processing Toolbox + + + getDepth >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/getDepth.html b/help/en_US/scilab_en_US_help/getDepth.html new file mode 100644 index 0000000..e8bfa26 --- /dev/null +++ b/help/en_US/scilab_en_US_help/getDepth.html @@ -0,0 +1,82 @@ + + + getDepth + + + +
+ + + + +
+ << edgePreservingFilter + + + FOSSEE Image Processing Toolbox + + + getStructuringElement >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > getDepth + +

+

getDepth

+

This function returns the depth of the input matrix element.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+depth = getDepth(src)
+ +

Parameters

+
src: +

Input 8-bit 3-channel image.

+
depth: +

a string which denoted the depth of the src.It identifies the following- 1) CV_8U - 8-bit unsigned integers ( 0..255 ) ; 2) CV_8S - 8-bit signed integers ( -128..127 ); 3) CV_16U - 16-bit unsigned integers ( 0..65535 ); 4) CV_16U - 16-bit unsigned integers ( 0..65535 ); 5) CV_16S - 16-bit signed integers ( -32768..32767 ) ; 6) CV_32S - 32-bit signed integers ( -2147483648..2147483647 ) ; 7) CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN )

+ +

Examples

+
src = imread("/images/color2.jpeg"); //reading an image
+depth = getDepth(src) ; //get the depth
+disp(depth) ; //view the output
+ +

Description

+

Note - Scilab does not support CV_32F - it would be considered as CV_64F

+

+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << edgePreservingFilter + + + FOSSEE Image Processing Toolbox + + + getStructuringElement >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/getStructuringElement.html b/help/en_US/scilab_en_US_help/getStructuringElement.html new file mode 100644 index 0000000..2d091cd --- /dev/null +++ b/help/en_US/scilab_en_US_help/getStructuringElement.html @@ -0,0 +1,99 @@ + + + getStructuringElement + + + +
+ + + + +
+ << getDepth + + + FOSSEE Image Processing Toolbox + + + illuminationChange >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > getStructuringElement + +

+

getStructuringElement

+

This function returns a structuring element required for the morphological operations.

+ + +

Calling Sequence

+
se = raw_getStructuringElement(gettype, cols, rows, anchorX, anchorY)
+ +

Parameters

+
se: +

output structuring element matrix

+
shape: +

element shape that could be one of the following-

+
cols: +

Width of the structuring element

+
rows: +

Height of the structuring element

+
anchor: +

Anchor position within the element. The value (-1, -1) means that the anchor is at the center.

+
anchor_x: +

x-coordinate of the anchor

+
anchor_y: +

y-coordinate of the anchor

+ +

Description

+

The function constructs and returns the structuring element that can be further passed to +function that perform morphological operations like erode or dilate.

+

+ +

Examples

+
src = imread("/images/color2.jpeg");
+se1=getStructuringElement('MORPH_RECT',5,7,3,4); //make a rectangular structuring element
+out  = dilate(src,se1,3,4,1); //perform dilate morphological operation
+imshow(out); //view the output image
+ +

Examples

+
src = imread("../images/color2.jpeg");
+se2=getStructuringElement('MORPH_ELLIPSE',10,15,2,2);  //make an elliptical structuring element
+out  = dilate(src,se2,2,2,2); //perform dilate morphological operation
+imshow(out); //view the output image
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << getDepth + + + FOSSEE Image Processing Toolbox + + + illuminationChange >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/illuminationChange.html b/help/en_US/scilab_en_US_help/illuminationChange.html new file mode 100644 index 0000000..a6da272 --- /dev/null +++ b/help/en_US/scilab_en_US_help/illuminationChange.html @@ -0,0 +1,108 @@ + + + illuminationChange + + + +
+ + + + +
+ << getStructuringElement + + + FOSSEE Image Processing Toolbox + + + localMaximaFinder >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > illuminationChange + +

+

illuminationChange

+

This function is used to reduce specular reflections or highlight under-exposed foreground objects.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+mask = roiFreeHand(src); //we can also use other function to create the mask
+outputImage = illuminationChange(src, mask, alpha, beta )
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input source image

+
mask: +

Input mask image with same size as that of source image.

+
alpha: +

Value ranges between 0-2. (float) (default value= 0.2f)

+
beta: +

Value ranges between 0-2. (float) (default value= 0.4f)

+ +

Description

+

Applying an appropriate non-linear transformation to the gradient field inside the selection and then integrating +back with a Poisson solver, modifies locally the apparent illumination of an image.

+

+ +

Examples

+
src = imread("/images/color2.jpeg");//reading an image
+mask = roiFreeHand(src); //creating a mask
+imshow(mask);//view mask
+
+outputImage1 = illuminationChange(src, mask) //using default arguments
+imshow(outputImage1); // view outputImage1
+
+outputImage2 = illuminationChange(src, mask,1.9, 0.3) //providing all optional input arguments
+imshow(outputImage2); // view outputImage2
+
+outputImage3 = illuminationChange(src, mask,[], 0.3) //skipping first optional input argument
+imshow(outputImage3); // view outputImage3
+ +

Examples

+
src = imread("/images/color2.jpeg");
+[row col] = size(src)
+mask = zeros(row,col) //creating a mask
+mask(100:140,100:150) =255
+imshow(mask); view the mask
+outputImage = illuminationChange(src, mask) //using default arguments
+imshow(outputImage);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << getStructuringElement + + + FOSSEE Image Processing Toolbox + + + localMaximaFinder >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/index.html b/help/en_US/scilab_en_US_help/index.html new file mode 100644 index 0000000..bd949e1 --- /dev/null +++ b/help/en_US/scilab_en_US_help/index.html @@ -0,0 +1,181 @@ + + + + + + +
+ + + + +
+ + + + + +
+
+
+ + + + +

+

FOSSEE Image Processing Toolbox

+ +
+ +
+ + + + + + +
Report an issue
+ + + + + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/jhelpidx.xml b/help/en_US/scilab_en_US_help/jhelpidx.xml new file mode 100644 index 0000000..aa5a66e --- /dev/null +++ b/help/en_US/scilab_en_US_help/jhelpidx.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/jhelpmap.jhm b/help/en_US/scilab_en_US_help/jhelpmap.jhm new file mode 100644 index 0000000..cb4e37f --- /dev/null +++ b/help/en_US/scilab_en_US_help/jhelpmap.jhm @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/jhelpset.hs b/help/en_US/scilab_en_US_help/jhelpset.hs new file mode 100644 index 0000000..7c93217 --- /dev/null +++ b/help/en_US/scilab_en_US_help/jhelpset.hs @@ -0,0 +1,28 @@ + + + +FOSSEE Image Processing Toolbox + +top + + + +TOC + +javax.help.TOCView +jhelptoc.xml + + +Index + +javax.help.IndexView +jhelpidx.xml + + +Search + +javax.help.SearchView +JavaHelpSearch + + \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/jhelptoc.xml b/help/en_US/scilab_en_US_help/jhelptoc.xml new file mode 100644 index 0000000..b46c51f --- /dev/null +++ b/help/en_US/scilab_en_US_help/jhelptoc.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/localMaximaFinder.html b/help/en_US/scilab_en_US_help/localMaximaFinder.html new file mode 100644 index 0000000..0be995d --- /dev/null +++ b/help/en_US/scilab_en_US_help/localMaximaFinder.html @@ -0,0 +1,91 @@ + + + localMaximaFinder + + + +
+ + + + +
+ << illuminationChange + + + FOSSEE Image Processing Toolbox + + + minAreaRect >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > localMaximaFinder + +

+

localMaximaFinder

+

This function returns local maxima in input matrice.

+ + +

Calling Sequence

+
location=localMaximaFinder(inputMatrix,neighborhood,maxNoOfMaxima,threshold)
+ +

Parameters

+
inputMatrix: +

2-D input matrix

+
neighborhood: +

It specifies the neighborhood around maxima, function zeros out the values inside the block.

+
maxNoOfMaxima: +

maximum number of local maxima you want to find.

+
threshold: +

It specifies minimum value of the local maxima.

+ +

Description

+

localMaximaFinder returns [x y] coordinates of the local maxima in a M-by-2 matrix where M is +the number of local maxima and each row represents one local maximum

+

+ +

Examples

+
mat = [0 0 0 0 0 0;0 0 0 1 0 0;0 0 7 0 0 0 ;0 0 0 0 0 0];
+loc=localMaximaFinder(mat,[1 3],4,1);
+o/p: loc  =
+
+3.    3.
+4.    2.
+ +

Examples

+
I=imread("/images/color2.jpeg");
+grayImage=rgb2gray(I);
+location=localMaximaFinder(grayImage,[1 1],1,1);
+
+ +
+ + + + + + +
Report an issue
+ << illuminationChange + + + FOSSEE Image Processing Toolbox + + + minAreaRect >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/minAreaRect.html b/help/en_US/scilab_en_US_help/minAreaRect.html new file mode 100644 index 0000000..705d8aa --- /dev/null +++ b/help/en_US/scilab_en_US_help/minAreaRect.html @@ -0,0 +1,92 @@ + + + minAreaRect + + + +
+ + + + +
+ << localMaximaFinder + + + FOSSEE Image Processing Toolbox + + + minEnclosingCircle >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > minAreaRect + +

+

minAreaRect

+

This function is used to find a rotated rectangle of the minimum area enclosing the input 2D point set.

+ + +

Calling Sequence

+
x = [x1 x2 x3 ...............xn]
+y = [y1 y2 y3................yn]
+out = minAreaRect(x , y)
+ +

Parameters

+
x: +

1xn matrix denoting the x coordinates of the points

+
y: +

1xn matrix denoting the corresponding y coordinates of the points

+
out: +

Output structure with the following members - 1) width- width of the rectangle, 2) height- height of the rectangle, 3) center_x- x coordinate of the center of the rectangle, 4) center_y- x coordinate of the center of the rectangle, 5) angle- the angle by which the rectanle is rotated, 6) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 7) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 8) y_coordinates_vertices- 1x4 Double matrix denoting the corresponding y coordinates of the vertices of the rectangle

+ +

Description

+

The function calculates and returns the minimum-area bounding rectangle (possibly rotated) for a specified point set. +the returned rotatedRect can contain negative indices when data is close to the containing Mat element boundary.

+

+ +

Examples

+
x = [0 8 8 0]
+y = [0 0 5 5]
+out = minAreaRect(x,y)
+ +

Examples

+
x = [0 8 8 0 8 8]
+y = [0 0 5 5 4 4]
+out = minAreaRect(x,y)
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << localMaximaFinder + + + FOSSEE Image Processing Toolbox + + + minEnclosingCircle >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/minEnclosingCircle.html b/help/en_US/scilab_en_US_help/minEnclosingCircle.html new file mode 100644 index 0000000..b0363f4 --- /dev/null +++ b/help/en_US/scilab_en_US_help/minEnclosingCircle.html @@ -0,0 +1,87 @@ + + + minEnclosingCircle + + + +
+ + + + +
+ << minAreaRect + + + FOSSEE Image Processing Toolbox + + + partition >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > minEnclosingCircle + +

+

minEnclosingCircle

+

This function is used to find the circumcircle of an object constituted by the given set of input points.

+ + +

Calling Sequence

+
x = [x1 x2 x3 ...............xn]
+y = [y1 y2 y3................yn]
+out = minEnclosingCirlce(x , y)
+ +

Parameters

+
x: +

1xn matrix denoting the x coordinates of the points of the object

+
y: +

1xn matrix denoting the corresponding y coordinates of the points of the object

+
out: +

Output structure with the following members- 1) center_x- x coordinate of the center of the circle, 2)center_y- x coordinate of the center of the circle, 3) radius- radius of the circle

+ +

Examples

+
x = [0 8 8 0 2]
+y = [0 0 5 5 9]
+out = minEnclosingCircle(x,y)
+ +

Examples

+
x = [0 8 8 0 8 8]
+y = [0 0 5 5 4 4]
+out = minEnclosingCircle(x,y)
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << minAreaRect + + + FOSSEE Image Processing Toolbox + + + partition >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/partition.html b/help/en_US/scilab_en_US_help/partition.html new file mode 100644 index 0000000..4763711 --- /dev/null +++ b/help/en_US/scilab_en_US_help/partition.html @@ -0,0 +1,99 @@ + + + partition + + + +
+ + + + +
+ << minEnclosingCircle + + + FOSSEE Image Processing Toolbox + + + pencilSketch >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > partition + +

+

partition

+

This function is used to split an imageSet.

+ + +

Calling Sequence

+
imgSet = imageSet(location) //or imgSet = imageSet(location,'recursive')
+[set1 set2 ... setN] = partition(imgSet, groupSizes)
+[set1 set2 ... setN] = partition(imgSet, groupPercentages)
+[set1 set2 ... setN] = partition(..., method)
+ +

Parameters

+
set: +

Output imageSet structure

+
imgSet: +

Input imageSet to be split

+
groupSizes: +

Matrix that specifies size of output sets

+
groupPercentages: +

Matrix that specifies percentage content of each output set

+
method: +

(Optional) Determines whether split is 'sequential' or 'randomized' (Default: 'sequential')

+ +

Description

+

This function splits an imageSet into two or more imageSets on the basis of the groupSizes or groupPercentages provided.

+

+ +

Examples

+
imgSet = imageSet('/images/test','recursive');
+[set1 set2 set3] = partition(imgSet,[2 , 3], 'randomized');
+
+imgSet = imageSet('/images/test','recursive');
+[trainingSet testSet] = partition(imgSet,[0.8]);
+
+imgSet = imageSet('/images/airplanes');
+[set1 set2] = partition(imgSet,[5]);
+
+imgSet = imageSet('/images/test','recursive');
+[trainingSet testSet] = partition(imgSet,[4], 'randomized');
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << minEnclosingCircle + + + FOSSEE Image Processing Toolbox + + + pencilSketch >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/pencilSketch.html b/help/en_US/scilab_en_US_help/pencilSketch.html new file mode 100644 index 0000000..363766e --- /dev/null +++ b/help/en_US/scilab_en_US_help/pencilSketch.html @@ -0,0 +1,92 @@ + + + pencilSketch + + + +
+ + + + +
+ << partition + + + FOSSEE Image Processing Toolbox + + + pyramid >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > pencilSketch + +

+

pencilSketch

+

This function is used to give a non-photorealistic pencil-like line drawing effect to the given input image.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+[outputImage_1 outputImage_2 ] = pencilSketch(src,sigma_s,sigma_r,shade_factor)
+ +

Parameters

+
outputImage_1: +

resultant Output image with single channel

+
outputImage_2: +

resultant Output image with 3 channels

+
src: +

Input 8-bit 3-channel image.

+
sigma_s: +

Range between 0 to 200 (float) (default value is 60)

+
sigma_r: +

Range between 0 to 1. (float) (default value is 0.07f)

+
shade_factor: +

Range between 0 to 0.1 (default value is 0.02f)

+ +

Examples

+
src = imread("/images/color2.jpeg");
+outputImage1 = pencilSketch(src) //using default values for all optional parameters
+imshow(outputImage1);//view the output
+
+outputImage2 = pencilSketch(src,100,[],0.07) //using default values for sigma_s
+imshow(outputImage2);//view the output
+
+outputImage3 = pencilSketch(src,100,0.4,0.07) //providing values for all optional parameters
+imshow(outputImage3);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << partition + + + FOSSEE Image Processing Toolbox + + + pyramid >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/pyramid.html b/help/en_US/scilab_en_US_help/pyramid.html new file mode 100644 index 0000000..12a751e --- /dev/null +++ b/help/en_US/scilab_en_US_help/pyramid.html @@ -0,0 +1,90 @@ + + + pyramid + + + +
+ + + + +
+ << pencilSketch + + + FOSSEE Image Processing Toolbox + + + regionFill >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > pyramid + +

+

pyramid

+

This function computes the pyramid reduction or expansion of input_image.

+ + +

Calling Sequence

+
output_image=pyramid(inputimage,direction,level);
+ +

Parameters

+
inputimage : +

image matrix on which pyramid reduction or expansion has to be applied

+
Direction : +

An input string 'expand' for expand or 'reduce' for reduce the image matrix

+
level : +

It is specify number of times want to expand or reduce the dimension of an image matrix.

+
output_image : +

Expanded or reduced form of image after pyramid reduction or expansio

+ +

Description

+

This function computes the pyramid reduction or expansion of input image.It uses Gaussian pyramid to downsamples +and upsamples the image pixels.In reduction it reduces the size of image (if m*n matrix image) by m/pow(2,level) +and n/pow(2,level).In expansion it expands the size of image (if m*n matrix image) by m*pow(2,level) +and n*pow(2,level) where pow(x,y)=x^y.

+

+ +

Examples

+
inputimage1 = imread('/images/color2.jpeg'); //read an image
+a=pyramid(inputimage1,'expand',2); //perform 'expand' operation
+imshow(a); //view the output
+b=pyramid(inputimage1,'reduce',4);
+imshow(b); //view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << pencilSketch + + + FOSSEE Image Processing Toolbox + + + regionFill >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/regionFill.html b/help/en_US/scilab_en_US_help/regionFill.html new file mode 100644 index 0000000..5e4cfd3 --- /dev/null +++ b/help/en_US/scilab_en_US_help/regionFill.html @@ -0,0 +1,96 @@ + + + regionFill + + + +
+ + + + +
+ << pyramid + + + FOSSEE Image Processing Toolbox + + + rgb2gray >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > regionFill + +

+

regionFill

+

This function restores the selected region in an image using the region neighborhood.

+ + +

Calling Sequence

+
src = imread(location-for-image)
+x = [x1 x2 ...........xn ] //x coordinates of polygon covering the region that you want to fill
+y = [y1 y2 ...........yn ] //corresponding y coordinates of polygon covering the region that you want to fill
+dstImg 1= regionFill(srcImg,inpaintRadius,x,y)
+
+mask = roiFreeHand(srx) //making a mask - you can also use other function to make the mask
+dstImg2 = regionFill(srcImg,inpaintRadius,mask)
+ +

Parameters

+
srcImg: +

input source imge //it is converted to 8 bit internally

+
inpaintRadius: +

Radius of a circular neighborhood of each point inpainted that is considered by the algorithm(Double)

+
mask: +

Inpainting mask. Non-zero pixels indicate the area that needs to be inpainted.

+
x: +

1xn matrix denoting x coordinates of polygon covering the region that you want to fill

+
y: +

1xn matrix denoting y coordinates of polygon covering the region that you want to fill

+ +

Examples

+
src= imread("/images/color2.jpeg");
+p=regionFill(src,1,[100 110 110 100],[150 150 200 200]);
+imshow(p);
+ +

Examples

+
src= imread("/images/color2.jpeg"); //reading an image
+mask=roiFreeHand(src); //making a mask
+p=regionFill(src,5,mask);
+imshow(p);
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << pyramid + + + FOSSEE Image Processing Toolbox + + + rgb2gray >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/rgb2gray.html b/help/en_US/scilab_en_US_help/rgb2gray.html new file mode 100644 index 0000000..cc2eea4 --- /dev/null +++ b/help/en_US/scilab_en_US_help/rgb2gray.html @@ -0,0 +1,79 @@ + + + rgb2gray + + + +
+ + + + +
+ << regionFill + + + FOSSEE Image Processing Toolbox + + + roiFreeHand >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > rgb2gray + +

+

rgb2gray

+

Given an original color image, this function converts it into a single channel grayscale image and return the same.

+ + +

Calling Sequence

+
inputImage = imread("image-location-for-inputImage");
+outputImg = rgb2gray(inputImage)
+ +

Parameters

+
outputImage: +

single channel grayscale version of the inputImage

+
inputImage: +

Input source image

+ +

Examples

+
src = imread("/images/color2.jpeg");
+gray = rgb2gray(src);
+imshow(gray);//view the output grayscale image
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << regionFill + + + FOSSEE Image Processing Toolbox + + + roiFreeHand >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/roiFreeHand.html b/help/en_US/scilab_en_US_help/roiFreeHand.html new file mode 100644 index 0000000..22cbfa2 --- /dev/null +++ b/help/en_US/scilab_en_US_help/roiFreeHand.html @@ -0,0 +1,96 @@ + + + roiFreeHand + + + +
+ + + + +
+ << rgb2gray + + + FOSSEE Image Processing Toolbox + + + roiPoly >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > roiFreeHand + +

+

roiFreeHand

+

This is a gui based function which is used to create a mask by selecting the region of interest

+ + +

Calling Sequence

+
src = imread(image-location-for-src)
+mask = roiFreeHand(src)
+ +

Parameters

+
mask: +

Output 8 bit mask image with same size as input image

+
image: +

Input image to be masked

+ +

Description

+

This function allows the user to create a mask by selecting the region of interest in the image. +Start selecting the region of interest by pressing the left mouse button and moving in the clockwise direction. +Don't leave the left mouse button until you are done selecting the region. Once the region has been selected, +wait until the process completes. +More than one region of interest can be selected by repeating the same procedure. +Once you are done selecting the ROI, press the small 's' key.This would stop the process. +This function returns a 8 bit mask image with (the ROI being white and the rest of the region being black).

+

Note +more than one ROI can be selected from the image. Press key 's' only after all ROI have been selected. +Move the mouse only in the clockwise direction. +This algorithm assumes that the selected points in the ROI are very close to each other. Thus for best result, move +the mouse slowly while selecting the ROI

+

+ +

Examples

+
src = imread("/images/color2.jpeg");
+mask = roiFreeHand(src); //creating a mask
+imshow(mask) //view the mask
+
+outputImage1 = colorChange(src, mask) //using this mask in the colorChange function
+imshow(outputImage1);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << rgb2gray + + + FOSSEE Image Processing Toolbox + + + roiPoly >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/roiPoly.html b/help/en_US/scilab_en_US_help/roiPoly.html new file mode 100644 index 0000000..8691f90 --- /dev/null +++ b/help/en_US/scilab_en_US_help/roiPoly.html @@ -0,0 +1,109 @@ + + + roiPoly + + + +
+ + + + +
+ << roiFreeHand + + + FOSSEE Image Processing Toolbox + + + seamlessClone >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > roiPoly + +

+

roiPoly

+

This function creates mask by selecting the ROI as a poygon.

+ + +

Calling Sequence

+
I = imimread(image-location)
+c = [c1 c2 ..............cn]
+r = [r1 r2 ..............rn]
+BW = roipoly(I, c, r)
+ +

Parameters

+
I : +

Input image

+
c : +

a 1xn vector specifying the column indices of the vertices of the n sided polygon

+
r : +

a 1xn vector specifying the row indices of the vertices of the n sided polygon

+
BW: +

Output mask image for input I

+ +

Description

+

Returns the ROI specified by the polygon described by vectors c and r, which specify the column +and row indices of each vertex, respectively. c and r must be the same size.

+

+ +

Examples

+
I = imread('image_01.jpeg');
+c = [50 50 100 100]   //defining the column indices of the vertices of the ROI
+r = [100 150 150 100 ]   //defining the corresponding row indices of the vertices of the ROI
+BW = roipoly(I, c, r) //creating a mask
+imshow(BW)   //viewing the mask
+c=colorChange(I,mask,2.4 ,2.0, 2.2); //using this mask in colorChange function
+imshow(c);
+ +

Examples

+
I = imread('../images/color3.jpg');
+c = [ 150 200 250 300 250 200 ] ;  //defining the column indices of the vertices of the ROI
+r = [ 135 100 100 135 170 170 ] ;  //defining the corresponding row indices of the vertices of the ROI
+gray = rgb2gray(I) ;                           //for a grayscale image
+BW = roiPoly(I, c, r); //creating a mask
+imshow(BW)   //viewing the mask
+ +

Examples

+
I = imread('/images/color3.jpg');
+c1 = [200 250 300 250  150 200 ]
+r1 = [ 170 170 135 100 135 100]  //undesired output because changing the order of points
+BW = roiPoly(I,c1,r1);
+imshow(BW)
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << roiFreeHand + + + FOSSEE Image Processing Toolbox + + + seamlessClone >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/scilab_code.css b/help/en_US/scilab_en_US_help/scilab_code.css new file mode 100644 index 0000000..658f42e --- /dev/null +++ b/help/en_US/scilab_en_US_help/scilab_code.css @@ -0,0 +1,96 @@ +.scilabcomment { + font-style: italic; + color: #01a801 +} + +.scilabdefault { + font-style: normal; + color: #000000 +} + +.scilabspecial { + font-style: normal; + color: #ffaa00 +} + +.scilabconstants { + font-style: normal; + color: #da70d6 +} + +.scilaboperator { + font-style: normal; + color: #5c5c5c +} + +.scilabnumber { + font-style: normal; + color: #bc8f8f +} + +.scilabfkeyword { + font-style: normal; + color: #b01813 +} + +.scilabskeyword { + font-style: normal; + color: #a020f0 +} + +.scilabckeyword { + font-style: normal; + color: #5f9ea0 +} + +.scilabcommand { + font-style: normal; + color: #32b9b9 +} + +.scilabmacro { + font-style: normal; + color: #ae5cb0 +} + +a.scilabcommand { + font-style: normal; + text-decoration: underline; + color: #32b9b9 +} + +a.scilabmacro { + font-style: normal; + text-decoration: underline; + color: #ae5cb0 +} + +.scilabstring { + font-style: normal; + color: #bc8f8f +} + +.scilabid { + font-style: normal; + color: #000000 +} + +.scilabinputoutputargs { + font-weight: bold; + color: #834310 +} + +.scilabfunctionid { + font-weight: bold; + color: #000000 +} + +.scilabfield { + font-style: normal; + color: #aaaaaa +} + +.scilabopenclose { + font-style: normal; + color: #4a55db +} diff --git a/help/en_US/scilab_en_US_help/seamlessClone.html b/help/en_US/scilab_en_US_help/seamlessClone.html new file mode 100644 index 0000000..52088e4 --- /dev/null +++ b/help/en_US/scilab_en_US_help/seamlessClone.html @@ -0,0 +1,109 @@ + + + seamlessClone + + + +
+ + + + +
+ << roiPoly + + + FOSSEE Image Processing Toolbox + + + stylization >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > seamlessClone + +

+

seamlessClone

+

This function is used to seamlessly clone a source image onto a destination image.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+mask = roiFreeHand(src); //we can also use other function to create the mask
+outputImage = seamlessClone(src,dst,mask, pointMatirx, flag)
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input source image.

+
dst: +

Input destination image on which the source image will be cloned onto .

+
mask: +

Input mask image with same size as that of source image.

+
pointMatirx: +

a 1x2 vector denoting the x & y coordinates of the point in dst where the src image will be cloned (x & y are Double)

+
flag( Cloning method that could be one of the following): +

1) 1 - NORMAL_CLONE ; 2) 2 - MIXED_CLONE ; 3) 3 - FEATURE_EXCHANGE

+ +

Description

+

Image editing tasks concern either global changes (color/intensity corrections, filters, deformations) or +local changes concerned to a selection. Here we are interested in achieving local changes, ones +that are restricted to a region manually selected (ROI), in a seamless and effortless manner. +The extent of the changes ranges from slight distortions to complete replacement by novel content

+

+

Note: The size of the source image should be equal to or less than the destination image. The point 'p' +should be chosen such that it fully fits inside the destination image.If not, then this function will throw the error=> +-(minxd >= 0 && minyd >= 0 && maxxd <= dest.rows && maxyd <= dest.cols) in seamlessClone

+

+ +

Examples

+
dst = imread("/images/color3.jpg"); //read destination image
+src = imread("/images/cartoon.jpg"); //read source image
+mask = roiFreeHand(src); //create a mask for source image
+output = seamlessClone(src,dst,mask,[75 120], 1 ); //perform the seamelessClone
+imshow(output);
+ +

Examples

+
dst = imread("/images/color3.jpg"); //read destination image
+src = imread("/images/cartoon.jpg"); //read source image
+[rows cols] = size(src)  //creating a mask for source image
+mask = zeros(rows,cols);
+mask(50:rows,1:cols) = 255;
+output = seamlessClone(src,dst,mask,[75 120], 1 ); //perform the seamelessClone
+imshow(output);
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << roiPoly + + + FOSSEE Image Processing Toolbox + + + stylization >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/section_ac9053c792dc9eb4ff7757c58fe12a32.html b/help/en_US/scilab_en_US_help/section_ac9053c792dc9eb4ff7757c58fe12a32.html new file mode 100644 index 0000000..9583d25 --- /dev/null +++ b/help/en_US/scilab_en_US_help/section_ac9053c792dc9eb4ff7757c58fe12a32.html @@ -0,0 +1,181 @@ + + + + + + +
+ + + + +
+ + + FOSSEE Image Processing Toolbox + + + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox + +

+

FOSSEE Image Processing Toolbox

+ +
+ +
+ + + + + + +
Report an issue
+ + + FOSSEE Image Processing Toolbox + + + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/style.css b/help/en_US/scilab_en_US_help/style.css new file mode 100644 index 0000000..0fe8923 --- /dev/null +++ b/help/en_US/scilab_en_US_help/style.css @@ -0,0 +1,350 @@ +body { + color:#000000; + background-color:#ffffff; + font-family:sans-serif; + font-size:100%; + margin:5px; + padding:0; + background : url("/img/body.png"); + background-repeat : repeat-x; +} + +.para { + padding-left: 10px; +} + +.refname { + color: #ff6c0a; +} +.refpurpose { + font-size: 110%; +} + +.synopsis { + border: 1px solid black; + width:80%; + padding: 0.5em; +} + +.editbar { + text-align: right; +} + +.term { + color:#800000; + font-size:100%; +} + +h3 { + color: #000063; + font-weight: bold; + font-size:130%; + margin-bottom: 10px; +} + +.programlisting { + font-family: monospace; + font-size: 100%; + background-color:#EEEEFF; + border-color:#CCCCCC; + border-style:solid; + border-width:2px medium; + width:80%; + color:#333333; + line-height:120%; + padding:10px; +} + +.literal { + font-family: monospace; + font-size: 100%; +} + +.option { + font-family: monospace; + font-style: italic; + font-size: 100%; +} + +.command { + font-family: monospace; + font-size: 100%; + color: #32b9b9; +} + +.function { + font-family: monospace; + font-size: 100%; + color: #32b9b9; +} + +.varname { + font-family: monospace; + font-weight: bold; + font-size: 100%; +} + +.constant { + font-family: monospace; + font-size: 100%; + color: #da70d6; +} + +a { + color: blue; + text-decoration:none; +} + +a:hover { + text-decoration:underline; +} + +.itemizedlist { + list-style-type: disk; +} + +.inline-list li { + display: inline; + list-style-type: disk; +} + +.vert-list { + list-style-type: disk; +} + +pre { + margin-bottom: 0px; + margin-top: 0px; +} + +.leftpart { + position:absolute; + float:left; + width: 186px; + padding: 5px; + font-size: smaller; +} + +.content { + margin-top: 100px; + margin-left: 196px +} + +.container { + margin: 0 auto; + width:1024px; +} + +ul.toc li.list-active { + list-style-type:disc; + font-weight:bold; +} + +ul.toc li.parent { + font-size: 115%; + padding: 5px 0px 5px 11px; + border-bottom: 1px solid #cccccc; + margin-bottom: 5px; +} + +ul.toc li.root { + font-size: 135%; + padding: 5px 0px 5px 11px; + border-bottom: 1px solid #cccccc; + margin-bottom: 5px; +} + +ul.toc li { + font-size: 85%; + margin: 1px 0 1px 1px; + padding: 1px 0 1px 11px; + background-repeat: no-repeat; + background-position: center left; + list-style-type: circle; +} + +.next { + float:right; + text-align: right; +} + +.center { + text-align: center; +} + +.screen { + font-family: monospace; + font-size: 100%; + background-color:#FFFFFF; + border-color:#CCCCCC; + border-style:solid; + border-width:2px medium; + width:80%; + color:#333333; + line-height:120%; + padding:10px; +} + +/* Top and bottom navigation controls on manual pages --------------------- */ +div.manualnavbar { + background-color: #E0E0E0; + color: inherit; + padding: 4px; + margin-bottom: 10px; +} +div.manualnavbar .prev { + padding-right: 4px; +} +div.manualnavbar .next { + text-align: right; + padding-left: 4px; +} + +div.manualnavbar .top { + text-align: center; + display: block; +} + +div.manualnavbar hr { + color: #cccccc; + background-color: #cccccc; +} + +/* Footer navigation area ------------------------------------------------- */ + +#pagefooter { + position: relative; + font-size: 75%; + color: inherit; + background-color: #e5e5e5; + width: 100%; +} + +#pagefooterleft { + top: 0px; + left: 0px; + padding: 6px; + margin-right: 30%; +} + +#pagefooterright { + text-align: right; + margin-left: 50%; + padding: 6px; +} +#footnav { + color: inherit; + background-color: #9999cc; + border-width: 1px 0px; + border-color: #333366; + border-style: solid; + text-align: right; + padding-right: 6px; +} + + + + + #global{ +/* width: 90%; */ + max-width: 90em; +/* min-width: 850px; */ + margin-left: auto; + margin-right: auto; + } + + #myHeader{ + background-color:#000000; + color:white; + margin-bottom : 10px; + position : relative; + text-align: center; +/* width : 1024px;*/ + height : 100px; + padding-left : 20px; + background : url("http://atoms.scilab.org/images/homepage/cadre_head.png"); + background-repeat : no-repeat; + background-position : 0px 0px; + + } + + #myFooter{ + background-color:#E5E5E5; + font-color:black; +/* width: 90%;*/ + max-width: 90em; +/* min-width: 850px; + margin-left: 5%; + margin-right: 5%;*/ + margin-top:10px; + padding:10px; + } + + #mainArea{ + width: 100%; + overflow: hidden; + } + + #myLeftArea{ + color:white; + float: left; + width: 180px; + padding:5px; + } + + #myMiddleArea{ + color:black; + margin-left: 200px; + padding: 10px 20px; + } + + #myRightArea{ + color:white; + float: right; + width: 200px; + padding: 12px 20px; + } + + +div#cadre_head +{ + position : relative; + text-align: center; +/* width : 1024px;*/ + height : 100px; + padding-left : 20px; + background : url("/img/cadre_head.png"); + background-repeat : no-repeat; + background-position : 0px 0px; +} + + +div#slogan{ + position: absolute; + top : 50px; + left:251px; + color:#0000AA; + font: 120%, Georgia,Serif; +} +div#cadre_help +{ + position: absolute; + top:45px; + right:0px; + font-size:0.8em; + color:#0000AA; +} + +table.revhistory +{ + width:80%; + border-color:#CCCCCC; + border-style:solid; + border-width:2px medium; + margin-bottom: 10px; +} + +table.revhistory tr.title td +{ + background-color: #9999CC; +} \ No newline at end of file diff --git a/help/en_US/scilab_en_US_help/stylization.html b/help/en_US/scilab_en_US_help/stylization.html new file mode 100644 index 0000000..45e3b44 --- /dev/null +++ b/help/en_US/scilab_en_US_help/stylization.html @@ -0,0 +1,93 @@ + + + stylization + + + +
+ + + + +
+ << seamlessClone + + + FOSSEE Image Processing Toolbox + + + templateMatcher >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > stylization + +

+

stylization

+

This function aims to produce non-photorealistic digital imagery with a wide variety of effects.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+outputImage = stylization(src,sigma_s,sigma_r)
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input 8-bit 3-channel image.

+
sigma_s: +

Range between 0 to 200 (float) (default value is 60)

+
sigma_r: +

Range between 0 to 1. (float) (default value is 0.45f)

+ +

Description

+

Edge-aware filters are ideal for stylization, as they can abstract regions of low contrast while preserving, +or enhancing, high-contrast features.

+

+ +

Examples

+
src = imread("/images/color2.jpeg");
+outputImage1 = stylization(src)  //using default values for optional parameters
+imshow(outputImage1);//view the output
+
+outputImage2 = stylization(src,121) //using default value for sigma_r
+imshow(outputImage2);//view the output
+
+outputImage3 = stylization(src,[],0.2) //using default value for sigma_s
+imshow(outputImage3);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << seamlessClone + + + FOSSEE Image Processing Toolbox + + + templateMatcher >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/templateMatcher.html b/help/en_US/scilab_en_US_help/templateMatcher.html new file mode 100644 index 0000000..9155e2b --- /dev/null +++ b/help/en_US/scilab_en_US_help/templateMatcher.html @@ -0,0 +1,96 @@ + + + templateMatcher + + + +
+ + + + +
+ << stylization + + + FOSSEE Image Processing Toolbox + + + textureFlattening >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > templateMatcher + +

+

templateMatcher

+

This function compares a template in overlapped image regions and returns the coordinates of the point of match.

+ + +

Calling Sequence

+
[new_image x y] = templateMatcher(image, template_image)
+ +

Parameters

+
image : +

8-bit int or 32-bit floating image

+
template_image : +

Searched template. It must not be greater than the source image and have the same data type of input image.

+
newimage : +

Map of comparison results. It must be single channel 32-bit floating-point. Its size is (W-w+1) * (H-h+1) if image

+
x: +

the row no. of the location where the template matched occured in the input image

+
y: +

x: the column no. of the location where the template matched in the input image

+ +

Description

+

The function compares the w * h sized images of the original image against the template image and stores the result in the new_image. +The point of maxima in the image gives the position of the match.

+

+ +

Examples

+
src= imread("/images/color3.jpg"); //reading the source image
+gray_src = rgb2gray(src); //converting src to grayscale
+tem = imread("/images/smile.jpg"); //reading the template image
+tem = rgb2gray(tem);//converting template image to gray
+imshow(tem);//view the template image
+[j x y] =templateMatcher(gray_src,tem); //perform the template matching
+[rows cols] =size(tem)
+t = rectangle(src,x,y,x+cols,y+rows,0,0,255,2,8,0);  //mark the position of the point of template match in the src image
+imshow(j) //view the CV_64F output image of templateMatcher
+imshow(t) //view the src image with the template object marked
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << stylization + + + FOSSEE Image Processing Toolbox + + + textureFlattening >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/textureFlattening.html b/help/en_US/scilab_en_US_help/textureFlattening.html new file mode 100644 index 0000000..1b0c150 --- /dev/null +++ b/help/en_US/scilab_en_US_help/textureFlattening.html @@ -0,0 +1,111 @@ + + + textureFlattening + + + +
+ + + + +
+ << templateMatcher + + + FOSSEE Image Processing Toolbox + + + watershed >> + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > textureFlattening + +

+

textureFlattening

+

This function washes out the texture of the selected region in the input image, giving its contents a flat aspect.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+mask = roiFreeHand(src); //we can also use other function to create the mask
+outputImage = textureFlattening(src,mask,low_threshold,high_threshold, kernel_size);
+ +

Parameters

+
outputImage: +

resultant Output image

+
src: +

Input source image.

+
mask: +

Input mask image with same size as that of source image ( 1 or 3-channel image)

+
low_threshold: +

Range from 0 to 100. (double) (default value is 30)

+
high_threshold: +

Value > 100 & <=255. (double) (default value is 120)

+
kernel_size: +

The size of the Sobel kernel to be used: it can be 3 , 5 or 7

+ +

Description

+

It retain the gradients at edge locations, before integrating with the Poisson solver. It uses Canny Edge Detector. +The algorithm assumes that the color of the source image is close to that of the destination. +This assumption means that when the colors don't match, the source image color gets tinted toward the color of the destination image.

+

+ +

Examples

+
src = imread("/images/color2.jpeg");
+mask = roiFreeHand(src); //creating a mask
+imshow(mask);//view mask
+
+outputImage1 = textureFlattening(src,mask) // using default value for optional parameters
+imshow(outputImage1); // view outputImage1
+
+outputImage2 = textureFlattening(src,mask,50 , 180.5 ) //providing value for 1st and 2nd optional argument
+imshow(outputImage2); // view outputImage2
+
+outputImage2 = textureFlattening(src,mask,[],[], 7 ) //providing value for only 3rd optional argument
+imshow(outputImage3); // view outputImage3
+ +

Examples

+
src = imread("/images/color2.jpeg");
+[row col] = size(src)
+mask = zeros(row,col) //creating a mask
+mask(100:140,100:150) =255
+imshow(mask); view the mask
+outputImage = textureFlattening(src,mask)
+imshow(outputImage);//view the output
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << templateMatcher + + + FOSSEE Image Processing Toolbox + + + watershed >> + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/watershed.html b/help/en_US/scilab_en_US_help/watershed.html new file mode 100644 index 0000000..ca0bde4 --- /dev/null +++ b/help/en_US/scilab_en_US_help/watershed.html @@ -0,0 +1,96 @@ + + + watershed + + + +
+ + + + +
+ << textureFlattening + + + FOSSEE Image Processing Toolbox + + + +
+
+
+ + + + FOSSEE Image Processing Toolbox >> FOSSEE Image Processing Toolbox > watershed + +

+

watershed

+

This function returns a marker based segmented image for the given input image.

+ + +

Calling Sequence

+
src = imread("image-location-for-src");
+[dstImg] = watershed(srcImg) //uses distance transform to find the contours
+
+src = imread("image-location-for-src");
+markerMat = roiFreeHand(src); //using roiFreeHand to roughly mark the contours manually by selecting the ROI
+[dstImg] = watershed(srcImg,markerMat)
+src = imread("image-location-for-src");
+ +

Parameters

+
dstImg: +

output segmented image

+
src: +

Input source image

+
markerMat: +

a mask image with the the contours marked(region selected)

+ +

Description

+

The second calling sequence gives better results.Here the user has to manually select the region of interest using roiFreeHand. +Go through the documentation of roiFreeHand to see how it works.

+

+ +

Examples

+
src= imread("/images/watershed2.jpg");
+w2=watershed(src);// markers are created after performing distance transform by default
+imshow(w2);
+ +

Examples

+
src= imread("../images/watershed2.jpg");
+mask=roiFreeHand(src); //creating markers - selecting each coin separately using the function roiFreeHand
+w2=watershed(src,mask); //retrieve the segmented image
+imshow(w2);
+ +

Authors

+
+
+ +
+ + + + + + +
Report an issue
+ << textureFlattening + + + FOSSEE Image Processing Toolbox + + + +
+
+
+ + diff --git a/help/en_US/scilab_en_US_help/xml_code.css b/help/en_US/scilab_en_US_help/xml_code.css new file mode 100644 index 0000000..9e4c27f --- /dev/null +++ b/help/en_US/scilab_en_US_help/xml_code.css @@ -0,0 +1,94 @@ +.xmlcomment { + font-style: italic; + color: #01a801 +} + +.xmldefault { + font-style: normal; + color: #000000 +} + +.xmlentity { + font-style: normal; + color: #ffaa00 +} + +.xmlopeninstr { + font-style: normal; + color: #000000 +} + +.xmlcloseinstr { + font-style: normal; + color: #000000 +} + +.xmlinstrname { + font-style: normal; + color: #9965a6 +} + +.xmllowtag { + font-style: normal; + color: #000000 +} + +.xmltagname { + font-style: normal; + color: #0303ff +} + +.xmllowclose { + font-style: normal; + color: #000000 +} + +.xmlopencomment { + font-style: italic; + color: #01a801 +} + +.xmlcommentend { + font-style: italic; + color: #01a801 +} + +.xmlcomment { + font-style: italic; + color: #01a801 +} + +.xmlopencdata { + font-style: normal; + color: #c45555 +} + +.xmlcdataend { + font-style: normal; + color: #c45555 +} + +.xmlcdata { + font-style: normal; + color: #000000 +} + +.xmlattributename { + font-style: normal; + color: #9965a6 +} + +.xmlequal { + font-style: normal; + color: #000000 +} + +.xmlattributevalue { + font-style: normal; + color: #973964 +} + +.xmlautoclose { + font-style: normal; + color: #000000 +} diff --git a/help/en_US/seamlessClone.xml b/help/en_US/seamlessClone.xml new file mode 100644 index 0000000..bb6591d --- /dev/null +++ b/help/en_US/seamlessClone.xml @@ -0,0 +1,104 @@ + + + + + + + + seamlessClone + This function is used to seamlessly clone a source image onto a destination image. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = seamlessClone(src,dst,mask, pointMatirx, flag) + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input source image. + dst: + Input destination image on which the source image will be cloned onto . + mask: + Input mask image with same size as that of source image. + pointMatirx: + a 1x2 vector denoting the x & y coordinates of the point in dst where the src image will be cloned (x & y are Double) + flag( Cloning method that could be one of the following): + 1) 1 - NORMAL_CLONE ; 2) 2 - MIXED_CLONE ; 3) 3 - FEATURE_EXCHANGE + + + + + Description + +Image editing tasks concern either global changes (color/intensity corrections, filters, deformations) or +local changes concerned to a selection. Here we are interested in achieving local changes, ones +that are restricted to a region manually selected (ROI), in a seamless and effortless manner. +The extent of the changes ranges from slight distortions to complete replacement by novel content + + + + +Note: The size of the source image should be equal to or less than the destination image. The point 'p' +should be chosen such that it fully fits inside the destination image.If not, then this function will throw the error=> +-(minxd >= 0 && minyd >= 0 && maxxd <= dest.rows && maxyd <= dest.cols) in seamlessClone + + + + + + + Examples + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/stylization.xml b/help/en_US/stylization.xml new file mode 100644 index 0000000..3773698 --- /dev/null +++ b/help/en_US/stylization.xml @@ -0,0 +1,79 @@ + + + + + + + + stylization + This function aims to produce non-photorealistic digital imagery with a wide variety of effects. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + outputImage = stylization(src,sigma_s,sigma_r) + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input 8-bit 3-channel image. + sigma_s: + Range between 0 to 200 (float) (default value is 60) + sigma_r: + Range between 0 to 1. (float) (default value is 0.45f) + + + + + Description + +Edge-aware filters are ideal for stylization, as they can abstract regions of low contrast while preserving, +or enhancing, high-contrast features. + + + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/templateMatcher.xml b/help/en_US/templateMatcher.xml new file mode 100644 index 0000000..4b7e9b9 --- /dev/null +++ b/help/en_US/templateMatcher.xml @@ -0,0 +1,83 @@ + + + + + + + + templateMatcher + This function compares a template in overlapped image regions and returns the coordinates of the point of match. + + + + + Calling Sequence + + [new_image x y] = templateMatcher(image, template_image) + + + + + + Parameters + + image : + 8-bit int or 32-bit floating image + template_image : + Searched template. It must not be greater than the source image and have the same data type of input image. + newimage : + Map of comparison results. It must be single channel 32-bit floating-point. Its size is (W-w+1) * (H-h+1) if image + x: + the row no. of the location where the template matched occured in the input image + y: + x: the column no. of the location where the template matched in the input image + + + + + Description + +The function compares the w * h sized images of the original image against the template image and stores the result in the new_image. +The point of maxima in the image gives the position of the match. + + + + + + + Examples + + + + + Authors + + Suraj Prakash + Rohan Gurve + + + diff --git a/help/en_US/textureFlattening.xml b/help/en_US/textureFlattening.xml new file mode 100644 index 0000000..75a3e37 --- /dev/null +++ b/help/en_US/textureFlattening.xml @@ -0,0 +1,104 @@ + + + + + + + + textureFlattening + This function washes out the texture of the selected region in the input image, giving its contents a flat aspect. + + + + + Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = textureFlattening(src,mask,low_threshold,high_threshold, kernel_size); + + + + + + Parameters + + outputImage: + resultant Output image + src: + Input source image. + mask: + Input mask image with same size as that of source image ( 1 or 3-channel image) + low_threshold: + Range from 0 to 100. (double) (default value is 30) + high_threshold: + Value > 100 & <=255. (double) (default value is 120) + kernel_size: + The size of the Sobel kernel to be used: it can be 3 , 5 or 7 + + + + + Description + +It retain the gradients at edge locations, before integrating with the Poisson solver. It uses Canny Edge Detector. +The algorithm assumes that the color of the source image is close to that of the destination. +This assumption means that when the colors don't match, the source image color gets tinted toward the color of the destination image. + + + + + + + Examples + + + + + Examples + + + + + Authors + + Rohan Gurve + + + diff --git a/help/en_US/watershed.xml b/help/en_US/watershed.xml new file mode 100644 index 0000000..1e43f3c --- /dev/null +++ b/help/en_US/watershed.xml @@ -0,0 +1,90 @@ + + + + + + + + watershed + This function returns a marker based segmented image for the given input image. + + + + + Calling Sequence + + + src = imread("image-location-for-src"); + [dstImg] = watershed(srcImg) //uses distance transform to find the contours + + src = imread("image-location-for-src"); + markerMat = roiFreeHand(src); //using roiFreeHand to roughly mark the contours manually by selecting the ROI + [dstImg] = watershed(srcImg,markerMat) + src = imread("image-location-for-src"); + + + + + + Parameters + + dstImg: + output segmented image + src: + Input source image + markerMat: + a mask image with the the contours marked(region selected) + + + + + Description + +The second calling sequence gives better results.Here the user has to manually select the region of interest using roiFreeHand. +Go through the documentation of roiFreeHand to see how it works. + + + + + + + Examples + + + + + Examples + + + + + Authors + + Tess Zacharias + Ashish Manatosh Barik + Rohan Gurve + + + diff --git a/images/accordion/image_0001.jpg b/images/accordion/image_0001.jpg new file mode 100644 index 0000000..fb0ff1b Binary files /dev/null and b/images/accordion/image_0001.jpg differ diff --git a/images/accordion/image_0002.jpg b/images/accordion/image_0002.jpg new file mode 100644 index 0000000..963f1a2 Binary files /dev/null and b/images/accordion/image_0002.jpg differ diff --git a/images/accordion/image_0003.jpg b/images/accordion/image_0003.jpg new file mode 100644 index 0000000..2c18cf9 Binary files /dev/null and b/images/accordion/image_0003.jpg differ diff --git a/images/accordion/image_0004.jpg b/images/accordion/image_0004.jpg new file mode 100644 index 0000000..7b7ec1c Binary files /dev/null and b/images/accordion/image_0004.jpg differ diff --git a/images/accordion/image_0005.jpg b/images/accordion/image_0005.jpg new file mode 100644 index 0000000..bc4122b Binary files /dev/null and b/images/accordion/image_0005.jpg differ diff --git a/images/accordion/image_0006.jpg b/images/accordion/image_0006.jpg new file mode 100644 index 0000000..991a28b Binary files /dev/null and b/images/accordion/image_0006.jpg differ diff --git a/images/accordion/image_0007.jpg b/images/accordion/image_0007.jpg new file mode 100644 index 0000000..b31bf33 Binary files /dev/null and b/images/accordion/image_0007.jpg differ diff --git a/images/accordion/image_0008.jpg b/images/accordion/image_0008.jpg new file mode 100644 index 0000000..9985ff2 Binary files /dev/null and b/images/accordion/image_0008.jpg differ diff --git a/images/accordion/image_0009.jpg b/images/accordion/image_0009.jpg new file mode 100644 index 0000000..0952c05 Binary files /dev/null and b/images/accordion/image_0009.jpg differ diff --git a/images/accordion/image_0010.jpg b/images/accordion/image_0010.jpg new file mode 100644 index 0000000..71067de Binary files /dev/null and b/images/accordion/image_0010.jpg differ diff --git a/images/accordion/image_0011.jpg b/images/accordion/image_0011.jpg new file mode 100644 index 0000000..d4714a2 Binary files /dev/null and b/images/accordion/image_0011.jpg differ diff --git a/images/accordion/image_0012.jpg b/images/accordion/image_0012.jpg new file mode 100644 index 0000000..41e30f1 Binary files /dev/null and b/images/accordion/image_0012.jpg differ diff --git a/images/accordion/image_0013.jpg b/images/accordion/image_0013.jpg new file mode 100644 index 0000000..771b6f7 Binary files /dev/null and b/images/accordion/image_0013.jpg differ diff --git a/images/accordion/image_0014.jpg b/images/accordion/image_0014.jpg new file mode 100644 index 0000000..bb0e38a Binary files /dev/null and b/images/accordion/image_0014.jpg differ diff --git a/images/accordion/image_0015.jpg b/images/accordion/image_0015.jpg new file mode 100644 index 0000000..5fe081c Binary files /dev/null and b/images/accordion/image_0015.jpg differ diff --git a/images/accordion/image_0016.jpg b/images/accordion/image_0016.jpg new file mode 100644 index 0000000..e0da16c Binary files /dev/null and b/images/accordion/image_0016.jpg differ diff --git a/images/accordion/image_0017.jpg b/images/accordion/image_0017.jpg new file mode 100644 index 0000000..e6ed46a Binary files /dev/null and b/images/accordion/image_0017.jpg differ diff --git a/images/accordion/image_0018.jpg b/images/accordion/image_0018.jpg new file mode 100644 index 0000000..1742411 Binary files /dev/null and b/images/accordion/image_0018.jpg differ diff --git a/images/accordion/image_0019.jpg b/images/accordion/image_0019.jpg new file mode 100644 index 0000000..4c0ea07 Binary files /dev/null and b/images/accordion/image_0019.jpg differ diff --git a/images/accordion/image_0020.jpg b/images/accordion/image_0020.jpg new file mode 100644 index 0000000..17d2503 Binary files /dev/null and b/images/accordion/image_0020.jpg differ diff --git a/images/accordion/image_0021.jpg b/images/accordion/image_0021.jpg new file mode 100644 index 0000000..78170cd Binary files /dev/null and b/images/accordion/image_0021.jpg differ diff --git a/images/accordion/image_0022.jpg b/images/accordion/image_0022.jpg new file mode 100644 index 0000000..f1f4ad5 Binary files /dev/null and b/images/accordion/image_0022.jpg differ diff --git a/images/accordion/image_0023.jpg b/images/accordion/image_0023.jpg new file mode 100644 index 0000000..bc5fce8 Binary files /dev/null and b/images/accordion/image_0023.jpg differ diff --git a/images/accordion/image_0024.jpg b/images/accordion/image_0024.jpg new file mode 100644 index 0000000..fcdb781 Binary files /dev/null and b/images/accordion/image_0024.jpg differ diff --git a/images/accordion/image_0025.jpg b/images/accordion/image_0025.jpg new file mode 100644 index 0000000..40e04a0 Binary files /dev/null and b/images/accordion/image_0025.jpg differ diff --git a/images/accordion/image_0026.jpg b/images/accordion/image_0026.jpg new file mode 100644 index 0000000..ba722be Binary files /dev/null and b/images/accordion/image_0026.jpg differ diff --git a/images/accordion/image_0027.jpg b/images/accordion/image_0027.jpg new file mode 100644 index 0000000..5dbece8 Binary files /dev/null and b/images/accordion/image_0027.jpg differ diff --git a/images/accordion/image_0028.jpg b/images/accordion/image_0028.jpg new file mode 100644 index 0000000..c008c89 Binary files /dev/null and b/images/accordion/image_0028.jpg differ diff --git a/images/accordion/image_0029.jpg b/images/accordion/image_0029.jpg new file mode 100644 index 0000000..b8987d0 Binary files /dev/null and b/images/accordion/image_0029.jpg differ diff --git a/images/accordion/image_0030.jpg b/images/accordion/image_0030.jpg new file mode 100644 index 0000000..8688cf2 Binary files /dev/null and b/images/accordion/image_0030.jpg differ diff --git a/images/accordion/image_0031.jpg b/images/accordion/image_0031.jpg new file mode 100644 index 0000000..db414fc Binary files /dev/null and b/images/accordion/image_0031.jpg differ diff --git a/images/accordion/image_0032.jpg b/images/accordion/image_0032.jpg new file mode 100644 index 0000000..fa3a393 Binary files /dev/null and b/images/accordion/image_0032.jpg differ diff --git a/images/accordion/image_0033.jpg b/images/accordion/image_0033.jpg new file mode 100644 index 0000000..10ef3cf Binary files /dev/null and b/images/accordion/image_0033.jpg differ diff --git a/images/accordion/image_0034.jpg b/images/accordion/image_0034.jpg new file mode 100644 index 0000000..fcb0ac0 Binary files /dev/null and b/images/accordion/image_0034.jpg differ diff --git a/images/accordion/image_0035.jpg b/images/accordion/image_0035.jpg new file mode 100644 index 0000000..799d778 Binary files /dev/null and b/images/accordion/image_0035.jpg differ diff --git a/images/accordion/image_0036.jpg b/images/accordion/image_0036.jpg new file mode 100644 index 0000000..e02fed9 Binary files /dev/null and b/images/accordion/image_0036.jpg differ diff --git a/images/accordion/image_0037.jpg b/images/accordion/image_0037.jpg new file mode 100644 index 0000000..d408301 Binary files /dev/null and b/images/accordion/image_0037.jpg differ diff --git a/images/accordion/image_0038.jpg b/images/accordion/image_0038.jpg new file mode 100644 index 0000000..4c90e5d Binary files /dev/null and b/images/accordion/image_0038.jpg differ diff --git a/images/accordion/image_0039.jpg b/images/accordion/image_0039.jpg new file mode 100644 index 0000000..431fbb4 Binary files /dev/null and b/images/accordion/image_0039.jpg differ diff --git a/images/accordion/image_0040.jpg b/images/accordion/image_0040.jpg new file mode 100644 index 0000000..0de7974 Binary files /dev/null and b/images/accordion/image_0040.jpg differ diff --git a/images/accordion/image_0041.jpg b/images/accordion/image_0041.jpg new file mode 100644 index 0000000..4f4b620 Binary files /dev/null and b/images/accordion/image_0041.jpg differ diff --git a/images/accordion/image_0042.jpg b/images/accordion/image_0042.jpg new file mode 100644 index 0000000..760b5b0 Binary files /dev/null and b/images/accordion/image_0042.jpg differ diff --git a/images/accordion/image_0043.jpg b/images/accordion/image_0043.jpg new file mode 100644 index 0000000..efc0fd8 Binary files /dev/null and b/images/accordion/image_0043.jpg differ diff --git a/images/accordion/image_0044.jpg b/images/accordion/image_0044.jpg new file mode 100644 index 0000000..2d505fb Binary files /dev/null and b/images/accordion/image_0044.jpg differ diff --git a/images/accordion/image_0045.jpg b/images/accordion/image_0045.jpg new file mode 100644 index 0000000..aec728b Binary files /dev/null and b/images/accordion/image_0045.jpg differ diff --git a/images/accordion/image_0046.jpg b/images/accordion/image_0046.jpg new file mode 100644 index 0000000..b01b078 Binary files /dev/null and b/images/accordion/image_0046.jpg differ diff --git a/images/accordion/image_0047.jpg b/images/accordion/image_0047.jpg new file mode 100644 index 0000000..fac0152 Binary files /dev/null and b/images/accordion/image_0047.jpg differ diff --git a/images/accordion/image_0048.jpg b/images/accordion/image_0048.jpg new file mode 100644 index 0000000..f23da56 Binary files /dev/null and b/images/accordion/image_0048.jpg differ diff --git a/images/accordion/image_0049.jpg b/images/accordion/image_0049.jpg new file mode 100644 index 0000000..8fc5656 Binary files /dev/null and b/images/accordion/image_0049.jpg differ diff --git a/images/accordion/image_0050.jpg b/images/accordion/image_0050.jpg new file mode 100644 index 0000000..9b55ed3 Binary files /dev/null and b/images/accordion/image_0050.jpg differ diff --git a/images/accordion/image_0051.jpg b/images/accordion/image_0051.jpg new file mode 100644 index 0000000..0176d10 Binary files /dev/null and b/images/accordion/image_0051.jpg differ diff --git a/images/accordion/image_0052.jpg b/images/accordion/image_0052.jpg new file mode 100644 index 0000000..dee964d Binary files /dev/null and b/images/accordion/image_0052.jpg differ diff --git a/images/accordion/image_0053.jpg b/images/accordion/image_0053.jpg new file mode 100644 index 0000000..addc492 Binary files /dev/null and b/images/accordion/image_0053.jpg differ diff --git a/images/accordion/image_0054.jpg b/images/accordion/image_0054.jpg new file mode 100644 index 0000000..fd62c84 Binary files /dev/null and b/images/accordion/image_0054.jpg differ diff --git a/images/accordion/image_0055.jpg b/images/accordion/image_0055.jpg new file mode 100644 index 0000000..1010007 Binary files /dev/null and b/images/accordion/image_0055.jpg differ diff --git a/images/airplanes/image_0001.jpg b/images/airplanes/image_0001.jpg new file mode 100644 index 0000000..39b7760 Binary files /dev/null and b/images/airplanes/image_0001.jpg differ diff --git a/images/airplanes/image_0002.jpg b/images/airplanes/image_0002.jpg new file mode 100644 index 0000000..c6a1026 Binary files /dev/null and b/images/airplanes/image_0002.jpg differ diff --git a/images/airplanes/image_0003.jpg b/images/airplanes/image_0003.jpg new file mode 100644 index 0000000..2589eaa Binary files /dev/null and b/images/airplanes/image_0003.jpg differ diff --git a/images/airplanes/image_0004.jpg b/images/airplanes/image_0004.jpg new file mode 100644 index 0000000..10aada6 Binary files /dev/null and b/images/airplanes/image_0004.jpg differ diff --git a/images/airplanes/image_0005.jpg b/images/airplanes/image_0005.jpg new file mode 100644 index 0000000..380fac3 Binary files /dev/null and b/images/airplanes/image_0005.jpg differ diff --git a/images/airplanes/image_0006.jpg b/images/airplanes/image_0006.jpg new file mode 100644 index 0000000..ab7bbba Binary files /dev/null and b/images/airplanes/image_0006.jpg differ diff --git a/images/airplanes/image_0007.jpg b/images/airplanes/image_0007.jpg new file mode 100644 index 0000000..fbabcd6 Binary files /dev/null and b/images/airplanes/image_0007.jpg differ diff --git a/images/airplanes/image_0008.jpg b/images/airplanes/image_0008.jpg new file mode 100644 index 0000000..ea7ac84 Binary files /dev/null and b/images/airplanes/image_0008.jpg differ diff --git a/images/airplanes/image_0009.jpg b/images/airplanes/image_0009.jpg new file mode 100644 index 0000000..2d6e5e7 Binary files /dev/null and b/images/airplanes/image_0009.jpg differ diff --git a/images/airplanes/image_0010.jpg b/images/airplanes/image_0010.jpg new file mode 100644 index 0000000..fe8bea2 Binary files /dev/null and b/images/airplanes/image_0010.jpg differ diff --git a/images/airplanes/image_0011.jpg b/images/airplanes/image_0011.jpg new file mode 100644 index 0000000..3710000 Binary files /dev/null and b/images/airplanes/image_0011.jpg differ diff --git a/images/airplanes/image_0012.jpg b/images/airplanes/image_0012.jpg new file mode 100644 index 0000000..9202ec7 Binary files /dev/null and b/images/airplanes/image_0012.jpg differ diff --git a/images/airplanes/image_0013.jpg b/images/airplanes/image_0013.jpg new file mode 100644 index 0000000..d5a0829 Binary files /dev/null and b/images/airplanes/image_0013.jpg differ diff --git a/images/airplanes/image_0014.jpg b/images/airplanes/image_0014.jpg new file mode 100644 index 0000000..16a7d19 Binary files /dev/null and b/images/airplanes/image_0014.jpg differ diff --git a/images/airplanes/image_0015.jpg b/images/airplanes/image_0015.jpg new file mode 100644 index 0000000..63e7380 Binary files /dev/null and b/images/airplanes/image_0015.jpg differ diff --git a/images/airplanes/image_0016.jpg b/images/airplanes/image_0016.jpg new file mode 100644 index 0000000..e3c0d79 Binary files /dev/null and b/images/airplanes/image_0016.jpg differ diff --git a/images/airplanes/image_0017.jpg b/images/airplanes/image_0017.jpg new file mode 100644 index 0000000..d2b906e Binary files /dev/null and b/images/airplanes/image_0017.jpg differ diff --git a/images/airplanes/image_0018.jpg b/images/airplanes/image_0018.jpg new file mode 100644 index 0000000..88c7375 Binary files /dev/null and b/images/airplanes/image_0018.jpg differ diff --git a/images/airplanes/image_0019.jpg b/images/airplanes/image_0019.jpg new file mode 100644 index 0000000..a9a69ec Binary files /dev/null and b/images/airplanes/image_0019.jpg differ diff --git a/images/airplanes/image_0020.jpg b/images/airplanes/image_0020.jpg new file mode 100644 index 0000000..c7f94d3 Binary files /dev/null and b/images/airplanes/image_0020.jpg differ diff --git a/images/airplanes/image_0021.jpg b/images/airplanes/image_0021.jpg new file mode 100644 index 0000000..21e6c5d Binary files /dev/null and b/images/airplanes/image_0021.jpg differ diff --git a/images/airplanes/image_0022.jpg b/images/airplanes/image_0022.jpg new file mode 100644 index 0000000..f9bff19 Binary files /dev/null and b/images/airplanes/image_0022.jpg differ diff --git a/images/airplanes/image_0023.jpg b/images/airplanes/image_0023.jpg new file mode 100644 index 0000000..c4a0823 Binary files /dev/null and b/images/airplanes/image_0023.jpg differ diff --git a/images/airplanes/image_0024.jpg b/images/airplanes/image_0024.jpg new file mode 100644 index 0000000..112768f Binary files /dev/null and b/images/airplanes/image_0024.jpg differ diff --git a/images/airplanes/image_0025.jpg b/images/airplanes/image_0025.jpg new file mode 100644 index 0000000..883bcdd Binary files /dev/null and b/images/airplanes/image_0025.jpg differ diff --git a/images/airplanes/image_0026.jpg b/images/airplanes/image_0026.jpg new file mode 100644 index 0000000..63707f8 Binary files /dev/null and b/images/airplanes/image_0026.jpg differ diff --git a/images/airplanes/image_0027.jpg b/images/airplanes/image_0027.jpg new file mode 100644 index 0000000..ff53034 Binary files /dev/null and b/images/airplanes/image_0027.jpg differ diff --git a/images/airplanes/image_0028.jpg b/images/airplanes/image_0028.jpg new file mode 100644 index 0000000..bedb732 Binary files /dev/null and b/images/airplanes/image_0028.jpg differ diff --git a/images/airplanes/image_0029.jpg b/images/airplanes/image_0029.jpg new file mode 100644 index 0000000..c6f8e44 Binary files /dev/null and b/images/airplanes/image_0029.jpg differ diff --git a/images/airplanes/image_0030.jpg b/images/airplanes/image_0030.jpg new file mode 100644 index 0000000..98557ca Binary files /dev/null and b/images/airplanes/image_0030.jpg differ diff --git a/images/cap.jpeg b/images/cap.jpeg new file mode 100644 index 0000000..9944eb9 Binary files /dev/null and b/images/cap.jpeg differ diff --git a/images/cars.jpg b/images/cars.jpg new file mode 100644 index 0000000..bbcc16e Binary files /dev/null and b/images/cars.jpg differ diff --git a/images/cartoon.jpg b/images/cartoon.jpg new file mode 100644 index 0000000..8f0b767 Binary files /dev/null and b/images/cartoon.jpg differ diff --git a/images/color1.jpg b/images/color1.jpg new file mode 100644 index 0000000..be7af24 Binary files /dev/null and b/images/color1.jpg differ diff --git a/images/color2.jpeg b/images/color2.jpeg new file mode 100644 index 0000000..21d5012 Binary files /dev/null and b/images/color2.jpeg differ diff --git a/images/color3.jpg b/images/color3.jpg new file mode 100644 index 0000000..85bbad1 Binary files /dev/null and b/images/color3.jpg differ diff --git a/images/cow.jpg b/images/cow.jpg new file mode 100644 index 0000000..21ce1ad Binary files /dev/null and b/images/cow.jpg differ diff --git a/images/cow2.jpg b/images/cow2.jpg new file mode 100644 index 0000000..039ab11 Binary files /dev/null and b/images/cow2.jpg differ diff --git a/images/face.png b/images/face.png new file mode 100644 index 0000000..948091a Binary files /dev/null and b/images/face.png differ diff --git a/images/ghost.jpg b/images/ghost.jpg new file mode 100644 index 0000000..8152ff1 Binary files /dev/null and b/images/ghost.jpg differ diff --git a/images/glass.jpg b/images/glass.jpg new file mode 100644 index 0000000..18b3684 Binary files /dev/null and b/images/glass.jpg differ diff --git a/images/group.jpg b/images/group.jpg new file mode 100644 index 0000000..003d663 Binary files /dev/null and b/images/group.jpg differ diff --git a/images/gs1.jpg b/images/gs1.jpg new file mode 100644 index 0000000..d2d915d Binary files /dev/null and b/images/gs1.jpg differ diff --git a/images/gs2.bmp b/images/gs2.bmp new file mode 100644 index 0000000..1fd4d82 Binary files /dev/null and b/images/gs2.bmp differ diff --git a/images/image_0197.jpg b/images/image_0197.jpg new file mode 100644 index 0000000..d6f024a Binary files /dev/null and b/images/image_0197.jpg differ diff --git a/images/img_folder/accordion/image_0001.jpg b/images/img_folder/accordion/image_0001.jpg new file mode 100644 index 0000000..fb0ff1b Binary files /dev/null and b/images/img_folder/accordion/image_0001.jpg differ diff --git a/images/img_folder/accordion/image_0002.jpg b/images/img_folder/accordion/image_0002.jpg new file mode 100644 index 0000000..963f1a2 Binary files /dev/null and b/images/img_folder/accordion/image_0002.jpg differ diff --git a/images/img_folder/accordion/image_0003.jpg b/images/img_folder/accordion/image_0003.jpg new file mode 100644 index 0000000..2c18cf9 Binary files /dev/null and b/images/img_folder/accordion/image_0003.jpg differ diff --git a/images/img_folder/accordion/image_0004.jpg b/images/img_folder/accordion/image_0004.jpg new file mode 100644 index 0000000..7b7ec1c Binary files /dev/null and b/images/img_folder/accordion/image_0004.jpg differ diff --git a/images/img_folder/accordion/image_0005.jpg b/images/img_folder/accordion/image_0005.jpg new file mode 100644 index 0000000..bc4122b Binary files /dev/null and b/images/img_folder/accordion/image_0005.jpg differ diff --git a/images/img_folder/accordion/image_0006.jpg b/images/img_folder/accordion/image_0006.jpg new file mode 100644 index 0000000..991a28b Binary files /dev/null and b/images/img_folder/accordion/image_0006.jpg differ diff --git a/images/img_folder/accordion/image_0007.jpg b/images/img_folder/accordion/image_0007.jpg new file mode 100644 index 0000000..b31bf33 Binary files /dev/null and b/images/img_folder/accordion/image_0007.jpg differ diff --git a/images/img_folder/accordion/image_0008.jpg b/images/img_folder/accordion/image_0008.jpg new file mode 100644 index 0000000..9985ff2 Binary files /dev/null and b/images/img_folder/accordion/image_0008.jpg differ diff --git a/images/img_folder/accordion/image_0009.jpg b/images/img_folder/accordion/image_0009.jpg new file mode 100644 index 0000000..0952c05 Binary files /dev/null and b/images/img_folder/accordion/image_0009.jpg differ diff --git a/images/img_folder/accordion/image_0010.jpg b/images/img_folder/accordion/image_0010.jpg new file mode 100644 index 0000000..71067de Binary files /dev/null and b/images/img_folder/accordion/image_0010.jpg differ diff --git a/images/img_folder/accordion/image_0011.jpg b/images/img_folder/accordion/image_0011.jpg new file mode 100644 index 0000000..d4714a2 Binary files /dev/null and b/images/img_folder/accordion/image_0011.jpg differ diff --git a/images/img_folder/accordion/image_0012.jpg b/images/img_folder/accordion/image_0012.jpg new file mode 100644 index 0000000..41e30f1 Binary files /dev/null and b/images/img_folder/accordion/image_0012.jpg differ diff --git a/images/img_folder/accordion/image_0013.jpg b/images/img_folder/accordion/image_0013.jpg new file mode 100644 index 0000000..771b6f7 Binary files /dev/null and b/images/img_folder/accordion/image_0013.jpg differ diff --git a/images/img_folder/accordion/image_0014.jpg b/images/img_folder/accordion/image_0014.jpg new file mode 100644 index 0000000..bb0e38a Binary files /dev/null and b/images/img_folder/accordion/image_0014.jpg differ diff --git a/images/img_folder/accordion/image_0015.jpg b/images/img_folder/accordion/image_0015.jpg new file mode 100644 index 0000000..5fe081c Binary files /dev/null and b/images/img_folder/accordion/image_0015.jpg differ diff --git a/images/img_folder/accordion/image_0016.jpg b/images/img_folder/accordion/image_0016.jpg new file mode 100644 index 0000000..e0da16c Binary files /dev/null and b/images/img_folder/accordion/image_0016.jpg differ diff --git a/images/img_folder/accordion/image_0017.jpg b/images/img_folder/accordion/image_0017.jpg new file mode 100644 index 0000000..e6ed46a Binary files /dev/null and b/images/img_folder/accordion/image_0017.jpg differ diff --git a/images/img_folder/accordion/image_0018.jpg b/images/img_folder/accordion/image_0018.jpg new file mode 100644 index 0000000..1742411 Binary files /dev/null and b/images/img_folder/accordion/image_0018.jpg differ diff --git a/images/img_folder/accordion/image_0019.jpg b/images/img_folder/accordion/image_0019.jpg new file mode 100644 index 0000000..4c0ea07 Binary files /dev/null and b/images/img_folder/accordion/image_0019.jpg differ diff --git a/images/img_folder/accordion/image_0020.jpg b/images/img_folder/accordion/image_0020.jpg new file mode 100644 index 0000000..17d2503 Binary files /dev/null and b/images/img_folder/accordion/image_0020.jpg differ diff --git a/images/img_folder/accordion/image_0021.jpg b/images/img_folder/accordion/image_0021.jpg new file mode 100644 index 0000000..78170cd Binary files /dev/null and b/images/img_folder/accordion/image_0021.jpg differ diff --git a/images/img_folder/accordion/image_0022.jpg b/images/img_folder/accordion/image_0022.jpg new file mode 100644 index 0000000..f1f4ad5 Binary files /dev/null and b/images/img_folder/accordion/image_0022.jpg differ diff --git a/images/img_folder/accordion/image_0023.jpg b/images/img_folder/accordion/image_0023.jpg new file mode 100644 index 0000000..bc5fce8 Binary files /dev/null and b/images/img_folder/accordion/image_0023.jpg differ diff --git a/images/img_folder/accordion/image_0024.jpg b/images/img_folder/accordion/image_0024.jpg new file mode 100644 index 0000000..fcdb781 Binary files /dev/null and b/images/img_folder/accordion/image_0024.jpg differ diff --git a/images/img_folder/accordion/image_0025.jpg b/images/img_folder/accordion/image_0025.jpg new file mode 100644 index 0000000..40e04a0 Binary files /dev/null and b/images/img_folder/accordion/image_0025.jpg differ diff --git a/images/img_folder/accordion/image_0026.jpg b/images/img_folder/accordion/image_0026.jpg new file mode 100644 index 0000000..ba722be Binary files /dev/null and b/images/img_folder/accordion/image_0026.jpg differ diff --git a/images/img_folder/accordion/image_0027.jpg b/images/img_folder/accordion/image_0027.jpg new file mode 100644 index 0000000..5dbece8 Binary files /dev/null and b/images/img_folder/accordion/image_0027.jpg differ diff --git a/images/img_folder/accordion/image_0028.jpg b/images/img_folder/accordion/image_0028.jpg new file mode 100644 index 0000000..c008c89 Binary files /dev/null and b/images/img_folder/accordion/image_0028.jpg differ diff --git a/images/img_folder/accordion/image_0029.jpg b/images/img_folder/accordion/image_0029.jpg new file mode 100644 index 0000000..b8987d0 Binary files /dev/null and b/images/img_folder/accordion/image_0029.jpg differ diff --git a/images/img_folder/accordion/image_0030.jpg b/images/img_folder/accordion/image_0030.jpg new file mode 100644 index 0000000..8688cf2 Binary files /dev/null and b/images/img_folder/accordion/image_0030.jpg differ diff --git a/images/img_folder/accordion/image_0031.jpg b/images/img_folder/accordion/image_0031.jpg new file mode 100644 index 0000000..db414fc Binary files /dev/null and b/images/img_folder/accordion/image_0031.jpg differ diff --git a/images/img_folder/accordion/image_0032.jpg b/images/img_folder/accordion/image_0032.jpg new file mode 100644 index 0000000..fa3a393 Binary files /dev/null and b/images/img_folder/accordion/image_0032.jpg differ diff --git a/images/img_folder/accordion/image_0033.jpg b/images/img_folder/accordion/image_0033.jpg new file mode 100644 index 0000000..10ef3cf Binary files /dev/null and b/images/img_folder/accordion/image_0033.jpg differ diff --git a/images/img_folder/accordion/image_0034.jpg b/images/img_folder/accordion/image_0034.jpg new file mode 100644 index 0000000..fcb0ac0 Binary files /dev/null and b/images/img_folder/accordion/image_0034.jpg differ diff --git a/images/img_folder/accordion/image_0035.jpg b/images/img_folder/accordion/image_0035.jpg new file mode 100644 index 0000000..799d778 Binary files /dev/null and b/images/img_folder/accordion/image_0035.jpg differ diff --git a/images/img_folder/accordion/image_0036.jpg b/images/img_folder/accordion/image_0036.jpg new file mode 100644 index 0000000..e02fed9 Binary files /dev/null and b/images/img_folder/accordion/image_0036.jpg differ diff --git a/images/img_folder/accordion/image_0037.jpg b/images/img_folder/accordion/image_0037.jpg new file mode 100644 index 0000000..d408301 Binary files /dev/null and b/images/img_folder/accordion/image_0037.jpg differ diff --git a/images/img_folder/accordion/image_0038.jpg b/images/img_folder/accordion/image_0038.jpg new file mode 100644 index 0000000..4c90e5d Binary files /dev/null and b/images/img_folder/accordion/image_0038.jpg differ diff --git a/images/img_folder/accordion/image_0039.jpg b/images/img_folder/accordion/image_0039.jpg new file mode 100644 index 0000000..431fbb4 Binary files /dev/null and b/images/img_folder/accordion/image_0039.jpg differ diff --git a/images/img_folder/accordion/image_0040.jpg b/images/img_folder/accordion/image_0040.jpg new file mode 100644 index 0000000..0de7974 Binary files /dev/null and b/images/img_folder/accordion/image_0040.jpg differ diff --git a/images/img_folder/accordion/image_0041.jpg b/images/img_folder/accordion/image_0041.jpg new file mode 100644 index 0000000..4f4b620 Binary files /dev/null and b/images/img_folder/accordion/image_0041.jpg differ diff --git a/images/img_folder/accordion/image_0042.jpg b/images/img_folder/accordion/image_0042.jpg new file mode 100644 index 0000000..760b5b0 Binary files /dev/null and b/images/img_folder/accordion/image_0042.jpg differ diff --git a/images/img_folder/accordion/image_0043.jpg b/images/img_folder/accordion/image_0043.jpg new file mode 100644 index 0000000..efc0fd8 Binary files /dev/null and b/images/img_folder/accordion/image_0043.jpg differ diff --git a/images/img_folder/accordion/image_0044.jpg b/images/img_folder/accordion/image_0044.jpg new file mode 100644 index 0000000..2d505fb Binary files /dev/null and b/images/img_folder/accordion/image_0044.jpg differ diff --git a/images/img_folder/accordion/image_0045.jpg b/images/img_folder/accordion/image_0045.jpg new file mode 100644 index 0000000..aec728b Binary files /dev/null and b/images/img_folder/accordion/image_0045.jpg differ diff --git a/images/img_folder/accordion/image_0046.jpg b/images/img_folder/accordion/image_0046.jpg new file mode 100644 index 0000000..b01b078 Binary files /dev/null and b/images/img_folder/accordion/image_0046.jpg differ diff --git a/images/img_folder/accordion/image_0047.jpg b/images/img_folder/accordion/image_0047.jpg new file mode 100644 index 0000000..fac0152 Binary files /dev/null and b/images/img_folder/accordion/image_0047.jpg differ diff --git a/images/img_folder/accordion/image_0048.jpg b/images/img_folder/accordion/image_0048.jpg new file mode 100644 index 0000000..f23da56 Binary files /dev/null and b/images/img_folder/accordion/image_0048.jpg differ diff --git a/images/img_folder/accordion/image_0049.jpg b/images/img_folder/accordion/image_0049.jpg new file mode 100644 index 0000000..8fc5656 Binary files /dev/null and b/images/img_folder/accordion/image_0049.jpg differ diff --git a/images/img_folder/accordion/image_0050.jpg b/images/img_folder/accordion/image_0050.jpg new file mode 100644 index 0000000..9b55ed3 Binary files /dev/null and b/images/img_folder/accordion/image_0050.jpg differ diff --git a/images/img_folder/accordion/image_0051.jpg b/images/img_folder/accordion/image_0051.jpg new file mode 100644 index 0000000..0176d10 Binary files /dev/null and b/images/img_folder/accordion/image_0051.jpg differ diff --git a/images/img_folder/accordion/image_0052.jpg b/images/img_folder/accordion/image_0052.jpg new file mode 100644 index 0000000..dee964d Binary files /dev/null and b/images/img_folder/accordion/image_0052.jpg differ diff --git a/images/img_folder/accordion/image_0053.jpg b/images/img_folder/accordion/image_0053.jpg new file mode 100644 index 0000000..addc492 Binary files /dev/null and b/images/img_folder/accordion/image_0053.jpg differ diff --git a/images/img_folder/accordion/image_0054.jpg b/images/img_folder/accordion/image_0054.jpg new file mode 100644 index 0000000..fd62c84 Binary files /dev/null and b/images/img_folder/accordion/image_0054.jpg differ diff --git a/images/img_folder/accordion/image_0055.jpg b/images/img_folder/accordion/image_0055.jpg new file mode 100644 index 0000000..1010007 Binary files /dev/null and b/images/img_folder/accordion/image_0055.jpg differ diff --git a/images/img_folder/airplanes/image_0001.jpg b/images/img_folder/airplanes/image_0001.jpg new file mode 100644 index 0000000..39b7760 Binary files /dev/null and b/images/img_folder/airplanes/image_0001.jpg differ diff --git a/images/img_folder/airplanes/image_0002.jpg b/images/img_folder/airplanes/image_0002.jpg new file mode 100644 index 0000000..c6a1026 Binary files /dev/null and b/images/img_folder/airplanes/image_0002.jpg differ diff --git a/images/img_folder/airplanes/image_0003.jpg b/images/img_folder/airplanes/image_0003.jpg new file mode 100644 index 0000000..2589eaa Binary files /dev/null and b/images/img_folder/airplanes/image_0003.jpg differ diff --git a/images/img_folder/airplanes/image_0004.jpg b/images/img_folder/airplanes/image_0004.jpg new file mode 100644 index 0000000..10aada6 Binary files /dev/null and b/images/img_folder/airplanes/image_0004.jpg differ diff --git a/images/img_folder/airplanes/image_0005.jpg b/images/img_folder/airplanes/image_0005.jpg new file mode 100644 index 0000000..380fac3 Binary files /dev/null and b/images/img_folder/airplanes/image_0005.jpg differ diff --git a/images/img_folder/airplanes/image_0006.jpg b/images/img_folder/airplanes/image_0006.jpg new file mode 100644 index 0000000..ab7bbba Binary files /dev/null and b/images/img_folder/airplanes/image_0006.jpg differ diff --git a/images/img_folder/airplanes/image_0007.jpg b/images/img_folder/airplanes/image_0007.jpg new file mode 100644 index 0000000..fbabcd6 Binary files /dev/null and b/images/img_folder/airplanes/image_0007.jpg differ diff --git a/images/img_folder/airplanes/image_0008.jpg b/images/img_folder/airplanes/image_0008.jpg new file mode 100644 index 0000000..ea7ac84 Binary files /dev/null and b/images/img_folder/airplanes/image_0008.jpg differ diff --git a/images/img_folder/airplanes/image_0009.jpg b/images/img_folder/airplanes/image_0009.jpg new file mode 100644 index 0000000..2d6e5e7 Binary files /dev/null and b/images/img_folder/airplanes/image_0009.jpg differ diff --git a/images/img_folder/airplanes/image_0010.jpg b/images/img_folder/airplanes/image_0010.jpg new file mode 100644 index 0000000..fe8bea2 Binary files /dev/null and b/images/img_folder/airplanes/image_0010.jpg differ diff --git a/images/img_folder/airplanes/image_0011.jpg b/images/img_folder/airplanes/image_0011.jpg new file mode 100644 index 0000000..3710000 Binary files /dev/null and b/images/img_folder/airplanes/image_0011.jpg differ diff --git a/images/img_folder/airplanes/image_0012.jpg b/images/img_folder/airplanes/image_0012.jpg new file mode 100644 index 0000000..9202ec7 Binary files /dev/null and b/images/img_folder/airplanes/image_0012.jpg differ diff --git a/images/img_folder/airplanes/image_0013.jpg b/images/img_folder/airplanes/image_0013.jpg new file mode 100644 index 0000000..d5a0829 Binary files /dev/null and b/images/img_folder/airplanes/image_0013.jpg differ diff --git a/images/img_folder/airplanes/image_0014.jpg b/images/img_folder/airplanes/image_0014.jpg new file mode 100644 index 0000000..16a7d19 Binary files /dev/null and b/images/img_folder/airplanes/image_0014.jpg differ diff --git a/images/img_folder/airplanes/image_0015.jpg b/images/img_folder/airplanes/image_0015.jpg new file mode 100644 index 0000000..63e7380 Binary files /dev/null and b/images/img_folder/airplanes/image_0015.jpg differ diff --git a/images/img_folder/airplanes/image_0016.jpg b/images/img_folder/airplanes/image_0016.jpg new file mode 100644 index 0000000..e3c0d79 Binary files /dev/null and b/images/img_folder/airplanes/image_0016.jpg differ diff --git a/images/img_folder/airplanes/image_0017.jpg b/images/img_folder/airplanes/image_0017.jpg new file mode 100644 index 0000000..d2b906e Binary files /dev/null and b/images/img_folder/airplanes/image_0017.jpg differ diff --git a/images/img_folder/airplanes/image_0018.jpg b/images/img_folder/airplanes/image_0018.jpg new file mode 100644 index 0000000..88c7375 Binary files /dev/null and b/images/img_folder/airplanes/image_0018.jpg differ diff --git a/images/img_folder/airplanes/image_0019.jpg b/images/img_folder/airplanes/image_0019.jpg new file mode 100644 index 0000000..a9a69ec Binary files /dev/null and b/images/img_folder/airplanes/image_0019.jpg differ diff --git a/images/img_folder/airplanes/image_0020.jpg b/images/img_folder/airplanes/image_0020.jpg new file mode 100644 index 0000000..c7f94d3 Binary files /dev/null and b/images/img_folder/airplanes/image_0020.jpg differ diff --git a/images/img_folder/airplanes/image_0021.jpg b/images/img_folder/airplanes/image_0021.jpg new file mode 100644 index 0000000..21e6c5d Binary files /dev/null and b/images/img_folder/airplanes/image_0021.jpg differ diff --git a/images/img_folder/airplanes/image_0022.jpg b/images/img_folder/airplanes/image_0022.jpg new file mode 100644 index 0000000..f9bff19 Binary files /dev/null and b/images/img_folder/airplanes/image_0022.jpg differ diff --git a/images/img_folder/airplanes/image_0023.jpg b/images/img_folder/airplanes/image_0023.jpg new file mode 100644 index 0000000..c4a0823 Binary files /dev/null and b/images/img_folder/airplanes/image_0023.jpg differ diff --git a/images/img_folder/airplanes/image_0024.jpg b/images/img_folder/airplanes/image_0024.jpg new file mode 100644 index 0000000..112768f Binary files /dev/null and b/images/img_folder/airplanes/image_0024.jpg differ diff --git a/images/img_folder/airplanes/image_0025.jpg b/images/img_folder/airplanes/image_0025.jpg new file mode 100644 index 0000000..883bcdd Binary files /dev/null and b/images/img_folder/airplanes/image_0025.jpg differ diff --git a/images/img_folder/airplanes/image_0026.jpg b/images/img_folder/airplanes/image_0026.jpg new file mode 100644 index 0000000..63707f8 Binary files /dev/null and b/images/img_folder/airplanes/image_0026.jpg differ diff --git a/images/img_folder/airplanes/image_0027.jpg b/images/img_folder/airplanes/image_0027.jpg new file mode 100644 index 0000000..ff53034 Binary files /dev/null and b/images/img_folder/airplanes/image_0027.jpg differ diff --git a/images/img_folder/airplanes/image_0028.jpg b/images/img_folder/airplanes/image_0028.jpg new file mode 100644 index 0000000..bedb732 Binary files /dev/null and b/images/img_folder/airplanes/image_0028.jpg differ diff --git a/images/img_folder/airplanes/image_0029.jpg b/images/img_folder/airplanes/image_0029.jpg new file mode 100644 index 0000000..c6f8e44 Binary files /dev/null and b/images/img_folder/airplanes/image_0029.jpg differ diff --git a/images/img_folder/airplanes/image_0030.jpg b/images/img_folder/airplanes/image_0030.jpg new file mode 100644 index 0000000..98557ca Binary files /dev/null and b/images/img_folder/airplanes/image_0030.jpg differ diff --git a/images/img_folder/airplanes/image_0031.jpg b/images/img_folder/airplanes/image_0031.jpg new file mode 100644 index 0000000..4fb9f59 Binary files /dev/null and b/images/img_folder/airplanes/image_0031.jpg differ diff --git a/images/img_folder/airplanes/image_0032.jpg b/images/img_folder/airplanes/image_0032.jpg new file mode 100644 index 0000000..0f580e4 Binary files /dev/null and b/images/img_folder/airplanes/image_0032.jpg differ diff --git a/images/img_folder/airplanes/image_0033.jpg b/images/img_folder/airplanes/image_0033.jpg new file mode 100644 index 0000000..24b5675 Binary files /dev/null and b/images/img_folder/airplanes/image_0033.jpg differ diff --git a/images/img_folder/airplanes/image_0034.jpg b/images/img_folder/airplanes/image_0034.jpg new file mode 100644 index 0000000..4f443f0 Binary files /dev/null and b/images/img_folder/airplanes/image_0034.jpg differ diff --git a/images/img_folder/airplanes/image_0035.jpg b/images/img_folder/airplanes/image_0035.jpg new file mode 100644 index 0000000..64d345b Binary files /dev/null and b/images/img_folder/airplanes/image_0035.jpg differ diff --git a/images/img_folder/airplanes/image_0036.jpg b/images/img_folder/airplanes/image_0036.jpg new file mode 100644 index 0000000..c4fdb19 Binary files /dev/null and b/images/img_folder/airplanes/image_0036.jpg differ diff --git a/images/img_folder/airplanes/image_0037.jpg b/images/img_folder/airplanes/image_0037.jpg new file mode 100644 index 0000000..614ea64 Binary files /dev/null and b/images/img_folder/airplanes/image_0037.jpg differ diff --git a/images/img_folder/airplanes/image_0038.jpg b/images/img_folder/airplanes/image_0038.jpg new file mode 100644 index 0000000..d4b3a6a Binary files /dev/null and b/images/img_folder/airplanes/image_0038.jpg differ diff --git a/images/img_folder/airplanes/image_0039.jpg b/images/img_folder/airplanes/image_0039.jpg new file mode 100644 index 0000000..60d1c12 Binary files /dev/null and b/images/img_folder/airplanes/image_0039.jpg differ diff --git a/images/img_folder/airplanes/image_0040.jpg b/images/img_folder/airplanes/image_0040.jpg new file mode 100644 index 0000000..aeb4c71 Binary files /dev/null and b/images/img_folder/airplanes/image_0040.jpg differ diff --git a/images/img_folder/airplanes/image_0041.jpg b/images/img_folder/airplanes/image_0041.jpg new file mode 100644 index 0000000..2404d1d Binary files /dev/null and b/images/img_folder/airplanes/image_0041.jpg differ diff --git a/images/img_folder/airplanes/image_0042.jpg b/images/img_folder/airplanes/image_0042.jpg new file mode 100644 index 0000000..a1baab4 Binary files /dev/null and b/images/img_folder/airplanes/image_0042.jpg differ diff --git a/images/img_folder/airplanes/image_0043.jpg b/images/img_folder/airplanes/image_0043.jpg new file mode 100644 index 0000000..d6ede7a Binary files /dev/null and b/images/img_folder/airplanes/image_0043.jpg differ diff --git a/images/img_folder/airplanes/image_0044.jpg b/images/img_folder/airplanes/image_0044.jpg new file mode 100644 index 0000000..5b06cbc Binary files /dev/null and b/images/img_folder/airplanes/image_0044.jpg differ diff --git a/images/img_folder/airplanes/image_0045.jpg b/images/img_folder/airplanes/image_0045.jpg new file mode 100644 index 0000000..6138823 Binary files /dev/null and b/images/img_folder/airplanes/image_0045.jpg differ diff --git a/images/img_folder/airplanes/image_0046.jpg b/images/img_folder/airplanes/image_0046.jpg new file mode 100644 index 0000000..119d8db Binary files /dev/null and b/images/img_folder/airplanes/image_0046.jpg differ diff --git a/images/img_folder/airplanes/image_0047.jpg b/images/img_folder/airplanes/image_0047.jpg new file mode 100644 index 0000000..87b9e76 Binary files /dev/null and b/images/img_folder/airplanes/image_0047.jpg differ diff --git a/images/img_folder/airplanes/image_0048.jpg b/images/img_folder/airplanes/image_0048.jpg new file mode 100644 index 0000000..a49474f Binary files /dev/null and b/images/img_folder/airplanes/image_0048.jpg differ diff --git a/images/img_folder/airplanes/image_0049.jpg b/images/img_folder/airplanes/image_0049.jpg new file mode 100644 index 0000000..728d3da Binary files /dev/null and b/images/img_folder/airplanes/image_0049.jpg differ diff --git a/images/img_folder/airplanes/image_0050.jpg b/images/img_folder/airplanes/image_0050.jpg new file mode 100644 index 0000000..f304f4f Binary files /dev/null and b/images/img_folder/airplanes/image_0050.jpg differ diff --git a/images/img_folder/airplanes/image_0051.jpg b/images/img_folder/airplanes/image_0051.jpg new file mode 100644 index 0000000..7b6d87d Binary files /dev/null and b/images/img_folder/airplanes/image_0051.jpg differ diff --git a/images/img_folder/airplanes/image_0052.jpg b/images/img_folder/airplanes/image_0052.jpg new file mode 100644 index 0000000..941288b Binary files /dev/null and b/images/img_folder/airplanes/image_0052.jpg differ diff --git a/images/img_folder/airplanes/image_0053.jpg b/images/img_folder/airplanes/image_0053.jpg new file mode 100644 index 0000000..46a0e31 Binary files /dev/null and b/images/img_folder/airplanes/image_0053.jpg differ diff --git a/images/img_folder/airplanes/image_0054.jpg b/images/img_folder/airplanes/image_0054.jpg new file mode 100644 index 0000000..8e3a6e5 Binary files /dev/null and b/images/img_folder/airplanes/image_0054.jpg differ diff --git a/images/img_folder/airplanes/image_0055.jpg b/images/img_folder/airplanes/image_0055.jpg new file mode 100644 index 0000000..3d49eca Binary files /dev/null and b/images/img_folder/airplanes/image_0055.jpg differ diff --git a/images/img_folder/airplanes/image_0056.jpg b/images/img_folder/airplanes/image_0056.jpg new file mode 100644 index 0000000..22d7f87 Binary files /dev/null and b/images/img_folder/airplanes/image_0056.jpg differ diff --git a/images/img_folder/airplanes/image_0057.jpg b/images/img_folder/airplanes/image_0057.jpg new file mode 100644 index 0000000..2565c8e Binary files /dev/null and b/images/img_folder/airplanes/image_0057.jpg differ diff --git a/images/img_folder/airplanes/image_0058.jpg b/images/img_folder/airplanes/image_0058.jpg new file mode 100644 index 0000000..434d457 Binary files /dev/null and b/images/img_folder/airplanes/image_0058.jpg differ diff --git a/images/img_folder/airplanes/image_0059.jpg b/images/img_folder/airplanes/image_0059.jpg new file mode 100644 index 0000000..5c5b594 Binary files /dev/null and b/images/img_folder/airplanes/image_0059.jpg differ diff --git a/images/img_folder/airplanes/image_0060.jpg b/images/img_folder/airplanes/image_0060.jpg new file mode 100644 index 0000000..3866e85 Binary files /dev/null and b/images/img_folder/airplanes/image_0060.jpg differ diff --git a/images/img_folder/airplanes/image_0061.jpg b/images/img_folder/airplanes/image_0061.jpg new file mode 100644 index 0000000..1100f78 Binary files /dev/null and b/images/img_folder/airplanes/image_0061.jpg differ diff --git a/images/img_folder/airplanes/image_0062.jpg b/images/img_folder/airplanes/image_0062.jpg new file mode 100644 index 0000000..3a0302b Binary files /dev/null and b/images/img_folder/airplanes/image_0062.jpg differ diff --git a/images/img_folder/airplanes/image_0063.jpg b/images/img_folder/airplanes/image_0063.jpg new file mode 100644 index 0000000..64cc9eb Binary files /dev/null and b/images/img_folder/airplanes/image_0063.jpg differ diff --git a/images/img_folder/airplanes/image_0064.jpg b/images/img_folder/airplanes/image_0064.jpg new file mode 100644 index 0000000..19d62c1 Binary files /dev/null and b/images/img_folder/airplanes/image_0064.jpg differ diff --git a/images/img_folder/airplanes/image_0065.jpg b/images/img_folder/airplanes/image_0065.jpg new file mode 100644 index 0000000..0f1d4a6 Binary files /dev/null and b/images/img_folder/airplanes/image_0065.jpg differ diff --git a/images/img_folder/airplanes/image_0066.jpg b/images/img_folder/airplanes/image_0066.jpg new file mode 100644 index 0000000..2b46d7c Binary files /dev/null and b/images/img_folder/airplanes/image_0066.jpg differ diff --git a/images/img_folder/airplanes/image_0067.jpg b/images/img_folder/airplanes/image_0067.jpg new file mode 100644 index 0000000..7804dc9 Binary files /dev/null and b/images/img_folder/airplanes/image_0067.jpg differ diff --git a/images/img_folder/airplanes/image_0068.jpg b/images/img_folder/airplanes/image_0068.jpg new file mode 100644 index 0000000..2efa095 Binary files /dev/null and b/images/img_folder/airplanes/image_0068.jpg differ diff --git a/images/img_folder/airplanes/image_0069.jpg b/images/img_folder/airplanes/image_0069.jpg new file mode 100644 index 0000000..947bd95 Binary files /dev/null and b/images/img_folder/airplanes/image_0069.jpg differ diff --git a/images/img_folder/airplanes/image_0070.jpg b/images/img_folder/airplanes/image_0070.jpg new file mode 100644 index 0000000..073c42d Binary files /dev/null and b/images/img_folder/airplanes/image_0070.jpg differ diff --git a/images/img_folder/airplanes/image_0071.jpg b/images/img_folder/airplanes/image_0071.jpg new file mode 100644 index 0000000..574832b Binary files /dev/null and b/images/img_folder/airplanes/image_0071.jpg differ diff --git a/images/img_folder/airplanes/image_0072.jpg b/images/img_folder/airplanes/image_0072.jpg new file mode 100644 index 0000000..98f4ca9 Binary files /dev/null and b/images/img_folder/airplanes/image_0072.jpg differ diff --git a/images/img_folder/airplanes/image_0073.jpg b/images/img_folder/airplanes/image_0073.jpg new file mode 100644 index 0000000..2782d8c Binary files /dev/null and b/images/img_folder/airplanes/image_0073.jpg differ diff --git a/images/img_folder/airplanes/image_0074.jpg b/images/img_folder/airplanes/image_0074.jpg new file mode 100644 index 0000000..8937cd5 Binary files /dev/null and b/images/img_folder/airplanes/image_0074.jpg differ diff --git a/images/img_folder/airplanes/image_0075.jpg b/images/img_folder/airplanes/image_0075.jpg new file mode 100644 index 0000000..061f42e Binary files /dev/null and b/images/img_folder/airplanes/image_0075.jpg differ diff --git a/images/img_folder/airplanes/image_0076.jpg b/images/img_folder/airplanes/image_0076.jpg new file mode 100644 index 0000000..44df99a Binary files /dev/null and b/images/img_folder/airplanes/image_0076.jpg differ diff --git a/images/img_folder/airplanes/image_0077.jpg b/images/img_folder/airplanes/image_0077.jpg new file mode 100644 index 0000000..a0beaad Binary files /dev/null and b/images/img_folder/airplanes/image_0077.jpg differ diff --git a/images/img_folder/airplanes/image_0078.jpg b/images/img_folder/airplanes/image_0078.jpg new file mode 100644 index 0000000..2a13621 Binary files /dev/null and b/images/img_folder/airplanes/image_0078.jpg differ diff --git a/images/img_folder/airplanes/image_0079.jpg b/images/img_folder/airplanes/image_0079.jpg new file mode 100644 index 0000000..15d1ac7 Binary files /dev/null and b/images/img_folder/airplanes/image_0079.jpg differ diff --git a/images/img_folder/airplanes/image_0080.jpg b/images/img_folder/airplanes/image_0080.jpg new file mode 100644 index 0000000..5fc24f0 Binary files /dev/null and b/images/img_folder/airplanes/image_0080.jpg differ diff --git a/images/img_folder/airplanes/image_0081.jpg b/images/img_folder/airplanes/image_0081.jpg new file mode 100644 index 0000000..56c0deb Binary files /dev/null and b/images/img_folder/airplanes/image_0081.jpg differ diff --git a/images/img_folder/airplanes/image_0082.jpg b/images/img_folder/airplanes/image_0082.jpg new file mode 100644 index 0000000..be7d48d Binary files /dev/null and b/images/img_folder/airplanes/image_0082.jpg differ diff --git a/images/img_folder/airplanes/image_0083.jpg b/images/img_folder/airplanes/image_0083.jpg new file mode 100644 index 0000000..d05335a Binary files /dev/null and b/images/img_folder/airplanes/image_0083.jpg differ diff --git a/images/img_folder/airplanes/image_0084.jpg b/images/img_folder/airplanes/image_0084.jpg new file mode 100644 index 0000000..f17060f Binary files /dev/null and b/images/img_folder/airplanes/image_0084.jpg differ diff --git a/images/img_folder/airplanes/image_0085.jpg b/images/img_folder/airplanes/image_0085.jpg new file mode 100644 index 0000000..3f1c6b8 Binary files /dev/null and b/images/img_folder/airplanes/image_0085.jpg differ diff --git a/images/img_folder/airplanes/image_0086.jpg b/images/img_folder/airplanes/image_0086.jpg new file mode 100644 index 0000000..8af8167 Binary files /dev/null and b/images/img_folder/airplanes/image_0086.jpg differ diff --git a/images/img_folder/airplanes/image_0087.jpg b/images/img_folder/airplanes/image_0087.jpg new file mode 100644 index 0000000..540b52b Binary files /dev/null and b/images/img_folder/airplanes/image_0087.jpg differ diff --git a/images/img_folder/airplanes/image_0088.jpg b/images/img_folder/airplanes/image_0088.jpg new file mode 100644 index 0000000..e3df386 Binary files /dev/null and b/images/img_folder/airplanes/image_0088.jpg differ diff --git a/images/img_folder/airplanes/image_0089.jpg b/images/img_folder/airplanes/image_0089.jpg new file mode 100644 index 0000000..016cc17 Binary files /dev/null and b/images/img_folder/airplanes/image_0089.jpg differ diff --git a/images/img_folder/airplanes/image_0090.jpg b/images/img_folder/airplanes/image_0090.jpg new file mode 100644 index 0000000..eadac3d Binary files /dev/null and b/images/img_folder/airplanes/image_0090.jpg differ diff --git a/images/img_folder/airplanes/image_0091.jpg b/images/img_folder/airplanes/image_0091.jpg new file mode 100644 index 0000000..edc5d72 Binary files /dev/null and b/images/img_folder/airplanes/image_0091.jpg differ diff --git a/images/img_folder/airplanes/image_0092.jpg b/images/img_folder/airplanes/image_0092.jpg new file mode 100644 index 0000000..5a4b454 Binary files /dev/null and b/images/img_folder/airplanes/image_0092.jpg differ diff --git a/images/img_folder/airplanes/image_0093.jpg b/images/img_folder/airplanes/image_0093.jpg new file mode 100644 index 0000000..9b654b4 Binary files /dev/null and b/images/img_folder/airplanes/image_0093.jpg differ diff --git a/images/img_folder/airplanes/image_0094.jpg b/images/img_folder/airplanes/image_0094.jpg new file mode 100644 index 0000000..d8e06a0 Binary files /dev/null and b/images/img_folder/airplanes/image_0094.jpg differ diff --git a/images/img_folder/airplanes/image_0095.jpg b/images/img_folder/airplanes/image_0095.jpg new file mode 100644 index 0000000..7adc06a Binary files /dev/null and b/images/img_folder/airplanes/image_0095.jpg differ diff --git a/images/img_folder/airplanes/image_0096.jpg b/images/img_folder/airplanes/image_0096.jpg new file mode 100644 index 0000000..be01c7d Binary files /dev/null and b/images/img_folder/airplanes/image_0096.jpg differ diff --git a/images/img_folder/airplanes/image_0097.jpg b/images/img_folder/airplanes/image_0097.jpg new file mode 100644 index 0000000..3e80a0b Binary files /dev/null and b/images/img_folder/airplanes/image_0097.jpg differ diff --git a/images/img_folder/airplanes/image_0098.jpg b/images/img_folder/airplanes/image_0098.jpg new file mode 100644 index 0000000..86329ff Binary files /dev/null and b/images/img_folder/airplanes/image_0098.jpg differ diff --git a/images/img_folder/airplanes/image_0099.jpg b/images/img_folder/airplanes/image_0099.jpg new file mode 100644 index 0000000..c5fd54e Binary files /dev/null and b/images/img_folder/airplanes/image_0099.jpg differ diff --git a/images/img_folder/airplanes/image_0100.jpg b/images/img_folder/airplanes/image_0100.jpg new file mode 100644 index 0000000..65a45f9 Binary files /dev/null and b/images/img_folder/airplanes/image_0100.jpg differ diff --git a/images/img_folder/airplanes/image_0101.jpg b/images/img_folder/airplanes/image_0101.jpg new file mode 100644 index 0000000..708b92a Binary files /dev/null and b/images/img_folder/airplanes/image_0101.jpg differ diff --git a/images/img_folder/airplanes/image_0102.jpg b/images/img_folder/airplanes/image_0102.jpg new file mode 100644 index 0000000..6fe070c Binary files /dev/null and b/images/img_folder/airplanes/image_0102.jpg differ diff --git a/images/img_folder/airplanes/image_0103.jpg b/images/img_folder/airplanes/image_0103.jpg new file mode 100644 index 0000000..8882ec8 Binary files /dev/null and b/images/img_folder/airplanes/image_0103.jpg differ diff --git a/images/img_folder/airplanes/image_0104.jpg b/images/img_folder/airplanes/image_0104.jpg new file mode 100644 index 0000000..6677e41 Binary files /dev/null and b/images/img_folder/airplanes/image_0104.jpg differ diff --git a/images/img_folder/airplanes/image_0105.jpg b/images/img_folder/airplanes/image_0105.jpg new file mode 100644 index 0000000..3f0c11a Binary files /dev/null and b/images/img_folder/airplanes/image_0105.jpg differ diff --git a/images/img_folder/airplanes/image_0106.jpg b/images/img_folder/airplanes/image_0106.jpg new file mode 100644 index 0000000..4842a15 Binary files /dev/null and b/images/img_folder/airplanes/image_0106.jpg differ diff --git a/images/img_folder/airplanes/image_0107.jpg b/images/img_folder/airplanes/image_0107.jpg new file mode 100644 index 0000000..d875543 Binary files /dev/null and b/images/img_folder/airplanes/image_0107.jpg differ diff --git a/images/img_folder/airplanes/image_0108.jpg b/images/img_folder/airplanes/image_0108.jpg new file mode 100644 index 0000000..cfc5597 Binary files /dev/null and b/images/img_folder/airplanes/image_0108.jpg differ diff --git a/images/img_folder/airplanes/image_0109.jpg b/images/img_folder/airplanes/image_0109.jpg new file mode 100644 index 0000000..3e8b964 Binary files /dev/null and b/images/img_folder/airplanes/image_0109.jpg differ diff --git a/images/img_folder/airplanes/image_0110.jpg b/images/img_folder/airplanes/image_0110.jpg new file mode 100644 index 0000000..a9da0ca Binary files /dev/null and b/images/img_folder/airplanes/image_0110.jpg differ diff --git a/images/img_folder/airplanes/image_0111.jpg b/images/img_folder/airplanes/image_0111.jpg new file mode 100644 index 0000000..ea40a35 Binary files /dev/null and b/images/img_folder/airplanes/image_0111.jpg differ diff --git a/images/img_folder/airplanes/image_0112.jpg b/images/img_folder/airplanes/image_0112.jpg new file mode 100644 index 0000000..cc8271c Binary files /dev/null and b/images/img_folder/airplanes/image_0112.jpg differ diff --git a/images/img_folder/airplanes/image_0113.jpg b/images/img_folder/airplanes/image_0113.jpg new file mode 100644 index 0000000..9d83c4c Binary files /dev/null and b/images/img_folder/airplanes/image_0113.jpg differ diff --git a/images/img_folder/airplanes/image_0114.jpg b/images/img_folder/airplanes/image_0114.jpg new file mode 100644 index 0000000..1e1da40 Binary files /dev/null and b/images/img_folder/airplanes/image_0114.jpg differ diff --git a/images/img_folder/airplanes/image_0115.jpg b/images/img_folder/airplanes/image_0115.jpg new file mode 100644 index 0000000..26f2966 Binary files /dev/null and b/images/img_folder/airplanes/image_0115.jpg differ diff --git a/images/img_folder/airplanes/image_0116.jpg b/images/img_folder/airplanes/image_0116.jpg new file mode 100644 index 0000000..7a87703 Binary files /dev/null and b/images/img_folder/airplanes/image_0116.jpg differ diff --git a/images/img_folder/airplanes/image_0117.jpg b/images/img_folder/airplanes/image_0117.jpg new file mode 100644 index 0000000..55c1642 Binary files /dev/null and b/images/img_folder/airplanes/image_0117.jpg differ diff --git a/images/img_folder/airplanes/image_0118.jpg b/images/img_folder/airplanes/image_0118.jpg new file mode 100644 index 0000000..b23eb20 Binary files /dev/null and b/images/img_folder/airplanes/image_0118.jpg differ diff --git a/images/img_folder/airplanes/image_0119.jpg b/images/img_folder/airplanes/image_0119.jpg new file mode 100644 index 0000000..f2b6c4f Binary files /dev/null and b/images/img_folder/airplanes/image_0119.jpg differ diff --git a/images/img_folder/airplanes/image_0120.jpg b/images/img_folder/airplanes/image_0120.jpg new file mode 100644 index 0000000..8e7c0a5 Binary files /dev/null and b/images/img_folder/airplanes/image_0120.jpg differ diff --git a/images/img_folder/airplanes/image_0121.jpg b/images/img_folder/airplanes/image_0121.jpg new file mode 100644 index 0000000..3d1dd13 Binary files /dev/null and b/images/img_folder/airplanes/image_0121.jpg differ diff --git a/images/img_folder/airplanes/image_0122.jpg b/images/img_folder/airplanes/image_0122.jpg new file mode 100644 index 0000000..1496e4e Binary files /dev/null and b/images/img_folder/airplanes/image_0122.jpg differ diff --git a/images/img_folder/airplanes/image_0123.jpg b/images/img_folder/airplanes/image_0123.jpg new file mode 100644 index 0000000..27d64c7 Binary files /dev/null and b/images/img_folder/airplanes/image_0123.jpg differ diff --git a/images/img_folder/airplanes/image_0124.jpg b/images/img_folder/airplanes/image_0124.jpg new file mode 100644 index 0000000..f8921c2 Binary files /dev/null and b/images/img_folder/airplanes/image_0124.jpg differ diff --git a/images/img_folder/airplanes/image_0125.jpg b/images/img_folder/airplanes/image_0125.jpg new file mode 100644 index 0000000..a58ae9e Binary files /dev/null and b/images/img_folder/airplanes/image_0125.jpg differ diff --git a/images/img_folder/airplanes/image_0126.jpg b/images/img_folder/airplanes/image_0126.jpg new file mode 100644 index 0000000..7fffa87 Binary files /dev/null and b/images/img_folder/airplanes/image_0126.jpg differ diff --git a/images/img_folder/airplanes/image_0127.jpg b/images/img_folder/airplanes/image_0127.jpg new file mode 100644 index 0000000..48a79b1 Binary files /dev/null and b/images/img_folder/airplanes/image_0127.jpg differ diff --git a/images/img_folder/airplanes/image_0128.jpg b/images/img_folder/airplanes/image_0128.jpg new file mode 100644 index 0000000..566644e Binary files /dev/null and b/images/img_folder/airplanes/image_0128.jpg differ diff --git a/images/img_folder/airplanes/image_0129.jpg b/images/img_folder/airplanes/image_0129.jpg new file mode 100644 index 0000000..5bc906b Binary files /dev/null and b/images/img_folder/airplanes/image_0129.jpg differ diff --git a/images/img_folder/airplanes/image_0130.jpg b/images/img_folder/airplanes/image_0130.jpg new file mode 100644 index 0000000..e3069bf Binary files /dev/null and b/images/img_folder/airplanes/image_0130.jpg differ diff --git a/images/img_folder/airplanes/image_0131.jpg b/images/img_folder/airplanes/image_0131.jpg new file mode 100644 index 0000000..241a36b Binary files /dev/null and b/images/img_folder/airplanes/image_0131.jpg differ diff --git a/images/img_folder/airplanes/image_0132.jpg b/images/img_folder/airplanes/image_0132.jpg new file mode 100644 index 0000000..ff44e83 Binary files /dev/null and b/images/img_folder/airplanes/image_0132.jpg differ diff --git a/images/img_folder/airplanes/image_0133.jpg b/images/img_folder/airplanes/image_0133.jpg new file mode 100644 index 0000000..b54c6ce Binary files /dev/null and b/images/img_folder/airplanes/image_0133.jpg differ diff --git a/images/img_folder/airplanes/image_0134.jpg b/images/img_folder/airplanes/image_0134.jpg new file mode 100644 index 0000000..c469fbd Binary files /dev/null and b/images/img_folder/airplanes/image_0134.jpg differ diff --git a/images/img_folder/airplanes/image_0135.jpg b/images/img_folder/airplanes/image_0135.jpg new file mode 100644 index 0000000..40392d6 Binary files /dev/null and b/images/img_folder/airplanes/image_0135.jpg differ diff --git a/images/img_folder/airplanes/image_0136.jpg b/images/img_folder/airplanes/image_0136.jpg new file mode 100644 index 0000000..bf8888f Binary files /dev/null and b/images/img_folder/airplanes/image_0136.jpg differ diff --git a/images/img_folder/airplanes/image_0137.jpg b/images/img_folder/airplanes/image_0137.jpg new file mode 100644 index 0000000..f5798c3 Binary files /dev/null and b/images/img_folder/airplanes/image_0137.jpg differ diff --git a/images/img_folder/airplanes/image_0138.jpg b/images/img_folder/airplanes/image_0138.jpg new file mode 100644 index 0000000..a6f4ce4 Binary files /dev/null and b/images/img_folder/airplanes/image_0138.jpg differ diff --git a/images/img_folder/airplanes/image_0139.jpg b/images/img_folder/airplanes/image_0139.jpg new file mode 100644 index 0000000..990230f Binary files /dev/null and b/images/img_folder/airplanes/image_0139.jpg differ diff --git a/images/img_folder/airplanes/image_0140.jpg b/images/img_folder/airplanes/image_0140.jpg new file mode 100644 index 0000000..a624d1c Binary files /dev/null and b/images/img_folder/airplanes/image_0140.jpg differ diff --git a/images/img_folder/airplanes/image_0141.jpg b/images/img_folder/airplanes/image_0141.jpg new file mode 100644 index 0000000..90693d9 Binary files /dev/null and b/images/img_folder/airplanes/image_0141.jpg differ diff --git a/images/img_folder/airplanes/image_0142.jpg b/images/img_folder/airplanes/image_0142.jpg new file mode 100644 index 0000000..b559c2b Binary files /dev/null and b/images/img_folder/airplanes/image_0142.jpg differ diff --git a/images/img_folder/airplanes/image_0143.jpg b/images/img_folder/airplanes/image_0143.jpg new file mode 100644 index 0000000..5d4c8a3 Binary files /dev/null and b/images/img_folder/airplanes/image_0143.jpg differ diff --git a/images/img_folder/airplanes/image_0144.jpg b/images/img_folder/airplanes/image_0144.jpg new file mode 100644 index 0000000..bbb6b49 Binary files /dev/null and b/images/img_folder/airplanes/image_0144.jpg differ diff --git a/images/img_folder/airplanes/image_0145.jpg b/images/img_folder/airplanes/image_0145.jpg new file mode 100644 index 0000000..6b34efb Binary files /dev/null and b/images/img_folder/airplanes/image_0145.jpg differ diff --git a/images/img_folder/airplanes/image_0146.jpg b/images/img_folder/airplanes/image_0146.jpg new file mode 100644 index 0000000..fd5350b Binary files /dev/null and b/images/img_folder/airplanes/image_0146.jpg differ diff --git a/images/img_folder/airplanes/image_0147.jpg b/images/img_folder/airplanes/image_0147.jpg new file mode 100644 index 0000000..6968403 Binary files /dev/null and b/images/img_folder/airplanes/image_0147.jpg differ diff --git a/images/img_folder/airplanes/image_0148.jpg b/images/img_folder/airplanes/image_0148.jpg new file mode 100644 index 0000000..a417cd7 Binary files /dev/null and b/images/img_folder/airplanes/image_0148.jpg differ diff --git a/images/img_folder/airplanes/image_0149.jpg b/images/img_folder/airplanes/image_0149.jpg new file mode 100644 index 0000000..f53e0a0 Binary files /dev/null and b/images/img_folder/airplanes/image_0149.jpg differ diff --git a/images/img_folder/airplanes/image_0150.jpg b/images/img_folder/airplanes/image_0150.jpg new file mode 100644 index 0000000..aa86e81 Binary files /dev/null and b/images/img_folder/airplanes/image_0150.jpg differ diff --git a/images/img_folder/airplanes/image_0151.jpg b/images/img_folder/airplanes/image_0151.jpg new file mode 100644 index 0000000..abc1ca5 Binary files /dev/null and b/images/img_folder/airplanes/image_0151.jpg differ diff --git a/images/img_folder/airplanes/image_0152.jpg b/images/img_folder/airplanes/image_0152.jpg new file mode 100644 index 0000000..c0fd1ad Binary files /dev/null and b/images/img_folder/airplanes/image_0152.jpg differ diff --git a/images/img_folder/airplanes/image_0153.jpg b/images/img_folder/airplanes/image_0153.jpg new file mode 100644 index 0000000..5c14336 Binary files /dev/null and b/images/img_folder/airplanes/image_0153.jpg differ diff --git a/images/img_folder/airplanes/image_0154.jpg b/images/img_folder/airplanes/image_0154.jpg new file mode 100644 index 0000000..3538744 Binary files /dev/null and b/images/img_folder/airplanes/image_0154.jpg differ diff --git a/images/img_folder/airplanes/image_0155.jpg b/images/img_folder/airplanes/image_0155.jpg new file mode 100644 index 0000000..3997804 Binary files /dev/null and b/images/img_folder/airplanes/image_0155.jpg differ diff --git a/images/img_folder/airplanes/image_0156.jpg b/images/img_folder/airplanes/image_0156.jpg new file mode 100644 index 0000000..807ebb1 Binary files /dev/null and b/images/img_folder/airplanes/image_0156.jpg differ diff --git a/images/img_folder/airplanes/image_0157.jpg b/images/img_folder/airplanes/image_0157.jpg new file mode 100644 index 0000000..3c50392 Binary files /dev/null and b/images/img_folder/airplanes/image_0157.jpg differ diff --git a/images/img_folder/airplanes/image_0158.jpg b/images/img_folder/airplanes/image_0158.jpg new file mode 100644 index 0000000..5278932 Binary files /dev/null and b/images/img_folder/airplanes/image_0158.jpg differ diff --git a/images/img_folder/airplanes/image_0159.jpg b/images/img_folder/airplanes/image_0159.jpg new file mode 100644 index 0000000..d642e1e Binary files /dev/null and b/images/img_folder/airplanes/image_0159.jpg differ diff --git a/images/img_folder/airplanes/image_0160.jpg b/images/img_folder/airplanes/image_0160.jpg new file mode 100644 index 0000000..b28674e Binary files /dev/null and b/images/img_folder/airplanes/image_0160.jpg differ diff --git a/images/img_folder/airplanes/image_0161.jpg b/images/img_folder/airplanes/image_0161.jpg new file mode 100644 index 0000000..c3ae2df Binary files /dev/null and b/images/img_folder/airplanes/image_0161.jpg differ diff --git a/images/img_folder/airplanes/image_0162.jpg b/images/img_folder/airplanes/image_0162.jpg new file mode 100644 index 0000000..873316e Binary files /dev/null and b/images/img_folder/airplanes/image_0162.jpg differ diff --git a/images/img_folder/airplanes/image_0163.jpg b/images/img_folder/airplanes/image_0163.jpg new file mode 100644 index 0000000..53917de Binary files /dev/null and b/images/img_folder/airplanes/image_0163.jpg differ diff --git a/images/img_folder/airplanes/image_0164.jpg b/images/img_folder/airplanes/image_0164.jpg new file mode 100644 index 0000000..4d05b89 Binary files /dev/null and b/images/img_folder/airplanes/image_0164.jpg differ diff --git a/images/img_folder/airplanes/image_0165.jpg b/images/img_folder/airplanes/image_0165.jpg new file mode 100644 index 0000000..050606c Binary files /dev/null and b/images/img_folder/airplanes/image_0165.jpg differ diff --git a/images/img_folder/airplanes/image_0166.jpg b/images/img_folder/airplanes/image_0166.jpg new file mode 100644 index 0000000..6d9ae5f Binary files /dev/null and b/images/img_folder/airplanes/image_0166.jpg differ diff --git a/images/img_folder/airplanes/image_0167.jpg b/images/img_folder/airplanes/image_0167.jpg new file mode 100644 index 0000000..90f9175 Binary files /dev/null and b/images/img_folder/airplanes/image_0167.jpg differ diff --git a/images/img_folder/airplanes/image_0168.jpg b/images/img_folder/airplanes/image_0168.jpg new file mode 100644 index 0000000..47c3974 Binary files /dev/null and b/images/img_folder/airplanes/image_0168.jpg differ diff --git a/images/img_folder/airplanes/image_0169.jpg b/images/img_folder/airplanes/image_0169.jpg new file mode 100644 index 0000000..752fdfc Binary files /dev/null and b/images/img_folder/airplanes/image_0169.jpg differ diff --git a/images/img_folder/airplanes/image_0170.jpg b/images/img_folder/airplanes/image_0170.jpg new file mode 100644 index 0000000..e01b18b Binary files /dev/null and b/images/img_folder/airplanes/image_0170.jpg differ diff --git a/images/img_folder/airplanes/image_0171.jpg b/images/img_folder/airplanes/image_0171.jpg new file mode 100644 index 0000000..a49b3ff Binary files /dev/null and b/images/img_folder/airplanes/image_0171.jpg differ diff --git a/images/img_folder/airplanes/image_0172.jpg b/images/img_folder/airplanes/image_0172.jpg new file mode 100644 index 0000000..8c85a7b Binary files /dev/null and b/images/img_folder/airplanes/image_0172.jpg differ diff --git a/images/img_folder/airplanes/image_0173.jpg b/images/img_folder/airplanes/image_0173.jpg new file mode 100644 index 0000000..d78a7b0 Binary files /dev/null and b/images/img_folder/airplanes/image_0173.jpg differ diff --git a/images/img_folder/airplanes/image_0174.jpg b/images/img_folder/airplanes/image_0174.jpg new file mode 100644 index 0000000..034923a Binary files /dev/null and b/images/img_folder/airplanes/image_0174.jpg differ diff --git a/images/img_folder/airplanes/image_0175.jpg b/images/img_folder/airplanes/image_0175.jpg new file mode 100644 index 0000000..c60f7d3 Binary files /dev/null and b/images/img_folder/airplanes/image_0175.jpg differ diff --git a/images/img_folder/airplanes/image_0176.jpg b/images/img_folder/airplanes/image_0176.jpg new file mode 100644 index 0000000..26fdbbb Binary files /dev/null and b/images/img_folder/airplanes/image_0176.jpg differ diff --git a/images/img_folder/airplanes/image_0177.jpg b/images/img_folder/airplanes/image_0177.jpg new file mode 100644 index 0000000..f863822 Binary files /dev/null and b/images/img_folder/airplanes/image_0177.jpg differ diff --git a/images/img_folder/airplanes/image_0178.jpg b/images/img_folder/airplanes/image_0178.jpg new file mode 100644 index 0000000..6781de4 Binary files /dev/null and b/images/img_folder/airplanes/image_0178.jpg differ diff --git a/images/img_folder/airplanes/image_0179.jpg b/images/img_folder/airplanes/image_0179.jpg new file mode 100644 index 0000000..b04d31f Binary files /dev/null and b/images/img_folder/airplanes/image_0179.jpg differ diff --git a/images/img_folder/airplanes/image_0180.jpg b/images/img_folder/airplanes/image_0180.jpg new file mode 100644 index 0000000..a3b8c89 Binary files /dev/null and b/images/img_folder/airplanes/image_0180.jpg differ diff --git a/images/img_folder/airplanes/image_0181.jpg b/images/img_folder/airplanes/image_0181.jpg new file mode 100644 index 0000000..f6e1a5e Binary files /dev/null and b/images/img_folder/airplanes/image_0181.jpg differ diff --git a/images/img_folder/airplanes/image_0182.jpg b/images/img_folder/airplanes/image_0182.jpg new file mode 100644 index 0000000..c46a4b7 Binary files /dev/null and b/images/img_folder/airplanes/image_0182.jpg differ diff --git a/images/img_folder/airplanes/image_0183.jpg b/images/img_folder/airplanes/image_0183.jpg new file mode 100644 index 0000000..b4ea8b6 Binary files /dev/null and b/images/img_folder/airplanes/image_0183.jpg differ diff --git a/images/img_folder/airplanes/image_0184.jpg b/images/img_folder/airplanes/image_0184.jpg new file mode 100644 index 0000000..d7c52ad Binary files /dev/null and b/images/img_folder/airplanes/image_0184.jpg differ diff --git a/images/img_folder/airplanes/image_0185.jpg b/images/img_folder/airplanes/image_0185.jpg new file mode 100644 index 0000000..1032f5b Binary files /dev/null and b/images/img_folder/airplanes/image_0185.jpg differ diff --git a/images/img_folder/airplanes/image_0186.jpg b/images/img_folder/airplanes/image_0186.jpg new file mode 100644 index 0000000..41ac873 Binary files /dev/null and b/images/img_folder/airplanes/image_0186.jpg differ diff --git a/images/img_folder/airplanes/image_0187.jpg b/images/img_folder/airplanes/image_0187.jpg new file mode 100644 index 0000000..f2b2f95 Binary files /dev/null and b/images/img_folder/airplanes/image_0187.jpg differ diff --git a/images/img_folder/airplanes/image_0188.jpg b/images/img_folder/airplanes/image_0188.jpg new file mode 100644 index 0000000..6b999aa Binary files /dev/null and b/images/img_folder/airplanes/image_0188.jpg differ diff --git a/images/img_folder/airplanes/image_0189.jpg b/images/img_folder/airplanes/image_0189.jpg new file mode 100644 index 0000000..465aea6 Binary files /dev/null and b/images/img_folder/airplanes/image_0189.jpg differ diff --git a/images/img_folder/airplanes/image_0190.jpg b/images/img_folder/airplanes/image_0190.jpg new file mode 100644 index 0000000..437d543 Binary files /dev/null and b/images/img_folder/airplanes/image_0190.jpg differ diff --git a/images/img_folder/airplanes/image_0191.jpg b/images/img_folder/airplanes/image_0191.jpg new file mode 100644 index 0000000..edc800b Binary files /dev/null and b/images/img_folder/airplanes/image_0191.jpg differ diff --git a/images/img_folder/airplanes/image_0192.jpg b/images/img_folder/airplanes/image_0192.jpg new file mode 100644 index 0000000..58fc21b Binary files /dev/null and b/images/img_folder/airplanes/image_0192.jpg differ diff --git a/images/img_folder/airplanes/image_0193.jpg b/images/img_folder/airplanes/image_0193.jpg new file mode 100644 index 0000000..aecd30b Binary files /dev/null and b/images/img_folder/airplanes/image_0193.jpg differ diff --git a/images/img_folder/airplanes/image_0194.jpg b/images/img_folder/airplanes/image_0194.jpg new file mode 100644 index 0000000..0d298c4 Binary files /dev/null and b/images/img_folder/airplanes/image_0194.jpg differ diff --git a/images/img_folder/airplanes/image_0195.jpg b/images/img_folder/airplanes/image_0195.jpg new file mode 100644 index 0000000..7a144c0 Binary files /dev/null and b/images/img_folder/airplanes/image_0195.jpg differ diff --git a/images/img_folder/airplanes/image_0196.jpg b/images/img_folder/airplanes/image_0196.jpg new file mode 100644 index 0000000..151ae20 Binary files /dev/null and b/images/img_folder/airplanes/image_0196.jpg differ diff --git a/images/img_folder/airplanes/image_0197.jpg b/images/img_folder/airplanes/image_0197.jpg new file mode 100644 index 0000000..722d54a Binary files /dev/null and b/images/img_folder/airplanes/image_0197.jpg differ diff --git a/images/img_folder/airplanes/image_0198.jpg b/images/img_folder/airplanes/image_0198.jpg new file mode 100644 index 0000000..2e98a98 Binary files /dev/null and b/images/img_folder/airplanes/image_0198.jpg differ diff --git a/images/img_folder/airplanes/image_0199.jpg b/images/img_folder/airplanes/image_0199.jpg new file mode 100644 index 0000000..441f4d7 Binary files /dev/null and b/images/img_folder/airplanes/image_0199.jpg differ diff --git a/images/img_folder/airplanes/image_0200.jpg b/images/img_folder/airplanes/image_0200.jpg new file mode 100644 index 0000000..a67f781 Binary files /dev/null and b/images/img_folder/airplanes/image_0200.jpg differ diff --git a/images/img_folder/airplanes/image_0201.jpg b/images/img_folder/airplanes/image_0201.jpg new file mode 100644 index 0000000..cc5a9c3 Binary files /dev/null and b/images/img_folder/airplanes/image_0201.jpg differ diff --git a/images/img_folder/airplanes/image_0202.jpg b/images/img_folder/airplanes/image_0202.jpg new file mode 100644 index 0000000..0fd6aad Binary files /dev/null and b/images/img_folder/airplanes/image_0202.jpg differ diff --git a/images/img_folder/airplanes/image_0203.jpg b/images/img_folder/airplanes/image_0203.jpg new file mode 100644 index 0000000..4dcdf26 Binary files /dev/null and b/images/img_folder/airplanes/image_0203.jpg differ diff --git a/images/img_folder/airplanes/image_0204.jpg b/images/img_folder/airplanes/image_0204.jpg new file mode 100644 index 0000000..0d06d65 Binary files /dev/null and b/images/img_folder/airplanes/image_0204.jpg differ diff --git a/images/img_folder/airplanes/image_0205.jpg b/images/img_folder/airplanes/image_0205.jpg new file mode 100644 index 0000000..6e18740 Binary files /dev/null and b/images/img_folder/airplanes/image_0205.jpg differ diff --git a/images/img_folder/airplanes/image_0206.jpg b/images/img_folder/airplanes/image_0206.jpg new file mode 100644 index 0000000..cf60275 Binary files /dev/null and b/images/img_folder/airplanes/image_0206.jpg differ diff --git a/images/img_folder/airplanes/image_0207.jpg b/images/img_folder/airplanes/image_0207.jpg new file mode 100644 index 0000000..f51c64a Binary files /dev/null and b/images/img_folder/airplanes/image_0207.jpg differ diff --git a/images/img_folder/airplanes/image_0208.jpg b/images/img_folder/airplanes/image_0208.jpg new file mode 100644 index 0000000..87afe2e Binary files /dev/null and b/images/img_folder/airplanes/image_0208.jpg differ diff --git a/images/img_folder/airplanes/image_0209.jpg b/images/img_folder/airplanes/image_0209.jpg new file mode 100644 index 0000000..6346581 Binary files /dev/null and b/images/img_folder/airplanes/image_0209.jpg differ diff --git a/images/img_folder/airplanes/image_0210.jpg b/images/img_folder/airplanes/image_0210.jpg new file mode 100644 index 0000000..c2bd566 Binary files /dev/null and b/images/img_folder/airplanes/image_0210.jpg differ diff --git a/images/img_folder/airplanes/image_0211.jpg b/images/img_folder/airplanes/image_0211.jpg new file mode 100644 index 0000000..2fdeff9 Binary files /dev/null and b/images/img_folder/airplanes/image_0211.jpg differ diff --git a/images/img_folder/airplanes/image_0212.jpg b/images/img_folder/airplanes/image_0212.jpg new file mode 100644 index 0000000..b9ac969 Binary files /dev/null and b/images/img_folder/airplanes/image_0212.jpg differ diff --git a/images/img_folder/airplanes/image_0213.jpg b/images/img_folder/airplanes/image_0213.jpg new file mode 100644 index 0000000..17a0dd1 Binary files /dev/null and b/images/img_folder/airplanes/image_0213.jpg differ diff --git a/images/img_folder/airplanes/image_0214.jpg b/images/img_folder/airplanes/image_0214.jpg new file mode 100644 index 0000000..d84a690 Binary files /dev/null and b/images/img_folder/airplanes/image_0214.jpg differ diff --git a/images/img_folder/airplanes/image_0215.jpg b/images/img_folder/airplanes/image_0215.jpg new file mode 100644 index 0000000..b2ae7c7 Binary files /dev/null and b/images/img_folder/airplanes/image_0215.jpg differ diff --git a/images/img_folder/airplanes/image_0216.jpg b/images/img_folder/airplanes/image_0216.jpg new file mode 100644 index 0000000..2673382 Binary files /dev/null and b/images/img_folder/airplanes/image_0216.jpg differ diff --git a/images/img_folder/airplanes/image_0217.jpg b/images/img_folder/airplanes/image_0217.jpg new file mode 100644 index 0000000..7938f0d Binary files /dev/null and b/images/img_folder/airplanes/image_0217.jpg differ diff --git a/images/img_folder/airplanes/image_0218.jpg b/images/img_folder/airplanes/image_0218.jpg new file mode 100644 index 0000000..b4569da Binary files /dev/null and b/images/img_folder/airplanes/image_0218.jpg differ diff --git a/images/img_folder/airplanes/image_0219.jpg b/images/img_folder/airplanes/image_0219.jpg new file mode 100644 index 0000000..4e13f81 Binary files /dev/null and b/images/img_folder/airplanes/image_0219.jpg differ diff --git a/images/img_folder/airplanes/image_0220.jpg b/images/img_folder/airplanes/image_0220.jpg new file mode 100644 index 0000000..9f18fa0 Binary files /dev/null and b/images/img_folder/airplanes/image_0220.jpg differ diff --git a/images/img_folder/airplanes/image_0221.jpg b/images/img_folder/airplanes/image_0221.jpg new file mode 100644 index 0000000..cae63aa Binary files /dev/null and b/images/img_folder/airplanes/image_0221.jpg differ diff --git a/images/img_folder/airplanes/image_0222.jpg b/images/img_folder/airplanes/image_0222.jpg new file mode 100644 index 0000000..dbecebc Binary files /dev/null and b/images/img_folder/airplanes/image_0222.jpg differ diff --git a/images/img_folder/airplanes/image_0223.jpg b/images/img_folder/airplanes/image_0223.jpg new file mode 100644 index 0000000..dbd4ccc Binary files /dev/null and b/images/img_folder/airplanes/image_0223.jpg differ diff --git a/images/img_folder/airplanes/image_0224.jpg b/images/img_folder/airplanes/image_0224.jpg new file mode 100644 index 0000000..a04af62 Binary files /dev/null and b/images/img_folder/airplanes/image_0224.jpg differ diff --git a/images/img_folder/airplanes/image_0225.jpg b/images/img_folder/airplanes/image_0225.jpg new file mode 100644 index 0000000..b8b0c0b Binary files /dev/null and b/images/img_folder/airplanes/image_0225.jpg differ diff --git a/images/img_folder/airplanes/image_0226.jpg b/images/img_folder/airplanes/image_0226.jpg new file mode 100644 index 0000000..4476b44 Binary files /dev/null and b/images/img_folder/airplanes/image_0226.jpg differ diff --git a/images/img_folder/airplanes/image_0227.jpg b/images/img_folder/airplanes/image_0227.jpg new file mode 100644 index 0000000..e7d293d Binary files /dev/null and b/images/img_folder/airplanes/image_0227.jpg differ diff --git a/images/img_folder/airplanes/image_0228.jpg b/images/img_folder/airplanes/image_0228.jpg new file mode 100644 index 0000000..941693c Binary files /dev/null and b/images/img_folder/airplanes/image_0228.jpg differ diff --git a/images/img_folder/airplanes/image_0229.jpg b/images/img_folder/airplanes/image_0229.jpg new file mode 100644 index 0000000..baef0f7 Binary files /dev/null and b/images/img_folder/airplanes/image_0229.jpg differ diff --git a/images/img_folder/airplanes/image_0230.jpg b/images/img_folder/airplanes/image_0230.jpg new file mode 100644 index 0000000..8e0f770 Binary files /dev/null and b/images/img_folder/airplanes/image_0230.jpg differ diff --git a/images/img_folder/airplanes/image_0231.jpg b/images/img_folder/airplanes/image_0231.jpg new file mode 100644 index 0000000..9dd3ed8 Binary files /dev/null and b/images/img_folder/airplanes/image_0231.jpg differ diff --git a/images/img_folder/airplanes/image_0232.jpg b/images/img_folder/airplanes/image_0232.jpg new file mode 100644 index 0000000..bf706a6 Binary files /dev/null and b/images/img_folder/airplanes/image_0232.jpg differ diff --git a/images/img_folder/airplanes/image_0233.jpg b/images/img_folder/airplanes/image_0233.jpg new file mode 100644 index 0000000..6d664e7 Binary files /dev/null and b/images/img_folder/airplanes/image_0233.jpg differ diff --git a/images/img_folder/airplanes/image_0234.jpg b/images/img_folder/airplanes/image_0234.jpg new file mode 100644 index 0000000..1b20081 Binary files /dev/null and b/images/img_folder/airplanes/image_0234.jpg differ diff --git a/images/img_folder/airplanes/image_0235.jpg b/images/img_folder/airplanes/image_0235.jpg new file mode 100644 index 0000000..eb54d2f Binary files /dev/null and b/images/img_folder/airplanes/image_0235.jpg differ diff --git a/images/img_folder/airplanes/image_0236.jpg b/images/img_folder/airplanes/image_0236.jpg new file mode 100644 index 0000000..8fb6538 Binary files /dev/null and b/images/img_folder/airplanes/image_0236.jpg differ diff --git a/images/img_folder/airplanes/image_0237.jpg b/images/img_folder/airplanes/image_0237.jpg new file mode 100644 index 0000000..afe18cc Binary files /dev/null and b/images/img_folder/airplanes/image_0237.jpg differ diff --git a/images/img_folder/airplanes/image_0238.jpg b/images/img_folder/airplanes/image_0238.jpg new file mode 100644 index 0000000..2eb2d2b Binary files /dev/null and b/images/img_folder/airplanes/image_0238.jpg differ diff --git a/images/img_folder/airplanes/image_0239.jpg b/images/img_folder/airplanes/image_0239.jpg new file mode 100644 index 0000000..d71b3ca Binary files /dev/null and b/images/img_folder/airplanes/image_0239.jpg differ diff --git a/images/img_folder/airplanes/image_0240.jpg b/images/img_folder/airplanes/image_0240.jpg new file mode 100644 index 0000000..0f74073 Binary files /dev/null and b/images/img_folder/airplanes/image_0240.jpg differ diff --git a/images/img_folder/airplanes/image_0241.jpg b/images/img_folder/airplanes/image_0241.jpg new file mode 100644 index 0000000..1ac9726 Binary files /dev/null and b/images/img_folder/airplanes/image_0241.jpg differ diff --git a/images/img_folder/airplanes/image_0242.jpg b/images/img_folder/airplanes/image_0242.jpg new file mode 100644 index 0000000..b3e1562 Binary files /dev/null and b/images/img_folder/airplanes/image_0242.jpg differ diff --git a/images/img_folder/airplanes/image_0243.jpg b/images/img_folder/airplanes/image_0243.jpg new file mode 100644 index 0000000..7fbcaa3 Binary files /dev/null and b/images/img_folder/airplanes/image_0243.jpg differ diff --git a/images/img_folder/airplanes/image_0244.jpg b/images/img_folder/airplanes/image_0244.jpg new file mode 100644 index 0000000..da261f4 Binary files /dev/null and b/images/img_folder/airplanes/image_0244.jpg differ diff --git a/images/img_folder/airplanes/image_0245.jpg b/images/img_folder/airplanes/image_0245.jpg new file mode 100644 index 0000000..e2309de Binary files /dev/null and b/images/img_folder/airplanes/image_0245.jpg differ diff --git a/images/img_folder/airplanes/image_0246.jpg b/images/img_folder/airplanes/image_0246.jpg new file mode 100644 index 0000000..1886f56 Binary files /dev/null and b/images/img_folder/airplanes/image_0246.jpg differ diff --git a/images/img_folder/airplanes/image_0247.jpg b/images/img_folder/airplanes/image_0247.jpg new file mode 100644 index 0000000..2b91abc Binary files /dev/null and b/images/img_folder/airplanes/image_0247.jpg differ diff --git a/images/img_folder/airplanes/image_0248.jpg b/images/img_folder/airplanes/image_0248.jpg new file mode 100644 index 0000000..5f0b8f0 Binary files /dev/null and b/images/img_folder/airplanes/image_0248.jpg differ diff --git a/images/img_folder/airplanes/image_0249.jpg b/images/img_folder/airplanes/image_0249.jpg new file mode 100644 index 0000000..d530623 Binary files /dev/null and b/images/img_folder/airplanes/image_0249.jpg differ diff --git a/images/img_folder/airplanes/image_0250.jpg b/images/img_folder/airplanes/image_0250.jpg new file mode 100644 index 0000000..e890ed4 Binary files /dev/null and b/images/img_folder/airplanes/image_0250.jpg differ diff --git a/images/img_folder/airplanes/image_0251.jpg b/images/img_folder/airplanes/image_0251.jpg new file mode 100644 index 0000000..81eb220 Binary files /dev/null and b/images/img_folder/airplanes/image_0251.jpg differ diff --git a/images/img_folder/airplanes/image_0252.jpg b/images/img_folder/airplanes/image_0252.jpg new file mode 100644 index 0000000..1b35452 Binary files /dev/null and b/images/img_folder/airplanes/image_0252.jpg differ diff --git a/images/img_folder/airplanes/image_0253.jpg b/images/img_folder/airplanes/image_0253.jpg new file mode 100644 index 0000000..8a314f3 Binary files /dev/null and b/images/img_folder/airplanes/image_0253.jpg differ diff --git a/images/img_folder/airplanes/image_0254.jpg b/images/img_folder/airplanes/image_0254.jpg new file mode 100644 index 0000000..b4496a0 Binary files /dev/null and b/images/img_folder/airplanes/image_0254.jpg differ diff --git a/images/img_folder/airplanes/image_0255.jpg b/images/img_folder/airplanes/image_0255.jpg new file mode 100644 index 0000000..a4f2e38 Binary files /dev/null and b/images/img_folder/airplanes/image_0255.jpg differ diff --git a/images/img_folder/airplanes/image_0256.jpg b/images/img_folder/airplanes/image_0256.jpg new file mode 100644 index 0000000..80d4722 Binary files /dev/null and b/images/img_folder/airplanes/image_0256.jpg differ diff --git a/images/img_folder/airplanes/image_0257.jpg b/images/img_folder/airplanes/image_0257.jpg new file mode 100644 index 0000000..1ce32e9 Binary files /dev/null and b/images/img_folder/airplanes/image_0257.jpg differ diff --git a/images/img_folder/airplanes/image_0258.jpg b/images/img_folder/airplanes/image_0258.jpg new file mode 100644 index 0000000..73d1ce3 Binary files /dev/null and b/images/img_folder/airplanes/image_0258.jpg differ diff --git a/images/img_folder/airplanes/image_0259.jpg b/images/img_folder/airplanes/image_0259.jpg new file mode 100644 index 0000000..44c4318 Binary files /dev/null and b/images/img_folder/airplanes/image_0259.jpg differ diff --git a/images/img_folder/airplanes/image_0260.jpg b/images/img_folder/airplanes/image_0260.jpg new file mode 100644 index 0000000..01f7ec5 Binary files /dev/null and b/images/img_folder/airplanes/image_0260.jpg differ diff --git a/images/img_folder/airplanes/image_0261.jpg b/images/img_folder/airplanes/image_0261.jpg new file mode 100644 index 0000000..f45b5ae Binary files /dev/null and b/images/img_folder/airplanes/image_0261.jpg differ diff --git a/images/img_folder/airplanes/image_0262.jpg b/images/img_folder/airplanes/image_0262.jpg new file mode 100644 index 0000000..c878ce3 Binary files /dev/null and b/images/img_folder/airplanes/image_0262.jpg differ diff --git a/images/img_folder/airplanes/image_0263.jpg b/images/img_folder/airplanes/image_0263.jpg new file mode 100644 index 0000000..eea3327 Binary files /dev/null and b/images/img_folder/airplanes/image_0263.jpg differ diff --git a/images/img_folder/airplanes/image_0264.jpg b/images/img_folder/airplanes/image_0264.jpg new file mode 100644 index 0000000..c9ca471 Binary files /dev/null and b/images/img_folder/airplanes/image_0264.jpg differ diff --git a/images/img_folder/airplanes/image_0265.jpg b/images/img_folder/airplanes/image_0265.jpg new file mode 100644 index 0000000..fd2cf8a Binary files /dev/null and b/images/img_folder/airplanes/image_0265.jpg differ diff --git a/images/img_folder/airplanes/image_0266.jpg b/images/img_folder/airplanes/image_0266.jpg new file mode 100644 index 0000000..3498b5a Binary files /dev/null and b/images/img_folder/airplanes/image_0266.jpg differ diff --git a/images/img_folder/airplanes/image_0267.jpg b/images/img_folder/airplanes/image_0267.jpg new file mode 100644 index 0000000..1a272c6 Binary files /dev/null and b/images/img_folder/airplanes/image_0267.jpg differ diff --git a/images/img_folder/airplanes/image_0268.jpg b/images/img_folder/airplanes/image_0268.jpg new file mode 100644 index 0000000..a59e933 Binary files /dev/null and b/images/img_folder/airplanes/image_0268.jpg differ diff --git a/images/img_folder/airplanes/image_0269.jpg b/images/img_folder/airplanes/image_0269.jpg new file mode 100644 index 0000000..03005ea Binary files /dev/null and b/images/img_folder/airplanes/image_0269.jpg differ diff --git a/images/img_folder/airplanes/image_0270.jpg b/images/img_folder/airplanes/image_0270.jpg new file mode 100644 index 0000000..4eaf183 Binary files /dev/null and b/images/img_folder/airplanes/image_0270.jpg differ diff --git a/images/img_folder/airplanes/image_0271.jpg b/images/img_folder/airplanes/image_0271.jpg new file mode 100644 index 0000000..5a0871e Binary files /dev/null and b/images/img_folder/airplanes/image_0271.jpg differ diff --git a/images/img_folder/airplanes/image_0272.jpg b/images/img_folder/airplanes/image_0272.jpg new file mode 100644 index 0000000..495148a Binary files /dev/null and b/images/img_folder/airplanes/image_0272.jpg differ diff --git a/images/img_folder/airplanes/image_0273.jpg b/images/img_folder/airplanes/image_0273.jpg new file mode 100644 index 0000000..b86ef5a Binary files /dev/null and b/images/img_folder/airplanes/image_0273.jpg differ diff --git a/images/img_folder/airplanes/image_0274.jpg b/images/img_folder/airplanes/image_0274.jpg new file mode 100644 index 0000000..da1faae Binary files /dev/null and b/images/img_folder/airplanes/image_0274.jpg differ diff --git a/images/img_folder/airplanes/image_0275.jpg b/images/img_folder/airplanes/image_0275.jpg new file mode 100644 index 0000000..319c49b Binary files /dev/null and b/images/img_folder/airplanes/image_0275.jpg differ diff --git a/images/img_folder/airplanes/image_0276.jpg b/images/img_folder/airplanes/image_0276.jpg new file mode 100644 index 0000000..f1322d3 Binary files /dev/null and b/images/img_folder/airplanes/image_0276.jpg differ diff --git a/images/img_folder/airplanes/image_0277.jpg b/images/img_folder/airplanes/image_0277.jpg new file mode 100644 index 0000000..aa2a022 Binary files /dev/null and b/images/img_folder/airplanes/image_0277.jpg differ diff --git a/images/img_folder/airplanes/image_0278.jpg b/images/img_folder/airplanes/image_0278.jpg new file mode 100644 index 0000000..98a7766 Binary files /dev/null and b/images/img_folder/airplanes/image_0278.jpg differ diff --git a/images/img_folder/airplanes/image_0279.jpg b/images/img_folder/airplanes/image_0279.jpg new file mode 100644 index 0000000..68f0eeb Binary files /dev/null and b/images/img_folder/airplanes/image_0279.jpg differ diff --git a/images/img_folder/airplanes/image_0280.jpg b/images/img_folder/airplanes/image_0280.jpg new file mode 100644 index 0000000..67e407c Binary files /dev/null and b/images/img_folder/airplanes/image_0280.jpg differ diff --git a/images/img_folder/airplanes/image_0281.jpg b/images/img_folder/airplanes/image_0281.jpg new file mode 100644 index 0000000..dee7406 Binary files /dev/null and b/images/img_folder/airplanes/image_0281.jpg differ diff --git a/images/img_folder/airplanes/image_0282.jpg b/images/img_folder/airplanes/image_0282.jpg new file mode 100644 index 0000000..f2a5b8b Binary files /dev/null and b/images/img_folder/airplanes/image_0282.jpg differ diff --git a/images/img_folder/airplanes/image_0283.jpg b/images/img_folder/airplanes/image_0283.jpg new file mode 100644 index 0000000..8580e04 Binary files /dev/null and b/images/img_folder/airplanes/image_0283.jpg differ diff --git a/images/img_folder/airplanes/image_0284.jpg b/images/img_folder/airplanes/image_0284.jpg new file mode 100644 index 0000000..68a3918 Binary files /dev/null and b/images/img_folder/airplanes/image_0284.jpg differ diff --git a/images/img_folder/airplanes/image_0285.jpg b/images/img_folder/airplanes/image_0285.jpg new file mode 100644 index 0000000..8672bc9 Binary files /dev/null and b/images/img_folder/airplanes/image_0285.jpg differ diff --git a/images/img_folder/airplanes/image_0286.jpg b/images/img_folder/airplanes/image_0286.jpg new file mode 100644 index 0000000..9bbf65e Binary files /dev/null and b/images/img_folder/airplanes/image_0286.jpg differ diff --git a/images/img_folder/airplanes/image_0287.jpg b/images/img_folder/airplanes/image_0287.jpg new file mode 100644 index 0000000..ba6b450 Binary files /dev/null and b/images/img_folder/airplanes/image_0287.jpg differ diff --git a/images/img_folder/airplanes/image_0288.jpg b/images/img_folder/airplanes/image_0288.jpg new file mode 100644 index 0000000..c4ce74c Binary files /dev/null and b/images/img_folder/airplanes/image_0288.jpg differ diff --git a/images/img_folder/airplanes/image_0289.jpg b/images/img_folder/airplanes/image_0289.jpg new file mode 100644 index 0000000..75b9d68 Binary files /dev/null and b/images/img_folder/airplanes/image_0289.jpg differ diff --git a/images/img_folder/airplanes/image_0290.jpg b/images/img_folder/airplanes/image_0290.jpg new file mode 100644 index 0000000..1591acc Binary files /dev/null and b/images/img_folder/airplanes/image_0290.jpg differ diff --git a/images/img_folder/airplanes/image_0291.jpg b/images/img_folder/airplanes/image_0291.jpg new file mode 100644 index 0000000..cde8d21 Binary files /dev/null and b/images/img_folder/airplanes/image_0291.jpg differ diff --git a/images/img_folder/airplanes/image_0292.jpg b/images/img_folder/airplanes/image_0292.jpg new file mode 100644 index 0000000..1af17f1 Binary files /dev/null and b/images/img_folder/airplanes/image_0292.jpg differ diff --git a/images/img_folder/airplanes/image_0293.jpg b/images/img_folder/airplanes/image_0293.jpg new file mode 100644 index 0000000..f910381 Binary files /dev/null and b/images/img_folder/airplanes/image_0293.jpg differ diff --git a/images/img_folder/airplanes/image_0294.jpg b/images/img_folder/airplanes/image_0294.jpg new file mode 100644 index 0000000..28b9908 Binary files /dev/null and b/images/img_folder/airplanes/image_0294.jpg differ diff --git a/images/img_folder/airplanes/image_0295.jpg b/images/img_folder/airplanes/image_0295.jpg new file mode 100644 index 0000000..2d68ee6 Binary files /dev/null and b/images/img_folder/airplanes/image_0295.jpg differ diff --git a/images/img_folder/airplanes/image_0296.jpg b/images/img_folder/airplanes/image_0296.jpg new file mode 100644 index 0000000..d428218 Binary files /dev/null and b/images/img_folder/airplanes/image_0296.jpg differ diff --git a/images/img_folder/airplanes/image_0297.jpg b/images/img_folder/airplanes/image_0297.jpg new file mode 100644 index 0000000..d2bd49c Binary files /dev/null and b/images/img_folder/airplanes/image_0297.jpg differ diff --git a/images/img_folder/airplanes/image_0298.jpg b/images/img_folder/airplanes/image_0298.jpg new file mode 100644 index 0000000..38abb40 Binary files /dev/null and b/images/img_folder/airplanes/image_0298.jpg differ diff --git a/images/img_folder/airplanes/image_0299.jpg b/images/img_folder/airplanes/image_0299.jpg new file mode 100644 index 0000000..4efa257 Binary files /dev/null and b/images/img_folder/airplanes/image_0299.jpg differ diff --git a/images/img_folder/airplanes/image_0300.jpg b/images/img_folder/airplanes/image_0300.jpg new file mode 100644 index 0000000..6fab061 Binary files /dev/null and b/images/img_folder/airplanes/image_0300.jpg differ diff --git a/images/img_folder/airplanes/image_0301.jpg b/images/img_folder/airplanes/image_0301.jpg new file mode 100644 index 0000000..114e0b2 Binary files /dev/null and b/images/img_folder/airplanes/image_0301.jpg differ diff --git a/images/img_folder/airplanes/image_0302.jpg b/images/img_folder/airplanes/image_0302.jpg new file mode 100644 index 0000000..76e5504 Binary files /dev/null and b/images/img_folder/airplanes/image_0302.jpg differ diff --git a/images/img_folder/airplanes/image_0303.jpg b/images/img_folder/airplanes/image_0303.jpg new file mode 100644 index 0000000..5573c36 Binary files /dev/null and b/images/img_folder/airplanes/image_0303.jpg differ diff --git a/images/img_folder/airplanes/image_0304.jpg b/images/img_folder/airplanes/image_0304.jpg new file mode 100644 index 0000000..4080aaa Binary files /dev/null and b/images/img_folder/airplanes/image_0304.jpg differ diff --git a/images/img_folder/airplanes/image_0305.jpg b/images/img_folder/airplanes/image_0305.jpg new file mode 100644 index 0000000..cea5fb7 Binary files /dev/null and b/images/img_folder/airplanes/image_0305.jpg differ diff --git a/images/img_folder/airplanes/image_0306.jpg b/images/img_folder/airplanes/image_0306.jpg new file mode 100644 index 0000000..d8b36b3 Binary files /dev/null and b/images/img_folder/airplanes/image_0306.jpg differ diff --git a/images/img_folder/airplanes/image_0307.jpg b/images/img_folder/airplanes/image_0307.jpg new file mode 100644 index 0000000..c7fe7b1 Binary files /dev/null and b/images/img_folder/airplanes/image_0307.jpg differ diff --git a/images/img_folder/airplanes/image_0308.jpg b/images/img_folder/airplanes/image_0308.jpg new file mode 100644 index 0000000..c9f6c3a Binary files /dev/null and b/images/img_folder/airplanes/image_0308.jpg differ diff --git a/images/img_folder/airplanes/image_0309.jpg b/images/img_folder/airplanes/image_0309.jpg new file mode 100644 index 0000000..8d77348 Binary files /dev/null and b/images/img_folder/airplanes/image_0309.jpg differ diff --git a/images/img_folder/airplanes/image_0310.jpg b/images/img_folder/airplanes/image_0310.jpg new file mode 100644 index 0000000..bd25b6c Binary files /dev/null and b/images/img_folder/airplanes/image_0310.jpg differ diff --git a/images/img_folder/airplanes/image_0311.jpg b/images/img_folder/airplanes/image_0311.jpg new file mode 100644 index 0000000..622d545 Binary files /dev/null and b/images/img_folder/airplanes/image_0311.jpg differ diff --git a/images/img_folder/airplanes/image_0312.jpg b/images/img_folder/airplanes/image_0312.jpg new file mode 100644 index 0000000..f49231f Binary files /dev/null and b/images/img_folder/airplanes/image_0312.jpg differ diff --git a/images/img_folder/airplanes/image_0313.jpg b/images/img_folder/airplanes/image_0313.jpg new file mode 100644 index 0000000..2be6dfb Binary files /dev/null and b/images/img_folder/airplanes/image_0313.jpg differ diff --git a/images/img_folder/airplanes/image_0314.jpg b/images/img_folder/airplanes/image_0314.jpg new file mode 100644 index 0000000..fd98f69 Binary files /dev/null and b/images/img_folder/airplanes/image_0314.jpg differ diff --git a/images/img_folder/airplanes/image_0315.jpg b/images/img_folder/airplanes/image_0315.jpg new file mode 100644 index 0000000..1ec9373 Binary files /dev/null and b/images/img_folder/airplanes/image_0315.jpg differ diff --git a/images/img_folder/airplanes/image_0316.jpg b/images/img_folder/airplanes/image_0316.jpg new file mode 100644 index 0000000..9cd2d74 Binary files /dev/null and b/images/img_folder/airplanes/image_0316.jpg differ diff --git a/images/img_folder/airplanes/image_0317.jpg b/images/img_folder/airplanes/image_0317.jpg new file mode 100644 index 0000000..a45c70d Binary files /dev/null and b/images/img_folder/airplanes/image_0317.jpg differ diff --git a/images/img_folder/airplanes/image_0318.jpg b/images/img_folder/airplanes/image_0318.jpg new file mode 100644 index 0000000..c506892 Binary files /dev/null and b/images/img_folder/airplanes/image_0318.jpg differ diff --git a/images/img_folder/airplanes/image_0319.jpg b/images/img_folder/airplanes/image_0319.jpg new file mode 100644 index 0000000..a9cda9d Binary files /dev/null and b/images/img_folder/airplanes/image_0319.jpg differ diff --git a/images/img_folder/airplanes/image_0320.jpg b/images/img_folder/airplanes/image_0320.jpg new file mode 100644 index 0000000..245ab34 Binary files /dev/null and b/images/img_folder/airplanes/image_0320.jpg differ diff --git a/images/img_folder/airplanes/image_0321.jpg b/images/img_folder/airplanes/image_0321.jpg new file mode 100644 index 0000000..c89543e Binary files /dev/null and b/images/img_folder/airplanes/image_0321.jpg differ diff --git a/images/img_folder/airplanes/image_0322.jpg b/images/img_folder/airplanes/image_0322.jpg new file mode 100644 index 0000000..46847ad Binary files /dev/null and b/images/img_folder/airplanes/image_0322.jpg differ diff --git a/images/img_folder/airplanes/image_0323.jpg b/images/img_folder/airplanes/image_0323.jpg new file mode 100644 index 0000000..f7aaf08 Binary files /dev/null and b/images/img_folder/airplanes/image_0323.jpg differ diff --git a/images/img_folder/airplanes/image_0324.jpg b/images/img_folder/airplanes/image_0324.jpg new file mode 100644 index 0000000..c5f74d1 Binary files /dev/null and b/images/img_folder/airplanes/image_0324.jpg differ diff --git a/images/img_folder/airplanes/image_0325.jpg b/images/img_folder/airplanes/image_0325.jpg new file mode 100644 index 0000000..60586d6 Binary files /dev/null and b/images/img_folder/airplanes/image_0325.jpg differ diff --git a/images/img_folder/airplanes/image_0326.jpg b/images/img_folder/airplanes/image_0326.jpg new file mode 100644 index 0000000..00bacbe Binary files /dev/null and b/images/img_folder/airplanes/image_0326.jpg differ diff --git a/images/img_folder/airplanes/image_0327.jpg b/images/img_folder/airplanes/image_0327.jpg new file mode 100644 index 0000000..06b687a Binary files /dev/null and b/images/img_folder/airplanes/image_0327.jpg differ diff --git a/images/img_folder/airplanes/image_0328.jpg b/images/img_folder/airplanes/image_0328.jpg new file mode 100644 index 0000000..2569e0c Binary files /dev/null and b/images/img_folder/airplanes/image_0328.jpg differ diff --git a/images/img_folder/airplanes/image_0329.jpg b/images/img_folder/airplanes/image_0329.jpg new file mode 100644 index 0000000..a6d41fb Binary files /dev/null and b/images/img_folder/airplanes/image_0329.jpg differ diff --git a/images/img_folder/airplanes/image_0330.jpg b/images/img_folder/airplanes/image_0330.jpg new file mode 100644 index 0000000..17de9e3 Binary files /dev/null and b/images/img_folder/airplanes/image_0330.jpg differ diff --git a/images/img_folder/airplanes/image_0331.jpg b/images/img_folder/airplanes/image_0331.jpg new file mode 100644 index 0000000..10b522f Binary files /dev/null and b/images/img_folder/airplanes/image_0331.jpg differ diff --git a/images/img_folder/airplanes/image_0332.jpg b/images/img_folder/airplanes/image_0332.jpg new file mode 100644 index 0000000..083839b Binary files /dev/null and b/images/img_folder/airplanes/image_0332.jpg differ diff --git a/images/img_folder/airplanes/image_0333.jpg b/images/img_folder/airplanes/image_0333.jpg new file mode 100644 index 0000000..4a778df Binary files /dev/null and b/images/img_folder/airplanes/image_0333.jpg differ diff --git a/images/img_folder/airplanes/image_0334.jpg b/images/img_folder/airplanes/image_0334.jpg new file mode 100644 index 0000000..8f52091 Binary files /dev/null and b/images/img_folder/airplanes/image_0334.jpg differ diff --git a/images/img_folder/airplanes/image_0335.jpg b/images/img_folder/airplanes/image_0335.jpg new file mode 100644 index 0000000..92cfd02 Binary files /dev/null and b/images/img_folder/airplanes/image_0335.jpg differ diff --git a/images/img_folder/airplanes/image_0336.jpg b/images/img_folder/airplanes/image_0336.jpg new file mode 100644 index 0000000..9bd9126 Binary files /dev/null and b/images/img_folder/airplanes/image_0336.jpg differ diff --git a/images/img_folder/airplanes/image_0337.jpg b/images/img_folder/airplanes/image_0337.jpg new file mode 100644 index 0000000..bbd7cc2 Binary files /dev/null and b/images/img_folder/airplanes/image_0337.jpg differ diff --git a/images/img_folder/airplanes/image_0338.jpg b/images/img_folder/airplanes/image_0338.jpg new file mode 100644 index 0000000..7ce80c0 Binary files /dev/null and b/images/img_folder/airplanes/image_0338.jpg differ diff --git a/images/img_folder/airplanes/image_0339.jpg b/images/img_folder/airplanes/image_0339.jpg new file mode 100644 index 0000000..e08d7bd Binary files /dev/null and b/images/img_folder/airplanes/image_0339.jpg differ diff --git a/images/img_folder/airplanes/image_0340.jpg b/images/img_folder/airplanes/image_0340.jpg new file mode 100644 index 0000000..9269a4e Binary files /dev/null and b/images/img_folder/airplanes/image_0340.jpg differ diff --git a/images/img_folder/airplanes/image_0341.jpg b/images/img_folder/airplanes/image_0341.jpg new file mode 100644 index 0000000..5137134 Binary files /dev/null and b/images/img_folder/airplanes/image_0341.jpg differ diff --git a/images/img_folder/airplanes/image_0342.jpg b/images/img_folder/airplanes/image_0342.jpg new file mode 100644 index 0000000..325f619 Binary files /dev/null and b/images/img_folder/airplanes/image_0342.jpg differ diff --git a/images/img_folder/airplanes/image_0343.jpg b/images/img_folder/airplanes/image_0343.jpg new file mode 100644 index 0000000..c6c5bb4 Binary files /dev/null and b/images/img_folder/airplanes/image_0343.jpg differ diff --git a/images/img_folder/airplanes/image_0344.jpg b/images/img_folder/airplanes/image_0344.jpg new file mode 100644 index 0000000..a13a194 Binary files /dev/null and b/images/img_folder/airplanes/image_0344.jpg differ diff --git a/images/img_folder/airplanes/image_0345.jpg b/images/img_folder/airplanes/image_0345.jpg new file mode 100644 index 0000000..e0509de Binary files /dev/null and b/images/img_folder/airplanes/image_0345.jpg differ diff --git a/images/img_folder/airplanes/image_0346.jpg b/images/img_folder/airplanes/image_0346.jpg new file mode 100644 index 0000000..be0388d Binary files /dev/null and b/images/img_folder/airplanes/image_0346.jpg differ diff --git a/images/img_folder/airplanes/image_0347.jpg b/images/img_folder/airplanes/image_0347.jpg new file mode 100644 index 0000000..5c3c5e2 Binary files /dev/null and b/images/img_folder/airplanes/image_0347.jpg differ diff --git a/images/img_folder/airplanes/image_0348.jpg b/images/img_folder/airplanes/image_0348.jpg new file mode 100644 index 0000000..4a1c5ef Binary files /dev/null and b/images/img_folder/airplanes/image_0348.jpg differ diff --git a/images/img_folder/airplanes/image_0349.jpg b/images/img_folder/airplanes/image_0349.jpg new file mode 100644 index 0000000..3413099 Binary files /dev/null and b/images/img_folder/airplanes/image_0349.jpg differ diff --git a/images/img_folder/airplanes/image_0350.jpg b/images/img_folder/airplanes/image_0350.jpg new file mode 100644 index 0000000..f51acd6 Binary files /dev/null and b/images/img_folder/airplanes/image_0350.jpg differ diff --git a/images/img_folder/airplanes/image_0351.jpg b/images/img_folder/airplanes/image_0351.jpg new file mode 100644 index 0000000..f3e1c7a Binary files /dev/null and b/images/img_folder/airplanes/image_0351.jpg differ diff --git a/images/img_folder/airplanes/image_0352.jpg b/images/img_folder/airplanes/image_0352.jpg new file mode 100644 index 0000000..1d8434f Binary files /dev/null and b/images/img_folder/airplanes/image_0352.jpg differ diff --git a/images/img_folder/airplanes/image_0353.jpg b/images/img_folder/airplanes/image_0353.jpg new file mode 100644 index 0000000..ef9f875 Binary files /dev/null and b/images/img_folder/airplanes/image_0353.jpg differ diff --git a/images/img_folder/airplanes/image_0354.jpg b/images/img_folder/airplanes/image_0354.jpg new file mode 100644 index 0000000..b40c1e2 Binary files /dev/null and b/images/img_folder/airplanes/image_0354.jpg differ diff --git a/images/img_folder/airplanes/image_0355.jpg b/images/img_folder/airplanes/image_0355.jpg new file mode 100644 index 0000000..2385f79 Binary files /dev/null and b/images/img_folder/airplanes/image_0355.jpg differ diff --git a/images/img_folder/airplanes/image_0356.jpg b/images/img_folder/airplanes/image_0356.jpg new file mode 100644 index 0000000..98a245c Binary files /dev/null and b/images/img_folder/airplanes/image_0356.jpg differ diff --git a/images/img_folder/airplanes/image_0357.jpg b/images/img_folder/airplanes/image_0357.jpg new file mode 100644 index 0000000..0696adf Binary files /dev/null and b/images/img_folder/airplanes/image_0357.jpg differ diff --git a/images/img_folder/airplanes/image_0358.jpg b/images/img_folder/airplanes/image_0358.jpg new file mode 100644 index 0000000..64fdc75 Binary files /dev/null and b/images/img_folder/airplanes/image_0358.jpg differ diff --git a/images/img_folder/airplanes/image_0359.jpg b/images/img_folder/airplanes/image_0359.jpg new file mode 100644 index 0000000..ab8a693 Binary files /dev/null and b/images/img_folder/airplanes/image_0359.jpg differ diff --git a/images/img_folder/airplanes/image_0360.jpg b/images/img_folder/airplanes/image_0360.jpg new file mode 100644 index 0000000..e74a485 Binary files /dev/null and b/images/img_folder/airplanes/image_0360.jpg differ diff --git a/images/img_folder/airplanes/image_0361.jpg b/images/img_folder/airplanes/image_0361.jpg new file mode 100644 index 0000000..474b3a4 Binary files /dev/null and b/images/img_folder/airplanes/image_0361.jpg differ diff --git a/images/img_folder/airplanes/image_0362.jpg b/images/img_folder/airplanes/image_0362.jpg new file mode 100644 index 0000000..5ac47ad Binary files /dev/null and b/images/img_folder/airplanes/image_0362.jpg differ diff --git a/images/img_folder/airplanes/image_0363.jpg b/images/img_folder/airplanes/image_0363.jpg new file mode 100644 index 0000000..cfaa888 Binary files /dev/null and b/images/img_folder/airplanes/image_0363.jpg differ diff --git a/images/img_folder/airplanes/image_0364.jpg b/images/img_folder/airplanes/image_0364.jpg new file mode 100644 index 0000000..20c7fcb Binary files /dev/null and b/images/img_folder/airplanes/image_0364.jpg differ diff --git a/images/img_folder/airplanes/image_0365.jpg b/images/img_folder/airplanes/image_0365.jpg new file mode 100644 index 0000000..d7dec3d Binary files /dev/null and b/images/img_folder/airplanes/image_0365.jpg differ diff --git a/images/img_folder/airplanes/image_0366.jpg b/images/img_folder/airplanes/image_0366.jpg new file mode 100644 index 0000000..9f81aaa Binary files /dev/null and b/images/img_folder/airplanes/image_0366.jpg differ diff --git a/images/img_folder/airplanes/image_0367.jpg b/images/img_folder/airplanes/image_0367.jpg new file mode 100644 index 0000000..9328e98 Binary files /dev/null and b/images/img_folder/airplanes/image_0367.jpg differ diff --git a/images/img_folder/airplanes/image_0368.jpg b/images/img_folder/airplanes/image_0368.jpg new file mode 100644 index 0000000..6e666c1 Binary files /dev/null and b/images/img_folder/airplanes/image_0368.jpg differ diff --git a/images/img_folder/airplanes/image_0369.jpg b/images/img_folder/airplanes/image_0369.jpg new file mode 100644 index 0000000..8ddf92f Binary files /dev/null and b/images/img_folder/airplanes/image_0369.jpg differ diff --git a/images/img_folder/airplanes/image_0370.jpg b/images/img_folder/airplanes/image_0370.jpg new file mode 100644 index 0000000..e44d3ad Binary files /dev/null and b/images/img_folder/airplanes/image_0370.jpg differ diff --git a/images/img_folder/airplanes/image_0371.jpg b/images/img_folder/airplanes/image_0371.jpg new file mode 100644 index 0000000..d0d4698 Binary files /dev/null and b/images/img_folder/airplanes/image_0371.jpg differ diff --git a/images/img_folder/airplanes/image_0372.jpg b/images/img_folder/airplanes/image_0372.jpg new file mode 100644 index 0000000..a0c9af7 Binary files /dev/null and b/images/img_folder/airplanes/image_0372.jpg differ diff --git a/images/img_folder/airplanes/image_0373.jpg b/images/img_folder/airplanes/image_0373.jpg new file mode 100644 index 0000000..18d6efc Binary files /dev/null and b/images/img_folder/airplanes/image_0373.jpg differ diff --git a/images/img_folder/airplanes/image_0374.jpg b/images/img_folder/airplanes/image_0374.jpg new file mode 100644 index 0000000..04e94ac Binary files /dev/null and b/images/img_folder/airplanes/image_0374.jpg differ diff --git a/images/img_folder/airplanes/image_0375.jpg b/images/img_folder/airplanes/image_0375.jpg new file mode 100644 index 0000000..38ed9f6 Binary files /dev/null and b/images/img_folder/airplanes/image_0375.jpg differ diff --git a/images/img_folder/airplanes/image_0376.jpg b/images/img_folder/airplanes/image_0376.jpg new file mode 100644 index 0000000..7ec0bca Binary files /dev/null and b/images/img_folder/airplanes/image_0376.jpg differ diff --git a/images/img_folder/airplanes/image_0377.jpg b/images/img_folder/airplanes/image_0377.jpg new file mode 100644 index 0000000..f9aef39 Binary files /dev/null and b/images/img_folder/airplanes/image_0377.jpg differ diff --git a/images/img_folder/airplanes/image_0378.jpg b/images/img_folder/airplanes/image_0378.jpg new file mode 100644 index 0000000..9568def Binary files /dev/null and b/images/img_folder/airplanes/image_0378.jpg differ diff --git a/images/img_folder/airplanes/image_0379.jpg b/images/img_folder/airplanes/image_0379.jpg new file mode 100644 index 0000000..45b429b Binary files /dev/null and b/images/img_folder/airplanes/image_0379.jpg differ diff --git a/images/img_folder/airplanes/image_0380.jpg b/images/img_folder/airplanes/image_0380.jpg new file mode 100644 index 0000000..3eab945 Binary files /dev/null and b/images/img_folder/airplanes/image_0380.jpg differ diff --git a/images/img_folder/airplanes/image_0381.jpg b/images/img_folder/airplanes/image_0381.jpg new file mode 100644 index 0000000..224e466 Binary files /dev/null and b/images/img_folder/airplanes/image_0381.jpg differ diff --git a/images/img_folder/airplanes/image_0382.jpg b/images/img_folder/airplanes/image_0382.jpg new file mode 100644 index 0000000..84863db Binary files /dev/null and b/images/img_folder/airplanes/image_0382.jpg differ diff --git a/images/img_folder/airplanes/image_0383.jpg b/images/img_folder/airplanes/image_0383.jpg new file mode 100644 index 0000000..3e1a17e Binary files /dev/null and b/images/img_folder/airplanes/image_0383.jpg differ diff --git a/images/img_folder/airplanes/image_0384.jpg b/images/img_folder/airplanes/image_0384.jpg new file mode 100644 index 0000000..da4034c Binary files /dev/null and b/images/img_folder/airplanes/image_0384.jpg differ diff --git a/images/img_folder/airplanes/image_0385.jpg b/images/img_folder/airplanes/image_0385.jpg new file mode 100644 index 0000000..8aab22d Binary files /dev/null and b/images/img_folder/airplanes/image_0385.jpg differ diff --git a/images/img_folder/airplanes/image_0386.jpg b/images/img_folder/airplanes/image_0386.jpg new file mode 100644 index 0000000..9161925 Binary files /dev/null and b/images/img_folder/airplanes/image_0386.jpg differ diff --git a/images/img_folder/airplanes/image_0387.jpg b/images/img_folder/airplanes/image_0387.jpg new file mode 100644 index 0000000..db04ef1 Binary files /dev/null and b/images/img_folder/airplanes/image_0387.jpg differ diff --git a/images/img_folder/airplanes/image_0388.jpg b/images/img_folder/airplanes/image_0388.jpg new file mode 100644 index 0000000..2aca789 Binary files /dev/null and b/images/img_folder/airplanes/image_0388.jpg differ diff --git a/images/img_folder/airplanes/image_0389.jpg b/images/img_folder/airplanes/image_0389.jpg new file mode 100644 index 0000000..5a6b1ec Binary files /dev/null and b/images/img_folder/airplanes/image_0389.jpg differ diff --git a/images/img_folder/airplanes/image_0390.jpg b/images/img_folder/airplanes/image_0390.jpg new file mode 100644 index 0000000..993c763 Binary files /dev/null and b/images/img_folder/airplanes/image_0390.jpg differ diff --git a/images/img_folder/airplanes/image_0391.jpg b/images/img_folder/airplanes/image_0391.jpg new file mode 100644 index 0000000..c9799bb Binary files /dev/null and b/images/img_folder/airplanes/image_0391.jpg differ diff --git a/images/img_folder/airplanes/image_0392.jpg b/images/img_folder/airplanes/image_0392.jpg new file mode 100644 index 0000000..6f5ea91 Binary files /dev/null and b/images/img_folder/airplanes/image_0392.jpg differ diff --git a/images/img_folder/airplanes/image_0393.jpg b/images/img_folder/airplanes/image_0393.jpg new file mode 100644 index 0000000..e41d19a Binary files /dev/null and b/images/img_folder/airplanes/image_0393.jpg differ diff --git a/images/img_folder/airplanes/image_0394.jpg b/images/img_folder/airplanes/image_0394.jpg new file mode 100644 index 0000000..6a78506 Binary files /dev/null and b/images/img_folder/airplanes/image_0394.jpg differ diff --git a/images/img_folder/airplanes/image_0395.jpg b/images/img_folder/airplanes/image_0395.jpg new file mode 100644 index 0000000..cc9e178 Binary files /dev/null and b/images/img_folder/airplanes/image_0395.jpg differ diff --git a/images/img_folder/airplanes/image_0396.jpg b/images/img_folder/airplanes/image_0396.jpg new file mode 100644 index 0000000..3bb4190 Binary files /dev/null and b/images/img_folder/airplanes/image_0396.jpg differ diff --git a/images/img_folder/airplanes/image_0397.jpg b/images/img_folder/airplanes/image_0397.jpg new file mode 100644 index 0000000..4df922f Binary files /dev/null and b/images/img_folder/airplanes/image_0397.jpg differ diff --git a/images/img_folder/airplanes/image_0398.jpg b/images/img_folder/airplanes/image_0398.jpg new file mode 100644 index 0000000..46ec529 Binary files /dev/null and b/images/img_folder/airplanes/image_0398.jpg differ diff --git a/images/img_folder/airplanes/image_0399.jpg b/images/img_folder/airplanes/image_0399.jpg new file mode 100644 index 0000000..fc0b1bf Binary files /dev/null and b/images/img_folder/airplanes/image_0399.jpg differ diff --git a/images/img_folder/airplanes/image_0400.jpg b/images/img_folder/airplanes/image_0400.jpg new file mode 100644 index 0000000..9d3c4a2 Binary files /dev/null and b/images/img_folder/airplanes/image_0400.jpg differ diff --git a/images/img_folder/airplanes/image_0401.jpg b/images/img_folder/airplanes/image_0401.jpg new file mode 100644 index 0000000..4d862cb Binary files /dev/null and b/images/img_folder/airplanes/image_0401.jpg differ diff --git a/images/img_folder/airplanes/image_0402.jpg b/images/img_folder/airplanes/image_0402.jpg new file mode 100644 index 0000000..75561b4 Binary files /dev/null and b/images/img_folder/airplanes/image_0402.jpg differ diff --git a/images/img_folder/airplanes/image_0403.jpg b/images/img_folder/airplanes/image_0403.jpg new file mode 100644 index 0000000..1ccee71 Binary files /dev/null and b/images/img_folder/airplanes/image_0403.jpg differ diff --git a/images/img_folder/airplanes/image_0404.jpg b/images/img_folder/airplanes/image_0404.jpg new file mode 100644 index 0000000..247842f Binary files /dev/null and b/images/img_folder/airplanes/image_0404.jpg differ diff --git a/images/img_folder/airplanes/image_0405.jpg b/images/img_folder/airplanes/image_0405.jpg new file mode 100644 index 0000000..ab3cf40 Binary files /dev/null and b/images/img_folder/airplanes/image_0405.jpg differ diff --git a/images/img_folder/airplanes/image_0406.jpg b/images/img_folder/airplanes/image_0406.jpg new file mode 100644 index 0000000..8740168 Binary files /dev/null and b/images/img_folder/airplanes/image_0406.jpg differ diff --git a/images/img_folder/airplanes/image_0407.jpg b/images/img_folder/airplanes/image_0407.jpg new file mode 100644 index 0000000..044dc3f Binary files /dev/null and b/images/img_folder/airplanes/image_0407.jpg differ diff --git a/images/img_folder/airplanes/image_0408.jpg b/images/img_folder/airplanes/image_0408.jpg new file mode 100644 index 0000000..95fa55b Binary files /dev/null and b/images/img_folder/airplanes/image_0408.jpg differ diff --git a/images/img_folder/airplanes/image_0409.jpg b/images/img_folder/airplanes/image_0409.jpg new file mode 100644 index 0000000..6e2b38b Binary files /dev/null and b/images/img_folder/airplanes/image_0409.jpg differ diff --git a/images/img_folder/airplanes/image_0410.jpg b/images/img_folder/airplanes/image_0410.jpg new file mode 100644 index 0000000..1555c24 Binary files /dev/null and b/images/img_folder/airplanes/image_0410.jpg differ diff --git a/images/img_folder/airplanes/image_0411.jpg b/images/img_folder/airplanes/image_0411.jpg new file mode 100644 index 0000000..0ba373b Binary files /dev/null and b/images/img_folder/airplanes/image_0411.jpg differ diff --git a/images/img_folder/airplanes/image_0412.jpg b/images/img_folder/airplanes/image_0412.jpg new file mode 100644 index 0000000..505323a Binary files /dev/null and b/images/img_folder/airplanes/image_0412.jpg differ diff --git a/images/img_folder/airplanes/image_0413.jpg b/images/img_folder/airplanes/image_0413.jpg new file mode 100644 index 0000000..56e09c7 Binary files /dev/null and b/images/img_folder/airplanes/image_0413.jpg differ diff --git a/images/img_folder/airplanes/image_0414.jpg b/images/img_folder/airplanes/image_0414.jpg new file mode 100644 index 0000000..c7f1643 Binary files /dev/null and b/images/img_folder/airplanes/image_0414.jpg differ diff --git a/images/img_folder/airplanes/image_0415.jpg b/images/img_folder/airplanes/image_0415.jpg new file mode 100644 index 0000000..da1633f Binary files /dev/null and b/images/img_folder/airplanes/image_0415.jpg differ diff --git a/images/img_folder/airplanes/image_0416.jpg b/images/img_folder/airplanes/image_0416.jpg new file mode 100644 index 0000000..5129dad Binary files /dev/null and b/images/img_folder/airplanes/image_0416.jpg differ diff --git a/images/img_folder/airplanes/image_0417.jpg b/images/img_folder/airplanes/image_0417.jpg new file mode 100644 index 0000000..14d9330 Binary files /dev/null and b/images/img_folder/airplanes/image_0417.jpg differ diff --git a/images/img_folder/airplanes/image_0418.jpg b/images/img_folder/airplanes/image_0418.jpg new file mode 100644 index 0000000..aa7012f Binary files /dev/null and b/images/img_folder/airplanes/image_0418.jpg differ diff --git a/images/img_folder/airplanes/image_0419.jpg b/images/img_folder/airplanes/image_0419.jpg new file mode 100644 index 0000000..1962b79 Binary files /dev/null and b/images/img_folder/airplanes/image_0419.jpg differ diff --git a/images/img_folder/airplanes/image_0420.jpg b/images/img_folder/airplanes/image_0420.jpg new file mode 100644 index 0000000..1961e8b Binary files /dev/null and b/images/img_folder/airplanes/image_0420.jpg differ diff --git a/images/img_folder/airplanes/image_0421.jpg b/images/img_folder/airplanes/image_0421.jpg new file mode 100644 index 0000000..5d5f762 Binary files /dev/null and b/images/img_folder/airplanes/image_0421.jpg differ diff --git a/images/img_folder/airplanes/image_0422.jpg b/images/img_folder/airplanes/image_0422.jpg new file mode 100644 index 0000000..ce2c7c3 Binary files /dev/null and b/images/img_folder/airplanes/image_0422.jpg differ diff --git a/images/img_folder/airplanes/image_0423.jpg b/images/img_folder/airplanes/image_0423.jpg new file mode 100644 index 0000000..06f88ff Binary files /dev/null and b/images/img_folder/airplanes/image_0423.jpg differ diff --git a/images/img_folder/airplanes/image_0424.jpg b/images/img_folder/airplanes/image_0424.jpg new file mode 100644 index 0000000..4b38759 Binary files /dev/null and b/images/img_folder/airplanes/image_0424.jpg differ diff --git a/images/img_folder/airplanes/image_0425.jpg b/images/img_folder/airplanes/image_0425.jpg new file mode 100644 index 0000000..97cae54 Binary files /dev/null and b/images/img_folder/airplanes/image_0425.jpg differ diff --git a/images/img_folder/airplanes/image_0426.jpg b/images/img_folder/airplanes/image_0426.jpg new file mode 100644 index 0000000..fa87308 Binary files /dev/null and b/images/img_folder/airplanes/image_0426.jpg differ diff --git a/images/img_folder/airplanes/image_0427.jpg b/images/img_folder/airplanes/image_0427.jpg new file mode 100644 index 0000000..216fdcb Binary files /dev/null and b/images/img_folder/airplanes/image_0427.jpg differ diff --git a/images/img_folder/airplanes/image_0428.jpg b/images/img_folder/airplanes/image_0428.jpg new file mode 100644 index 0000000..964de4a Binary files /dev/null and b/images/img_folder/airplanes/image_0428.jpg differ diff --git a/images/img_folder/airplanes/image_0429.jpg b/images/img_folder/airplanes/image_0429.jpg new file mode 100644 index 0000000..02f41b9 Binary files /dev/null and b/images/img_folder/airplanes/image_0429.jpg differ diff --git a/images/img_folder/airplanes/image_0430.jpg b/images/img_folder/airplanes/image_0430.jpg new file mode 100644 index 0000000..b9abb87 Binary files /dev/null and b/images/img_folder/airplanes/image_0430.jpg differ diff --git a/images/img_folder/airplanes/image_0431.jpg b/images/img_folder/airplanes/image_0431.jpg new file mode 100644 index 0000000..877a297 Binary files /dev/null and b/images/img_folder/airplanes/image_0431.jpg differ diff --git a/images/img_folder/airplanes/image_0432.jpg b/images/img_folder/airplanes/image_0432.jpg new file mode 100644 index 0000000..0450093 Binary files /dev/null and b/images/img_folder/airplanes/image_0432.jpg differ diff --git a/images/img_folder/airplanes/image_0433.jpg b/images/img_folder/airplanes/image_0433.jpg new file mode 100644 index 0000000..ffdec8f Binary files /dev/null and b/images/img_folder/airplanes/image_0433.jpg differ diff --git a/images/img_folder/airplanes/image_0434.jpg b/images/img_folder/airplanes/image_0434.jpg new file mode 100644 index 0000000..3687453 Binary files /dev/null and b/images/img_folder/airplanes/image_0434.jpg differ diff --git a/images/img_folder/airplanes/image_0435.jpg b/images/img_folder/airplanes/image_0435.jpg new file mode 100644 index 0000000..f5cadfe Binary files /dev/null and b/images/img_folder/airplanes/image_0435.jpg differ diff --git a/images/img_folder/airplanes/image_0436.jpg b/images/img_folder/airplanes/image_0436.jpg new file mode 100644 index 0000000..35dd5d2 Binary files /dev/null and b/images/img_folder/airplanes/image_0436.jpg differ diff --git a/images/img_folder/airplanes/image_0437.jpg b/images/img_folder/airplanes/image_0437.jpg new file mode 100644 index 0000000..f6f69fb Binary files /dev/null and b/images/img_folder/airplanes/image_0437.jpg differ diff --git a/images/img_folder/airplanes/image_0438.jpg b/images/img_folder/airplanes/image_0438.jpg new file mode 100644 index 0000000..43de82f Binary files /dev/null and b/images/img_folder/airplanes/image_0438.jpg differ diff --git a/images/img_folder/airplanes/image_0439.jpg b/images/img_folder/airplanes/image_0439.jpg new file mode 100644 index 0000000..c4ca816 Binary files /dev/null and b/images/img_folder/airplanes/image_0439.jpg differ diff --git a/images/img_folder/airplanes/image_0440.jpg b/images/img_folder/airplanes/image_0440.jpg new file mode 100644 index 0000000..e667930 Binary files /dev/null and b/images/img_folder/airplanes/image_0440.jpg differ diff --git a/images/img_folder/airplanes/image_0441.jpg b/images/img_folder/airplanes/image_0441.jpg new file mode 100644 index 0000000..80f46e7 Binary files /dev/null and b/images/img_folder/airplanes/image_0441.jpg differ diff --git a/images/img_folder/airplanes/image_0442.jpg b/images/img_folder/airplanes/image_0442.jpg new file mode 100644 index 0000000..f945d84 Binary files /dev/null and b/images/img_folder/airplanes/image_0442.jpg differ diff --git a/images/img_folder/airplanes/image_0443.jpg b/images/img_folder/airplanes/image_0443.jpg new file mode 100644 index 0000000..8110994 Binary files /dev/null and b/images/img_folder/airplanes/image_0443.jpg differ diff --git a/images/img_folder/airplanes/image_0444.jpg b/images/img_folder/airplanes/image_0444.jpg new file mode 100644 index 0000000..b7dab71 Binary files /dev/null and b/images/img_folder/airplanes/image_0444.jpg differ diff --git a/images/img_folder/airplanes/image_0445.jpg b/images/img_folder/airplanes/image_0445.jpg new file mode 100644 index 0000000..5fa5398 Binary files /dev/null and b/images/img_folder/airplanes/image_0445.jpg differ diff --git a/images/img_folder/airplanes/image_0446.jpg b/images/img_folder/airplanes/image_0446.jpg new file mode 100644 index 0000000..526b4b7 Binary files /dev/null and b/images/img_folder/airplanes/image_0446.jpg differ diff --git a/images/img_folder/airplanes/image_0447.jpg b/images/img_folder/airplanes/image_0447.jpg new file mode 100644 index 0000000..9629d82 Binary files /dev/null and b/images/img_folder/airplanes/image_0447.jpg differ diff --git a/images/img_folder/airplanes/image_0448.jpg b/images/img_folder/airplanes/image_0448.jpg new file mode 100644 index 0000000..daec97d Binary files /dev/null and b/images/img_folder/airplanes/image_0448.jpg differ diff --git a/images/img_folder/airplanes/image_0449.jpg b/images/img_folder/airplanes/image_0449.jpg new file mode 100644 index 0000000..e3135a9 Binary files /dev/null and b/images/img_folder/airplanes/image_0449.jpg differ diff --git a/images/img_folder/airplanes/image_0450.jpg b/images/img_folder/airplanes/image_0450.jpg new file mode 100644 index 0000000..305c064 Binary files /dev/null and b/images/img_folder/airplanes/image_0450.jpg differ diff --git a/images/img_folder/airplanes/image_0451.jpg b/images/img_folder/airplanes/image_0451.jpg new file mode 100644 index 0000000..4964ed3 Binary files /dev/null and b/images/img_folder/airplanes/image_0451.jpg differ diff --git a/images/img_folder/airplanes/image_0452.jpg b/images/img_folder/airplanes/image_0452.jpg new file mode 100644 index 0000000..ced3737 Binary files /dev/null and b/images/img_folder/airplanes/image_0452.jpg differ diff --git a/images/img_folder/airplanes/image_0453.jpg b/images/img_folder/airplanes/image_0453.jpg new file mode 100644 index 0000000..c665007 Binary files /dev/null and b/images/img_folder/airplanes/image_0453.jpg differ diff --git a/images/img_folder/airplanes/image_0454.jpg b/images/img_folder/airplanes/image_0454.jpg new file mode 100644 index 0000000..4a8542a Binary files /dev/null and b/images/img_folder/airplanes/image_0454.jpg differ diff --git a/images/img_folder/airplanes/image_0455.jpg b/images/img_folder/airplanes/image_0455.jpg new file mode 100644 index 0000000..55b2dd1 Binary files /dev/null and b/images/img_folder/airplanes/image_0455.jpg differ diff --git a/images/img_folder/airplanes/image_0456.jpg b/images/img_folder/airplanes/image_0456.jpg new file mode 100644 index 0000000..1edca3d Binary files /dev/null and b/images/img_folder/airplanes/image_0456.jpg differ diff --git a/images/img_folder/airplanes/image_0457.jpg b/images/img_folder/airplanes/image_0457.jpg new file mode 100644 index 0000000..d4180dc Binary files /dev/null and b/images/img_folder/airplanes/image_0457.jpg differ diff --git a/images/img_folder/airplanes/image_0458.jpg b/images/img_folder/airplanes/image_0458.jpg new file mode 100644 index 0000000..00d4245 Binary files /dev/null and b/images/img_folder/airplanes/image_0458.jpg differ diff --git a/images/img_folder/airplanes/image_0459.jpg b/images/img_folder/airplanes/image_0459.jpg new file mode 100644 index 0000000..0677845 Binary files /dev/null and b/images/img_folder/airplanes/image_0459.jpg differ diff --git a/images/img_folder/airplanes/image_0460.jpg b/images/img_folder/airplanes/image_0460.jpg new file mode 100644 index 0000000..238640a Binary files /dev/null and b/images/img_folder/airplanes/image_0460.jpg differ diff --git a/images/img_folder/airplanes/image_0461.jpg b/images/img_folder/airplanes/image_0461.jpg new file mode 100644 index 0000000..a391bd4 Binary files /dev/null and b/images/img_folder/airplanes/image_0461.jpg differ diff --git a/images/img_folder/airplanes/image_0462.jpg b/images/img_folder/airplanes/image_0462.jpg new file mode 100644 index 0000000..f2d1998 Binary files /dev/null and b/images/img_folder/airplanes/image_0462.jpg differ diff --git a/images/img_folder/airplanes/image_0463.jpg b/images/img_folder/airplanes/image_0463.jpg new file mode 100644 index 0000000..66dcf29 Binary files /dev/null and b/images/img_folder/airplanes/image_0463.jpg differ diff --git a/images/img_folder/airplanes/image_0464.jpg b/images/img_folder/airplanes/image_0464.jpg new file mode 100644 index 0000000..8e80c74 Binary files /dev/null and b/images/img_folder/airplanes/image_0464.jpg differ diff --git a/images/img_folder/airplanes/image_0465.jpg b/images/img_folder/airplanes/image_0465.jpg new file mode 100644 index 0000000..bb0cb06 Binary files /dev/null and b/images/img_folder/airplanes/image_0465.jpg differ diff --git a/images/img_folder/airplanes/image_0466.jpg b/images/img_folder/airplanes/image_0466.jpg new file mode 100644 index 0000000..e0a90bb Binary files /dev/null and b/images/img_folder/airplanes/image_0466.jpg differ diff --git a/images/img_folder/airplanes/image_0467.jpg b/images/img_folder/airplanes/image_0467.jpg new file mode 100644 index 0000000..8991683 Binary files /dev/null and b/images/img_folder/airplanes/image_0467.jpg differ diff --git a/images/img_folder/airplanes/image_0468.jpg b/images/img_folder/airplanes/image_0468.jpg new file mode 100644 index 0000000..8eb73bf Binary files /dev/null and b/images/img_folder/airplanes/image_0468.jpg differ diff --git a/images/img_folder/airplanes/image_0469.jpg b/images/img_folder/airplanes/image_0469.jpg new file mode 100644 index 0000000..263e9b0 Binary files /dev/null and b/images/img_folder/airplanes/image_0469.jpg differ diff --git a/images/img_folder/airplanes/image_0470.jpg b/images/img_folder/airplanes/image_0470.jpg new file mode 100644 index 0000000..de80a3e Binary files /dev/null and b/images/img_folder/airplanes/image_0470.jpg differ diff --git a/images/img_folder/airplanes/image_0471.jpg b/images/img_folder/airplanes/image_0471.jpg new file mode 100644 index 0000000..a032b14 Binary files /dev/null and b/images/img_folder/airplanes/image_0471.jpg differ diff --git a/images/img_folder/airplanes/image_0472.jpg b/images/img_folder/airplanes/image_0472.jpg new file mode 100644 index 0000000..4fe65ca Binary files /dev/null and b/images/img_folder/airplanes/image_0472.jpg differ diff --git a/images/img_folder/airplanes/image_0473.jpg b/images/img_folder/airplanes/image_0473.jpg new file mode 100644 index 0000000..b0497e2 Binary files /dev/null and b/images/img_folder/airplanes/image_0473.jpg differ diff --git a/images/img_folder/airplanes/image_0474.jpg b/images/img_folder/airplanes/image_0474.jpg new file mode 100644 index 0000000..bca8443 Binary files /dev/null and b/images/img_folder/airplanes/image_0474.jpg differ diff --git a/images/img_folder/airplanes/image_0475.jpg b/images/img_folder/airplanes/image_0475.jpg new file mode 100644 index 0000000..8c98c08 Binary files /dev/null and b/images/img_folder/airplanes/image_0475.jpg differ diff --git a/images/img_folder/airplanes/image_0476.jpg b/images/img_folder/airplanes/image_0476.jpg new file mode 100644 index 0000000..98492f6 Binary files /dev/null and b/images/img_folder/airplanes/image_0476.jpg differ diff --git a/images/img_folder/airplanes/image_0477.jpg b/images/img_folder/airplanes/image_0477.jpg new file mode 100644 index 0000000..830c1e8 Binary files /dev/null and b/images/img_folder/airplanes/image_0477.jpg differ diff --git a/images/img_folder/airplanes/image_0478.jpg b/images/img_folder/airplanes/image_0478.jpg new file mode 100644 index 0000000..c38f485 Binary files /dev/null and b/images/img_folder/airplanes/image_0478.jpg differ diff --git a/images/img_folder/airplanes/image_0479.jpg b/images/img_folder/airplanes/image_0479.jpg new file mode 100644 index 0000000..ee13ee1 Binary files /dev/null and b/images/img_folder/airplanes/image_0479.jpg differ diff --git a/images/img_folder/airplanes/image_0480.jpg b/images/img_folder/airplanes/image_0480.jpg new file mode 100644 index 0000000..a2dbe5d Binary files /dev/null and b/images/img_folder/airplanes/image_0480.jpg differ diff --git a/images/img_folder/airplanes/image_0481.jpg b/images/img_folder/airplanes/image_0481.jpg new file mode 100644 index 0000000..d9e4bab Binary files /dev/null and b/images/img_folder/airplanes/image_0481.jpg differ diff --git a/images/img_folder/airplanes/image_0482.jpg b/images/img_folder/airplanes/image_0482.jpg new file mode 100644 index 0000000..d80c00b Binary files /dev/null and b/images/img_folder/airplanes/image_0482.jpg differ diff --git a/images/img_folder/airplanes/image_0483.jpg b/images/img_folder/airplanes/image_0483.jpg new file mode 100644 index 0000000..04fb1ed Binary files /dev/null and b/images/img_folder/airplanes/image_0483.jpg differ diff --git a/images/img_folder/airplanes/image_0484.jpg b/images/img_folder/airplanes/image_0484.jpg new file mode 100644 index 0000000..81da7be Binary files /dev/null and b/images/img_folder/airplanes/image_0484.jpg differ diff --git a/images/img_folder/airplanes/image_0485.jpg b/images/img_folder/airplanes/image_0485.jpg new file mode 100644 index 0000000..850aa95 Binary files /dev/null and b/images/img_folder/airplanes/image_0485.jpg differ diff --git a/images/img_folder/airplanes/image_0486.jpg b/images/img_folder/airplanes/image_0486.jpg new file mode 100644 index 0000000..8f9696c Binary files /dev/null and b/images/img_folder/airplanes/image_0486.jpg differ diff --git a/images/img_folder/airplanes/image_0487.jpg b/images/img_folder/airplanes/image_0487.jpg new file mode 100644 index 0000000..45ecb2e Binary files /dev/null and b/images/img_folder/airplanes/image_0487.jpg differ diff --git a/images/img_folder/airplanes/image_0488.jpg b/images/img_folder/airplanes/image_0488.jpg new file mode 100644 index 0000000..d3d5e1a Binary files /dev/null and b/images/img_folder/airplanes/image_0488.jpg differ diff --git a/images/img_folder/airplanes/image_0489.jpg b/images/img_folder/airplanes/image_0489.jpg new file mode 100644 index 0000000..54b02f4 Binary files /dev/null and b/images/img_folder/airplanes/image_0489.jpg differ diff --git a/images/img_folder/airplanes/image_0490.jpg b/images/img_folder/airplanes/image_0490.jpg new file mode 100644 index 0000000..e4d4cfe Binary files /dev/null and b/images/img_folder/airplanes/image_0490.jpg differ diff --git a/images/img_folder/airplanes/image_0491.jpg b/images/img_folder/airplanes/image_0491.jpg new file mode 100644 index 0000000..5ec5789 Binary files /dev/null and b/images/img_folder/airplanes/image_0491.jpg differ diff --git a/images/img_folder/airplanes/image_0492.jpg b/images/img_folder/airplanes/image_0492.jpg new file mode 100644 index 0000000..279b9ee Binary files /dev/null and b/images/img_folder/airplanes/image_0492.jpg differ diff --git a/images/img_folder/airplanes/image_0493.jpg b/images/img_folder/airplanes/image_0493.jpg new file mode 100644 index 0000000..064323d Binary files /dev/null and b/images/img_folder/airplanes/image_0493.jpg differ diff --git a/images/img_folder/airplanes/image_0494.jpg b/images/img_folder/airplanes/image_0494.jpg new file mode 100644 index 0000000..606cd76 Binary files /dev/null and b/images/img_folder/airplanes/image_0494.jpg differ diff --git a/images/img_folder/airplanes/image_0495.jpg b/images/img_folder/airplanes/image_0495.jpg new file mode 100644 index 0000000..a17b326 Binary files /dev/null and b/images/img_folder/airplanes/image_0495.jpg differ diff --git a/images/img_folder/airplanes/image_0496.jpg b/images/img_folder/airplanes/image_0496.jpg new file mode 100644 index 0000000..83e1466 Binary files /dev/null and b/images/img_folder/airplanes/image_0496.jpg differ diff --git a/images/img_folder/airplanes/image_0497.jpg b/images/img_folder/airplanes/image_0497.jpg new file mode 100644 index 0000000..d4042e9 Binary files /dev/null and b/images/img_folder/airplanes/image_0497.jpg differ diff --git a/images/img_folder/airplanes/image_0498.jpg b/images/img_folder/airplanes/image_0498.jpg new file mode 100644 index 0000000..c039660 Binary files /dev/null and b/images/img_folder/airplanes/image_0498.jpg differ diff --git a/images/img_folder/airplanes/image_0499.jpg b/images/img_folder/airplanes/image_0499.jpg new file mode 100644 index 0000000..dd5a1cd Binary files /dev/null and b/images/img_folder/airplanes/image_0499.jpg differ diff --git a/images/img_folder/airplanes/image_0500.jpg b/images/img_folder/airplanes/image_0500.jpg new file mode 100644 index 0000000..28ece3a Binary files /dev/null and b/images/img_folder/airplanes/image_0500.jpg differ diff --git a/images/img_folder/airplanes/image_0501.jpg b/images/img_folder/airplanes/image_0501.jpg new file mode 100644 index 0000000..1b91520 Binary files /dev/null and b/images/img_folder/airplanes/image_0501.jpg differ diff --git a/images/img_folder/airplanes/image_0502.jpg b/images/img_folder/airplanes/image_0502.jpg new file mode 100644 index 0000000..ee2b0ce Binary files /dev/null and b/images/img_folder/airplanes/image_0502.jpg differ diff --git a/images/img_folder/airplanes/image_0503.jpg b/images/img_folder/airplanes/image_0503.jpg new file mode 100644 index 0000000..c7d1bcf Binary files /dev/null and b/images/img_folder/airplanes/image_0503.jpg differ diff --git a/images/img_folder/airplanes/image_0504.jpg b/images/img_folder/airplanes/image_0504.jpg new file mode 100644 index 0000000..c066f65 Binary files /dev/null and b/images/img_folder/airplanes/image_0504.jpg differ diff --git a/images/img_folder/airplanes/image_0505.jpg b/images/img_folder/airplanes/image_0505.jpg new file mode 100644 index 0000000..3abe951 Binary files /dev/null and b/images/img_folder/airplanes/image_0505.jpg differ diff --git a/images/img_folder/airplanes/image_0506.jpg b/images/img_folder/airplanes/image_0506.jpg new file mode 100644 index 0000000..61f9ae9 Binary files /dev/null and b/images/img_folder/airplanes/image_0506.jpg differ diff --git a/images/img_folder/airplanes/image_0507.jpg b/images/img_folder/airplanes/image_0507.jpg new file mode 100644 index 0000000..57358f4 Binary files /dev/null and b/images/img_folder/airplanes/image_0507.jpg differ diff --git a/images/img_folder/airplanes/image_0508.jpg b/images/img_folder/airplanes/image_0508.jpg new file mode 100644 index 0000000..f3a5ebb Binary files /dev/null and b/images/img_folder/airplanes/image_0508.jpg differ diff --git a/images/img_folder/airplanes/image_0509.jpg b/images/img_folder/airplanes/image_0509.jpg new file mode 100644 index 0000000..69cdaf2 Binary files /dev/null and b/images/img_folder/airplanes/image_0509.jpg differ diff --git a/images/img_folder/airplanes/image_0510.jpg b/images/img_folder/airplanes/image_0510.jpg new file mode 100644 index 0000000..9cd8f09 Binary files /dev/null and b/images/img_folder/airplanes/image_0510.jpg differ diff --git a/images/img_folder/airplanes/image_0511.jpg b/images/img_folder/airplanes/image_0511.jpg new file mode 100644 index 0000000..5e35226 Binary files /dev/null and b/images/img_folder/airplanes/image_0511.jpg differ diff --git a/images/img_folder/airplanes/image_0512.jpg b/images/img_folder/airplanes/image_0512.jpg new file mode 100644 index 0000000..a89fb0b Binary files /dev/null and b/images/img_folder/airplanes/image_0512.jpg differ diff --git a/images/img_folder/airplanes/image_0513.jpg b/images/img_folder/airplanes/image_0513.jpg new file mode 100644 index 0000000..fee737d Binary files /dev/null and b/images/img_folder/airplanes/image_0513.jpg differ diff --git a/images/img_folder/airplanes/image_0514.jpg b/images/img_folder/airplanes/image_0514.jpg new file mode 100644 index 0000000..8079f85 Binary files /dev/null and b/images/img_folder/airplanes/image_0514.jpg differ diff --git a/images/img_folder/airplanes/image_0515.jpg b/images/img_folder/airplanes/image_0515.jpg new file mode 100644 index 0000000..1eb4434 Binary files /dev/null and b/images/img_folder/airplanes/image_0515.jpg differ diff --git a/images/img_folder/airplanes/image_0516.jpg b/images/img_folder/airplanes/image_0516.jpg new file mode 100644 index 0000000..bcd2a1c Binary files /dev/null and b/images/img_folder/airplanes/image_0516.jpg differ diff --git a/images/img_folder/airplanes/image_0517.jpg b/images/img_folder/airplanes/image_0517.jpg new file mode 100644 index 0000000..14c542a Binary files /dev/null and b/images/img_folder/airplanes/image_0517.jpg differ diff --git a/images/img_folder/airplanes/image_0518.jpg b/images/img_folder/airplanes/image_0518.jpg new file mode 100644 index 0000000..a8c96f6 Binary files /dev/null and b/images/img_folder/airplanes/image_0518.jpg differ diff --git a/images/img_folder/airplanes/image_0519.jpg b/images/img_folder/airplanes/image_0519.jpg new file mode 100644 index 0000000..d6214cb Binary files /dev/null and b/images/img_folder/airplanes/image_0519.jpg differ diff --git a/images/img_folder/airplanes/image_0520.jpg b/images/img_folder/airplanes/image_0520.jpg new file mode 100644 index 0000000..5986ace Binary files /dev/null and b/images/img_folder/airplanes/image_0520.jpg differ diff --git a/images/img_folder/airplanes/image_0521.jpg b/images/img_folder/airplanes/image_0521.jpg new file mode 100644 index 0000000..9e5ffd7 Binary files /dev/null and b/images/img_folder/airplanes/image_0521.jpg differ diff --git a/images/img_folder/airplanes/image_0522.jpg b/images/img_folder/airplanes/image_0522.jpg new file mode 100644 index 0000000..9419f8d Binary files /dev/null and b/images/img_folder/airplanes/image_0522.jpg differ diff --git a/images/img_folder/airplanes/image_0523.jpg b/images/img_folder/airplanes/image_0523.jpg new file mode 100644 index 0000000..d253ce1 Binary files /dev/null and b/images/img_folder/airplanes/image_0523.jpg differ diff --git a/images/img_folder/airplanes/image_0524.jpg b/images/img_folder/airplanes/image_0524.jpg new file mode 100644 index 0000000..10fd8a8 Binary files /dev/null and b/images/img_folder/airplanes/image_0524.jpg differ diff --git a/images/img_folder/airplanes/image_0525.jpg b/images/img_folder/airplanes/image_0525.jpg new file mode 100644 index 0000000..c941a69 Binary files /dev/null and b/images/img_folder/airplanes/image_0525.jpg differ diff --git a/images/img_folder/airplanes/image_0526.jpg b/images/img_folder/airplanes/image_0526.jpg new file mode 100644 index 0000000..f8c6dd5 Binary files /dev/null and b/images/img_folder/airplanes/image_0526.jpg differ diff --git a/images/img_folder/airplanes/image_0527.jpg b/images/img_folder/airplanes/image_0527.jpg new file mode 100644 index 0000000..1e2dde8 Binary files /dev/null and b/images/img_folder/airplanes/image_0527.jpg differ diff --git a/images/img_folder/airplanes/image_0528.jpg b/images/img_folder/airplanes/image_0528.jpg new file mode 100644 index 0000000..ec57a08 Binary files /dev/null and b/images/img_folder/airplanes/image_0528.jpg differ diff --git a/images/img_folder/airplanes/image_0529.jpg b/images/img_folder/airplanes/image_0529.jpg new file mode 100644 index 0000000..3bc8189 Binary files /dev/null and b/images/img_folder/airplanes/image_0529.jpg differ diff --git a/images/img_folder/airplanes/image_0530.jpg b/images/img_folder/airplanes/image_0530.jpg new file mode 100644 index 0000000..20fe773 Binary files /dev/null and b/images/img_folder/airplanes/image_0530.jpg differ diff --git a/images/img_folder/airplanes/image_0531.jpg b/images/img_folder/airplanes/image_0531.jpg new file mode 100644 index 0000000..113ac71 Binary files /dev/null and b/images/img_folder/airplanes/image_0531.jpg differ diff --git a/images/img_folder/airplanes/image_0532.jpg b/images/img_folder/airplanes/image_0532.jpg new file mode 100644 index 0000000..10eac0a Binary files /dev/null and b/images/img_folder/airplanes/image_0532.jpg differ diff --git a/images/img_folder/airplanes/image_0533.jpg b/images/img_folder/airplanes/image_0533.jpg new file mode 100644 index 0000000..549fc08 Binary files /dev/null and b/images/img_folder/airplanes/image_0533.jpg differ diff --git a/images/img_folder/airplanes/image_0534.jpg b/images/img_folder/airplanes/image_0534.jpg new file mode 100644 index 0000000..75ab955 Binary files /dev/null and b/images/img_folder/airplanes/image_0534.jpg differ diff --git a/images/img_folder/airplanes/image_0535.jpg b/images/img_folder/airplanes/image_0535.jpg new file mode 100644 index 0000000..34c067f Binary files /dev/null and b/images/img_folder/airplanes/image_0535.jpg differ diff --git a/images/img_folder/airplanes/image_0536.jpg b/images/img_folder/airplanes/image_0536.jpg new file mode 100644 index 0000000..9df5fc4 Binary files /dev/null and b/images/img_folder/airplanes/image_0536.jpg differ diff --git a/images/img_folder/airplanes/image_0537.jpg b/images/img_folder/airplanes/image_0537.jpg new file mode 100644 index 0000000..564c6f1 Binary files /dev/null and b/images/img_folder/airplanes/image_0537.jpg differ diff --git a/images/img_folder/airplanes/image_0538.jpg b/images/img_folder/airplanes/image_0538.jpg new file mode 100644 index 0000000..3c463c8 Binary files /dev/null and b/images/img_folder/airplanes/image_0538.jpg differ diff --git a/images/img_folder/airplanes/image_0539.jpg b/images/img_folder/airplanes/image_0539.jpg new file mode 100644 index 0000000..2b25734 Binary files /dev/null and b/images/img_folder/airplanes/image_0539.jpg differ diff --git a/images/img_folder/airplanes/image_0540.jpg b/images/img_folder/airplanes/image_0540.jpg new file mode 100644 index 0000000..852cfea Binary files /dev/null and b/images/img_folder/airplanes/image_0540.jpg differ diff --git a/images/img_folder/airplanes/image_0541.jpg b/images/img_folder/airplanes/image_0541.jpg new file mode 100644 index 0000000..cf8282e Binary files /dev/null and b/images/img_folder/airplanes/image_0541.jpg differ diff --git a/images/img_folder/airplanes/image_0542.jpg b/images/img_folder/airplanes/image_0542.jpg new file mode 100644 index 0000000..186775c Binary files /dev/null and b/images/img_folder/airplanes/image_0542.jpg differ diff --git a/images/img_folder/airplanes/image_0543.jpg b/images/img_folder/airplanes/image_0543.jpg new file mode 100644 index 0000000..54294f0 Binary files /dev/null and b/images/img_folder/airplanes/image_0543.jpg differ diff --git a/images/img_folder/airplanes/image_0544.jpg b/images/img_folder/airplanes/image_0544.jpg new file mode 100644 index 0000000..8d167e5 Binary files /dev/null and b/images/img_folder/airplanes/image_0544.jpg differ diff --git a/images/img_folder/airplanes/image_0545.jpg b/images/img_folder/airplanes/image_0545.jpg new file mode 100644 index 0000000..e0379a3 Binary files /dev/null and b/images/img_folder/airplanes/image_0545.jpg differ diff --git a/images/img_folder/airplanes/image_0546.jpg b/images/img_folder/airplanes/image_0546.jpg new file mode 100644 index 0000000..e1fcf7c Binary files /dev/null and b/images/img_folder/airplanes/image_0546.jpg differ diff --git a/images/img_folder/airplanes/image_0547.jpg b/images/img_folder/airplanes/image_0547.jpg new file mode 100644 index 0000000..e7f7c03 Binary files /dev/null and b/images/img_folder/airplanes/image_0547.jpg differ diff --git a/images/img_folder/airplanes/image_0548.jpg b/images/img_folder/airplanes/image_0548.jpg new file mode 100644 index 0000000..bfc0fc9 Binary files /dev/null and b/images/img_folder/airplanes/image_0548.jpg differ diff --git a/images/img_folder/airplanes/image_0549.jpg b/images/img_folder/airplanes/image_0549.jpg new file mode 100644 index 0000000..54bc859 Binary files /dev/null and b/images/img_folder/airplanes/image_0549.jpg differ diff --git a/images/img_folder/airplanes/image_0550.jpg b/images/img_folder/airplanes/image_0550.jpg new file mode 100644 index 0000000..0799944 Binary files /dev/null and b/images/img_folder/airplanes/image_0550.jpg differ diff --git a/images/img_folder/airplanes/image_0551.jpg b/images/img_folder/airplanes/image_0551.jpg new file mode 100644 index 0000000..560d872 Binary files /dev/null and b/images/img_folder/airplanes/image_0551.jpg differ diff --git a/images/img_folder/airplanes/image_0552.jpg b/images/img_folder/airplanes/image_0552.jpg new file mode 100644 index 0000000..f026582 Binary files /dev/null and b/images/img_folder/airplanes/image_0552.jpg differ diff --git a/images/img_folder/airplanes/image_0553.jpg b/images/img_folder/airplanes/image_0553.jpg new file mode 100644 index 0000000..530fd76 Binary files /dev/null and b/images/img_folder/airplanes/image_0553.jpg differ diff --git a/images/img_folder/airplanes/image_0554.jpg b/images/img_folder/airplanes/image_0554.jpg new file mode 100644 index 0000000..d7fad2c Binary files /dev/null and b/images/img_folder/airplanes/image_0554.jpg differ diff --git a/images/img_folder/airplanes/image_0555.jpg b/images/img_folder/airplanes/image_0555.jpg new file mode 100644 index 0000000..4e39cf8 Binary files /dev/null and b/images/img_folder/airplanes/image_0555.jpg differ diff --git a/images/img_folder/airplanes/image_0556.jpg b/images/img_folder/airplanes/image_0556.jpg new file mode 100644 index 0000000..3acbfc0 Binary files /dev/null and b/images/img_folder/airplanes/image_0556.jpg differ diff --git a/images/img_folder/airplanes/image_0557.jpg b/images/img_folder/airplanes/image_0557.jpg new file mode 100644 index 0000000..fc0fbd6 Binary files /dev/null and b/images/img_folder/airplanes/image_0557.jpg differ diff --git a/images/img_folder/airplanes/image_0558.jpg b/images/img_folder/airplanes/image_0558.jpg new file mode 100644 index 0000000..8698acf Binary files /dev/null and b/images/img_folder/airplanes/image_0558.jpg differ diff --git a/images/img_folder/airplanes/image_0559.jpg b/images/img_folder/airplanes/image_0559.jpg new file mode 100644 index 0000000..a0c91dc Binary files /dev/null and b/images/img_folder/airplanes/image_0559.jpg differ diff --git a/images/img_folder/airplanes/image_0560.jpg b/images/img_folder/airplanes/image_0560.jpg new file mode 100644 index 0000000..38af4d2 Binary files /dev/null and b/images/img_folder/airplanes/image_0560.jpg differ diff --git a/images/img_folder/airplanes/image_0561.jpg b/images/img_folder/airplanes/image_0561.jpg new file mode 100644 index 0000000..4a14103 Binary files /dev/null and b/images/img_folder/airplanes/image_0561.jpg differ diff --git a/images/img_folder/airplanes/image_0562.jpg b/images/img_folder/airplanes/image_0562.jpg new file mode 100644 index 0000000..66deaed Binary files /dev/null and b/images/img_folder/airplanes/image_0562.jpg differ diff --git a/images/img_folder/airplanes/image_0563.jpg b/images/img_folder/airplanes/image_0563.jpg new file mode 100644 index 0000000..1bed34a Binary files /dev/null and b/images/img_folder/airplanes/image_0563.jpg differ diff --git a/images/img_folder/airplanes/image_0564.jpg b/images/img_folder/airplanes/image_0564.jpg new file mode 100644 index 0000000..f7c83d5 Binary files /dev/null and b/images/img_folder/airplanes/image_0564.jpg differ diff --git a/images/img_folder/airplanes/image_0565.jpg b/images/img_folder/airplanes/image_0565.jpg new file mode 100644 index 0000000..7254449 Binary files /dev/null and b/images/img_folder/airplanes/image_0565.jpg differ diff --git a/images/img_folder/airplanes/image_0566.jpg b/images/img_folder/airplanes/image_0566.jpg new file mode 100644 index 0000000..84b1c9a Binary files /dev/null and b/images/img_folder/airplanes/image_0566.jpg differ diff --git a/images/img_folder/airplanes/image_0567.jpg b/images/img_folder/airplanes/image_0567.jpg new file mode 100644 index 0000000..974f9bd Binary files /dev/null and b/images/img_folder/airplanes/image_0567.jpg differ diff --git a/images/img_folder/airplanes/image_0568.jpg b/images/img_folder/airplanes/image_0568.jpg new file mode 100644 index 0000000..8305865 Binary files /dev/null and b/images/img_folder/airplanes/image_0568.jpg differ diff --git a/images/img_folder/airplanes/image_0569.jpg b/images/img_folder/airplanes/image_0569.jpg new file mode 100644 index 0000000..48926d1 Binary files /dev/null and b/images/img_folder/airplanes/image_0569.jpg differ diff --git a/images/img_folder/airplanes/image_0570.jpg b/images/img_folder/airplanes/image_0570.jpg new file mode 100644 index 0000000..b425fe9 Binary files /dev/null and b/images/img_folder/airplanes/image_0570.jpg differ diff --git a/images/img_folder/airplanes/image_0571.jpg b/images/img_folder/airplanes/image_0571.jpg new file mode 100644 index 0000000..f259788 Binary files /dev/null and b/images/img_folder/airplanes/image_0571.jpg differ diff --git a/images/img_folder/airplanes/image_0572.jpg b/images/img_folder/airplanes/image_0572.jpg new file mode 100644 index 0000000..281636a Binary files /dev/null and b/images/img_folder/airplanes/image_0572.jpg differ diff --git a/images/img_folder/airplanes/image_0573.jpg b/images/img_folder/airplanes/image_0573.jpg new file mode 100644 index 0000000..5e58b42 Binary files /dev/null and b/images/img_folder/airplanes/image_0573.jpg differ diff --git a/images/img_folder/airplanes/image_0574.jpg b/images/img_folder/airplanes/image_0574.jpg new file mode 100644 index 0000000..6230386 Binary files /dev/null and b/images/img_folder/airplanes/image_0574.jpg differ diff --git a/images/img_folder/airplanes/image_0575.jpg b/images/img_folder/airplanes/image_0575.jpg new file mode 100644 index 0000000..a498ff9 Binary files /dev/null and b/images/img_folder/airplanes/image_0575.jpg differ diff --git a/images/img_folder/airplanes/image_0576.jpg b/images/img_folder/airplanes/image_0576.jpg new file mode 100644 index 0000000..795ec5b Binary files /dev/null and b/images/img_folder/airplanes/image_0576.jpg differ diff --git a/images/img_folder/airplanes/image_0577.jpg b/images/img_folder/airplanes/image_0577.jpg new file mode 100644 index 0000000..ce4056f Binary files /dev/null and b/images/img_folder/airplanes/image_0577.jpg differ diff --git a/images/img_folder/airplanes/image_0578.jpg b/images/img_folder/airplanes/image_0578.jpg new file mode 100644 index 0000000..9b3a2b0 Binary files /dev/null and b/images/img_folder/airplanes/image_0578.jpg differ diff --git a/images/img_folder/airplanes/image_0579.jpg b/images/img_folder/airplanes/image_0579.jpg new file mode 100644 index 0000000..c278cf4 Binary files /dev/null and b/images/img_folder/airplanes/image_0579.jpg differ diff --git a/images/img_folder/airplanes/image_0580.jpg b/images/img_folder/airplanes/image_0580.jpg new file mode 100644 index 0000000..678dff2 Binary files /dev/null and b/images/img_folder/airplanes/image_0580.jpg differ diff --git a/images/img_folder/airplanes/image_0581.jpg b/images/img_folder/airplanes/image_0581.jpg new file mode 100644 index 0000000..63093a0 Binary files /dev/null and b/images/img_folder/airplanes/image_0581.jpg differ diff --git a/images/img_folder/airplanes/image_0582.jpg b/images/img_folder/airplanes/image_0582.jpg new file mode 100644 index 0000000..91e6614 Binary files /dev/null and b/images/img_folder/airplanes/image_0582.jpg differ diff --git a/images/img_folder/airplanes/image_0583.jpg b/images/img_folder/airplanes/image_0583.jpg new file mode 100644 index 0000000..d74892c Binary files /dev/null and b/images/img_folder/airplanes/image_0583.jpg differ diff --git a/images/img_folder/airplanes/image_0584.jpg b/images/img_folder/airplanes/image_0584.jpg new file mode 100644 index 0000000..e0c6541 Binary files /dev/null and b/images/img_folder/airplanes/image_0584.jpg differ diff --git a/images/img_folder/airplanes/image_0585.jpg b/images/img_folder/airplanes/image_0585.jpg new file mode 100644 index 0000000..d9e46cb Binary files /dev/null and b/images/img_folder/airplanes/image_0585.jpg differ diff --git a/images/img_folder/airplanes/image_0586.jpg b/images/img_folder/airplanes/image_0586.jpg new file mode 100644 index 0000000..fbfa6af Binary files /dev/null and b/images/img_folder/airplanes/image_0586.jpg differ diff --git a/images/img_folder/airplanes/image_0587.jpg b/images/img_folder/airplanes/image_0587.jpg new file mode 100644 index 0000000..76e0dc5 Binary files /dev/null and b/images/img_folder/airplanes/image_0587.jpg differ diff --git a/images/img_folder/airplanes/image_0588.jpg b/images/img_folder/airplanes/image_0588.jpg new file mode 100644 index 0000000..0b0322a Binary files /dev/null and b/images/img_folder/airplanes/image_0588.jpg differ diff --git a/images/img_folder/airplanes/image_0589.jpg b/images/img_folder/airplanes/image_0589.jpg new file mode 100644 index 0000000..e52b2f2 Binary files /dev/null and b/images/img_folder/airplanes/image_0589.jpg differ diff --git a/images/img_folder/airplanes/image_0590.jpg b/images/img_folder/airplanes/image_0590.jpg new file mode 100644 index 0000000..0f00311 Binary files /dev/null and b/images/img_folder/airplanes/image_0590.jpg differ diff --git a/images/img_folder/airplanes/image_0591.jpg b/images/img_folder/airplanes/image_0591.jpg new file mode 100644 index 0000000..f5fc022 Binary files /dev/null and b/images/img_folder/airplanes/image_0591.jpg differ diff --git a/images/img_folder/airplanes/image_0592.jpg b/images/img_folder/airplanes/image_0592.jpg new file mode 100644 index 0000000..7d0a888 Binary files /dev/null and b/images/img_folder/airplanes/image_0592.jpg differ diff --git a/images/img_folder/airplanes/image_0593.jpg b/images/img_folder/airplanes/image_0593.jpg new file mode 100644 index 0000000..2af5e5c Binary files /dev/null and b/images/img_folder/airplanes/image_0593.jpg differ diff --git a/images/img_folder/airplanes/image_0594.jpg b/images/img_folder/airplanes/image_0594.jpg new file mode 100644 index 0000000..cccc520 Binary files /dev/null and b/images/img_folder/airplanes/image_0594.jpg differ diff --git a/images/img_folder/airplanes/image_0595.jpg b/images/img_folder/airplanes/image_0595.jpg new file mode 100644 index 0000000..548c2f8 Binary files /dev/null and b/images/img_folder/airplanes/image_0595.jpg differ diff --git a/images/img_folder/airplanes/image_0596.jpg b/images/img_folder/airplanes/image_0596.jpg new file mode 100644 index 0000000..6039c1e Binary files /dev/null and b/images/img_folder/airplanes/image_0596.jpg differ diff --git a/images/img_folder/airplanes/image_0597.jpg b/images/img_folder/airplanes/image_0597.jpg new file mode 100644 index 0000000..2aad5fa Binary files /dev/null and b/images/img_folder/airplanes/image_0597.jpg differ diff --git a/images/img_folder/airplanes/image_0598.jpg b/images/img_folder/airplanes/image_0598.jpg new file mode 100644 index 0000000..05c8d1d Binary files /dev/null and b/images/img_folder/airplanes/image_0598.jpg differ diff --git a/images/img_folder/airplanes/image_0599.jpg b/images/img_folder/airplanes/image_0599.jpg new file mode 100644 index 0000000..ab90dae Binary files /dev/null and b/images/img_folder/airplanes/image_0599.jpg differ diff --git a/images/img_folder/airplanes/image_0600.jpg b/images/img_folder/airplanes/image_0600.jpg new file mode 100644 index 0000000..460c777 Binary files /dev/null and b/images/img_folder/airplanes/image_0600.jpg differ diff --git a/images/img_folder/airplanes/image_0601.jpg b/images/img_folder/airplanes/image_0601.jpg new file mode 100644 index 0000000..d509050 Binary files /dev/null and b/images/img_folder/airplanes/image_0601.jpg differ diff --git a/images/img_folder/airplanes/image_0602.jpg b/images/img_folder/airplanes/image_0602.jpg new file mode 100644 index 0000000..07ee985 Binary files /dev/null and b/images/img_folder/airplanes/image_0602.jpg differ diff --git a/images/img_folder/airplanes/image_0603.jpg b/images/img_folder/airplanes/image_0603.jpg new file mode 100644 index 0000000..63d62f4 Binary files /dev/null and b/images/img_folder/airplanes/image_0603.jpg differ diff --git a/images/img_folder/airplanes/image_0604.jpg b/images/img_folder/airplanes/image_0604.jpg new file mode 100644 index 0000000..af75092 Binary files /dev/null and b/images/img_folder/airplanes/image_0604.jpg differ diff --git a/images/img_folder/airplanes/image_0605.jpg b/images/img_folder/airplanes/image_0605.jpg new file mode 100644 index 0000000..cf374a1 Binary files /dev/null and b/images/img_folder/airplanes/image_0605.jpg differ diff --git a/images/img_folder/airplanes/image_0606.jpg b/images/img_folder/airplanes/image_0606.jpg new file mode 100644 index 0000000..8eb8f9d Binary files /dev/null and b/images/img_folder/airplanes/image_0606.jpg differ diff --git a/images/img_folder/airplanes/image_0607.jpg b/images/img_folder/airplanes/image_0607.jpg new file mode 100644 index 0000000..d46a8b6 Binary files /dev/null and b/images/img_folder/airplanes/image_0607.jpg differ diff --git a/images/img_folder/airplanes/image_0608.jpg b/images/img_folder/airplanes/image_0608.jpg new file mode 100644 index 0000000..370e2df Binary files /dev/null and b/images/img_folder/airplanes/image_0608.jpg differ diff --git a/images/img_folder/airplanes/image_0609.jpg b/images/img_folder/airplanes/image_0609.jpg new file mode 100644 index 0000000..5abfcbb Binary files /dev/null and b/images/img_folder/airplanes/image_0609.jpg differ diff --git a/images/img_folder/airplanes/image_0610.jpg b/images/img_folder/airplanes/image_0610.jpg new file mode 100644 index 0000000..692cb1d Binary files /dev/null and b/images/img_folder/airplanes/image_0610.jpg differ diff --git a/images/img_folder/airplanes/image_0611.jpg b/images/img_folder/airplanes/image_0611.jpg new file mode 100644 index 0000000..911d5a5 Binary files /dev/null and b/images/img_folder/airplanes/image_0611.jpg differ diff --git a/images/img_folder/airplanes/image_0612.jpg b/images/img_folder/airplanes/image_0612.jpg new file mode 100644 index 0000000..272c055 Binary files /dev/null and b/images/img_folder/airplanes/image_0612.jpg differ diff --git a/images/img_folder/airplanes/image_0613.jpg b/images/img_folder/airplanes/image_0613.jpg new file mode 100644 index 0000000..2dd974c Binary files /dev/null and b/images/img_folder/airplanes/image_0613.jpg differ diff --git a/images/img_folder/airplanes/image_0614.jpg b/images/img_folder/airplanes/image_0614.jpg new file mode 100644 index 0000000..69eb7f0 Binary files /dev/null and b/images/img_folder/airplanes/image_0614.jpg differ diff --git a/images/img_folder/airplanes/image_0615.jpg b/images/img_folder/airplanes/image_0615.jpg new file mode 100644 index 0000000..6cd068a Binary files /dev/null and b/images/img_folder/airplanes/image_0615.jpg differ diff --git a/images/img_folder/airplanes/image_0616.jpg b/images/img_folder/airplanes/image_0616.jpg new file mode 100644 index 0000000..7e90ade Binary files /dev/null and b/images/img_folder/airplanes/image_0616.jpg differ diff --git a/images/img_folder/airplanes/image_0617.jpg b/images/img_folder/airplanes/image_0617.jpg new file mode 100644 index 0000000..86c4e86 Binary files /dev/null and b/images/img_folder/airplanes/image_0617.jpg differ diff --git a/images/img_folder/airplanes/image_0618.jpg b/images/img_folder/airplanes/image_0618.jpg new file mode 100644 index 0000000..2da7baf Binary files /dev/null and b/images/img_folder/airplanes/image_0618.jpg differ diff --git a/images/img_folder/airplanes/image_0619.jpg b/images/img_folder/airplanes/image_0619.jpg new file mode 100644 index 0000000..4b36939 Binary files /dev/null and b/images/img_folder/airplanes/image_0619.jpg differ diff --git a/images/img_folder/airplanes/image_0620.jpg b/images/img_folder/airplanes/image_0620.jpg new file mode 100644 index 0000000..6ee7fe5 Binary files /dev/null and b/images/img_folder/airplanes/image_0620.jpg differ diff --git a/images/img_folder/airplanes/image_0621.jpg b/images/img_folder/airplanes/image_0621.jpg new file mode 100644 index 0000000..8748a74 Binary files /dev/null and b/images/img_folder/airplanes/image_0621.jpg differ diff --git a/images/img_folder/airplanes/image_0622.jpg b/images/img_folder/airplanes/image_0622.jpg new file mode 100644 index 0000000..d6fa3dc Binary files /dev/null and b/images/img_folder/airplanes/image_0622.jpg differ diff --git a/images/img_folder/airplanes/image_0623.jpg b/images/img_folder/airplanes/image_0623.jpg new file mode 100644 index 0000000..5e2598d Binary files /dev/null and b/images/img_folder/airplanes/image_0623.jpg differ diff --git a/images/img_folder/airplanes/image_0624.jpg b/images/img_folder/airplanes/image_0624.jpg new file mode 100644 index 0000000..e03684a Binary files /dev/null and b/images/img_folder/airplanes/image_0624.jpg differ diff --git a/images/img_folder/airplanes/image_0625.jpg b/images/img_folder/airplanes/image_0625.jpg new file mode 100644 index 0000000..67f3df9 Binary files /dev/null and b/images/img_folder/airplanes/image_0625.jpg differ diff --git a/images/img_folder/airplanes/image_0626.jpg b/images/img_folder/airplanes/image_0626.jpg new file mode 100644 index 0000000..b2c53f1 Binary files /dev/null and b/images/img_folder/airplanes/image_0626.jpg differ diff --git a/images/img_folder/airplanes/image_0627.jpg b/images/img_folder/airplanes/image_0627.jpg new file mode 100644 index 0000000..7457ccc Binary files /dev/null and b/images/img_folder/airplanes/image_0627.jpg differ diff --git a/images/img_folder/airplanes/image_0628.jpg b/images/img_folder/airplanes/image_0628.jpg new file mode 100644 index 0000000..fb0b02e Binary files /dev/null and b/images/img_folder/airplanes/image_0628.jpg differ diff --git a/images/img_folder/airplanes/image_0629.jpg b/images/img_folder/airplanes/image_0629.jpg new file mode 100644 index 0000000..0a5fd34 Binary files /dev/null and b/images/img_folder/airplanes/image_0629.jpg differ diff --git a/images/img_folder/airplanes/image_0630.jpg b/images/img_folder/airplanes/image_0630.jpg new file mode 100644 index 0000000..ccfdb43 Binary files /dev/null and b/images/img_folder/airplanes/image_0630.jpg differ diff --git a/images/img_folder/airplanes/image_0631.jpg b/images/img_folder/airplanes/image_0631.jpg new file mode 100644 index 0000000..cfe4c8e Binary files /dev/null and b/images/img_folder/airplanes/image_0631.jpg differ diff --git a/images/img_folder/airplanes/image_0632.jpg b/images/img_folder/airplanes/image_0632.jpg new file mode 100644 index 0000000..452f266 Binary files /dev/null and b/images/img_folder/airplanes/image_0632.jpg differ diff --git a/images/img_folder/airplanes/image_0633.jpg b/images/img_folder/airplanes/image_0633.jpg new file mode 100644 index 0000000..b48e2d4 Binary files /dev/null and b/images/img_folder/airplanes/image_0633.jpg differ diff --git a/images/img_folder/airplanes/image_0634.jpg b/images/img_folder/airplanes/image_0634.jpg new file mode 100644 index 0000000..971a021 Binary files /dev/null and b/images/img_folder/airplanes/image_0634.jpg differ diff --git a/images/img_folder/airplanes/image_0635.jpg b/images/img_folder/airplanes/image_0635.jpg new file mode 100644 index 0000000..1c8b2e2 Binary files /dev/null and b/images/img_folder/airplanes/image_0635.jpg differ diff --git a/images/img_folder/airplanes/image_0636.jpg b/images/img_folder/airplanes/image_0636.jpg new file mode 100644 index 0000000..5156958 Binary files /dev/null and b/images/img_folder/airplanes/image_0636.jpg differ diff --git a/images/img_folder/airplanes/image_0637.jpg b/images/img_folder/airplanes/image_0637.jpg new file mode 100644 index 0000000..8838ea3 Binary files /dev/null and b/images/img_folder/airplanes/image_0637.jpg differ diff --git a/images/img_folder/airplanes/image_0638.jpg b/images/img_folder/airplanes/image_0638.jpg new file mode 100644 index 0000000..12d189a Binary files /dev/null and b/images/img_folder/airplanes/image_0638.jpg differ diff --git a/images/img_folder/airplanes/image_0639.jpg b/images/img_folder/airplanes/image_0639.jpg new file mode 100644 index 0000000..611ddef Binary files /dev/null and b/images/img_folder/airplanes/image_0639.jpg differ diff --git a/images/img_folder/airplanes/image_0640.jpg b/images/img_folder/airplanes/image_0640.jpg new file mode 100644 index 0000000..2800bdc Binary files /dev/null and b/images/img_folder/airplanes/image_0640.jpg differ diff --git a/images/img_folder/airplanes/image_0641.jpg b/images/img_folder/airplanes/image_0641.jpg new file mode 100644 index 0000000..8b5f1cb Binary files /dev/null and b/images/img_folder/airplanes/image_0641.jpg differ diff --git a/images/img_folder/airplanes/image_0642.jpg b/images/img_folder/airplanes/image_0642.jpg new file mode 100644 index 0000000..5b466fd Binary files /dev/null and b/images/img_folder/airplanes/image_0642.jpg differ diff --git a/images/img_folder/airplanes/image_0643.jpg b/images/img_folder/airplanes/image_0643.jpg new file mode 100644 index 0000000..2596ae0 Binary files /dev/null and b/images/img_folder/airplanes/image_0643.jpg differ diff --git a/images/img_folder/airplanes/image_0644.jpg b/images/img_folder/airplanes/image_0644.jpg new file mode 100644 index 0000000..4bd7c86 Binary files /dev/null and b/images/img_folder/airplanes/image_0644.jpg differ diff --git a/images/img_folder/airplanes/image_0645.jpg b/images/img_folder/airplanes/image_0645.jpg new file mode 100644 index 0000000..98f8d5d Binary files /dev/null and b/images/img_folder/airplanes/image_0645.jpg differ diff --git a/images/img_folder/airplanes/image_0646.jpg b/images/img_folder/airplanes/image_0646.jpg new file mode 100644 index 0000000..927b471 Binary files /dev/null and b/images/img_folder/airplanes/image_0646.jpg differ diff --git a/images/img_folder/airplanes/image_0647.jpg b/images/img_folder/airplanes/image_0647.jpg new file mode 100644 index 0000000..9de03d9 Binary files /dev/null and b/images/img_folder/airplanes/image_0647.jpg differ diff --git a/images/img_folder/airplanes/image_0648.jpg b/images/img_folder/airplanes/image_0648.jpg new file mode 100644 index 0000000..464dcfa Binary files /dev/null and b/images/img_folder/airplanes/image_0648.jpg differ diff --git a/images/img_folder/airplanes/image_0649.jpg b/images/img_folder/airplanes/image_0649.jpg new file mode 100644 index 0000000..581a9d2 Binary files /dev/null and b/images/img_folder/airplanes/image_0649.jpg differ diff --git a/images/img_folder/airplanes/image_0650.jpg b/images/img_folder/airplanes/image_0650.jpg new file mode 100644 index 0000000..81eabeb Binary files /dev/null and b/images/img_folder/airplanes/image_0650.jpg differ diff --git a/images/img_folder/airplanes/image_0651.jpg b/images/img_folder/airplanes/image_0651.jpg new file mode 100644 index 0000000..8d1ab4e Binary files /dev/null and b/images/img_folder/airplanes/image_0651.jpg differ diff --git a/images/img_folder/airplanes/image_0652.jpg b/images/img_folder/airplanes/image_0652.jpg new file mode 100644 index 0000000..160109d Binary files /dev/null and b/images/img_folder/airplanes/image_0652.jpg differ diff --git a/images/img_folder/airplanes/image_0653.jpg b/images/img_folder/airplanes/image_0653.jpg new file mode 100644 index 0000000..b74d2ee Binary files /dev/null and b/images/img_folder/airplanes/image_0653.jpg differ diff --git a/images/img_folder/airplanes/image_0654.jpg b/images/img_folder/airplanes/image_0654.jpg new file mode 100644 index 0000000..b8739a6 Binary files /dev/null and b/images/img_folder/airplanes/image_0654.jpg differ diff --git a/images/img_folder/airplanes/image_0655.jpg b/images/img_folder/airplanes/image_0655.jpg new file mode 100644 index 0000000..f24d96c Binary files /dev/null and b/images/img_folder/airplanes/image_0655.jpg differ diff --git a/images/img_folder/airplanes/image_0656.jpg b/images/img_folder/airplanes/image_0656.jpg new file mode 100644 index 0000000..41d3e2f Binary files /dev/null and b/images/img_folder/airplanes/image_0656.jpg differ diff --git a/images/img_folder/airplanes/image_0657.jpg b/images/img_folder/airplanes/image_0657.jpg new file mode 100644 index 0000000..f6d760a Binary files /dev/null and b/images/img_folder/airplanes/image_0657.jpg differ diff --git a/images/img_folder/airplanes/image_0658.jpg b/images/img_folder/airplanes/image_0658.jpg new file mode 100644 index 0000000..7251188 Binary files /dev/null and b/images/img_folder/airplanes/image_0658.jpg differ diff --git a/images/img_folder/airplanes/image_0659.jpg b/images/img_folder/airplanes/image_0659.jpg new file mode 100644 index 0000000..298672f Binary files /dev/null and b/images/img_folder/airplanes/image_0659.jpg differ diff --git a/images/img_folder/airplanes/image_0660.jpg b/images/img_folder/airplanes/image_0660.jpg new file mode 100644 index 0000000..5e62a26 Binary files /dev/null and b/images/img_folder/airplanes/image_0660.jpg differ diff --git a/images/img_folder/airplanes/image_0661.jpg b/images/img_folder/airplanes/image_0661.jpg new file mode 100644 index 0000000..02bb065 Binary files /dev/null and b/images/img_folder/airplanes/image_0661.jpg differ diff --git a/images/img_folder/airplanes/image_0662.jpg b/images/img_folder/airplanes/image_0662.jpg new file mode 100644 index 0000000..13c13d0 Binary files /dev/null and b/images/img_folder/airplanes/image_0662.jpg differ diff --git a/images/img_folder/airplanes/image_0663.jpg b/images/img_folder/airplanes/image_0663.jpg new file mode 100644 index 0000000..3ef9998 Binary files /dev/null and b/images/img_folder/airplanes/image_0663.jpg differ diff --git a/images/img_folder/airplanes/image_0664.jpg b/images/img_folder/airplanes/image_0664.jpg new file mode 100644 index 0000000..40996f1 Binary files /dev/null and b/images/img_folder/airplanes/image_0664.jpg differ diff --git a/images/img_folder/airplanes/image_0665.jpg b/images/img_folder/airplanes/image_0665.jpg new file mode 100644 index 0000000..22b8fde Binary files /dev/null and b/images/img_folder/airplanes/image_0665.jpg differ diff --git a/images/img_folder/airplanes/image_0666.jpg b/images/img_folder/airplanes/image_0666.jpg new file mode 100644 index 0000000..eac7d5a Binary files /dev/null and b/images/img_folder/airplanes/image_0666.jpg differ diff --git a/images/img_folder/airplanes/image_0667.jpg b/images/img_folder/airplanes/image_0667.jpg new file mode 100644 index 0000000..0ab8ac7 Binary files /dev/null and b/images/img_folder/airplanes/image_0667.jpg differ diff --git a/images/img_folder/airplanes/image_0668.jpg b/images/img_folder/airplanes/image_0668.jpg new file mode 100644 index 0000000..ba8045f Binary files /dev/null and b/images/img_folder/airplanes/image_0668.jpg differ diff --git a/images/img_folder/airplanes/image_0669.jpg b/images/img_folder/airplanes/image_0669.jpg new file mode 100644 index 0000000..b6a301a Binary files /dev/null and b/images/img_folder/airplanes/image_0669.jpg differ diff --git a/images/img_folder/airplanes/image_0670.jpg b/images/img_folder/airplanes/image_0670.jpg new file mode 100644 index 0000000..480512c Binary files /dev/null and b/images/img_folder/airplanes/image_0670.jpg differ diff --git a/images/img_folder/airplanes/image_0671.jpg b/images/img_folder/airplanes/image_0671.jpg new file mode 100644 index 0000000..0c73f1d Binary files /dev/null and b/images/img_folder/airplanes/image_0671.jpg differ diff --git a/images/img_folder/airplanes/image_0672.jpg b/images/img_folder/airplanes/image_0672.jpg new file mode 100644 index 0000000..cfc5e11 Binary files /dev/null and b/images/img_folder/airplanes/image_0672.jpg differ diff --git a/images/img_folder/airplanes/image_0673.jpg b/images/img_folder/airplanes/image_0673.jpg new file mode 100644 index 0000000..a857b85 Binary files /dev/null and b/images/img_folder/airplanes/image_0673.jpg differ diff --git a/images/img_folder/airplanes/image_0674.jpg b/images/img_folder/airplanes/image_0674.jpg new file mode 100644 index 0000000..b9b014c Binary files /dev/null and b/images/img_folder/airplanes/image_0674.jpg differ diff --git a/images/img_folder/airplanes/image_0675.jpg b/images/img_folder/airplanes/image_0675.jpg new file mode 100644 index 0000000..035fbb5 Binary files /dev/null and b/images/img_folder/airplanes/image_0675.jpg differ diff --git a/images/img_folder/airplanes/image_0676.jpg b/images/img_folder/airplanes/image_0676.jpg new file mode 100644 index 0000000..4a8be19 Binary files /dev/null and b/images/img_folder/airplanes/image_0676.jpg differ diff --git a/images/img_folder/airplanes/image_0677.jpg b/images/img_folder/airplanes/image_0677.jpg new file mode 100644 index 0000000..77c2040 Binary files /dev/null and b/images/img_folder/airplanes/image_0677.jpg differ diff --git a/images/img_folder/airplanes/image_0678.jpg b/images/img_folder/airplanes/image_0678.jpg new file mode 100644 index 0000000..5abbf10 Binary files /dev/null and b/images/img_folder/airplanes/image_0678.jpg differ diff --git a/images/img_folder/airplanes/image_0679.jpg b/images/img_folder/airplanes/image_0679.jpg new file mode 100644 index 0000000..72b72c7 Binary files /dev/null and b/images/img_folder/airplanes/image_0679.jpg differ diff --git a/images/img_folder/airplanes/image_0680.jpg b/images/img_folder/airplanes/image_0680.jpg new file mode 100644 index 0000000..bf565a7 Binary files /dev/null and b/images/img_folder/airplanes/image_0680.jpg differ diff --git a/images/img_folder/airplanes/image_0681.jpg b/images/img_folder/airplanes/image_0681.jpg new file mode 100644 index 0000000..760059d Binary files /dev/null and b/images/img_folder/airplanes/image_0681.jpg differ diff --git a/images/img_folder/airplanes/image_0682.jpg b/images/img_folder/airplanes/image_0682.jpg new file mode 100644 index 0000000..3e415a9 Binary files /dev/null and b/images/img_folder/airplanes/image_0682.jpg differ diff --git a/images/img_folder/airplanes/image_0683.jpg b/images/img_folder/airplanes/image_0683.jpg new file mode 100644 index 0000000..ab287d0 Binary files /dev/null and b/images/img_folder/airplanes/image_0683.jpg differ diff --git a/images/img_folder/airplanes/image_0684.jpg b/images/img_folder/airplanes/image_0684.jpg new file mode 100644 index 0000000..eb20480 Binary files /dev/null and b/images/img_folder/airplanes/image_0684.jpg differ diff --git a/images/img_folder/airplanes/image_0685.jpg b/images/img_folder/airplanes/image_0685.jpg new file mode 100644 index 0000000..0ae969c Binary files /dev/null and b/images/img_folder/airplanes/image_0685.jpg differ diff --git a/images/img_folder/airplanes/image_0686.jpg b/images/img_folder/airplanes/image_0686.jpg new file mode 100644 index 0000000..992d27b Binary files /dev/null and b/images/img_folder/airplanes/image_0686.jpg differ diff --git a/images/img_folder/airplanes/image_0687.jpg b/images/img_folder/airplanes/image_0687.jpg new file mode 100644 index 0000000..0c4a51c Binary files /dev/null and b/images/img_folder/airplanes/image_0687.jpg differ diff --git a/images/img_folder/airplanes/image_0688.jpg b/images/img_folder/airplanes/image_0688.jpg new file mode 100644 index 0000000..b794665 Binary files /dev/null and b/images/img_folder/airplanes/image_0688.jpg differ diff --git a/images/img_folder/airplanes/image_0689.jpg b/images/img_folder/airplanes/image_0689.jpg new file mode 100644 index 0000000..8dcca68 Binary files /dev/null and b/images/img_folder/airplanes/image_0689.jpg differ diff --git a/images/img_folder/airplanes/image_0690.jpg b/images/img_folder/airplanes/image_0690.jpg new file mode 100644 index 0000000..6992147 Binary files /dev/null and b/images/img_folder/airplanes/image_0690.jpg differ diff --git a/images/img_folder/airplanes/image_0691.jpg b/images/img_folder/airplanes/image_0691.jpg new file mode 100644 index 0000000..d096727 Binary files /dev/null and b/images/img_folder/airplanes/image_0691.jpg differ diff --git a/images/img_folder/airplanes/image_0692.jpg b/images/img_folder/airplanes/image_0692.jpg new file mode 100644 index 0000000..bcba881 Binary files /dev/null and b/images/img_folder/airplanes/image_0692.jpg differ diff --git a/images/img_folder/airplanes/image_0693.jpg b/images/img_folder/airplanes/image_0693.jpg new file mode 100644 index 0000000..adab9ba Binary files /dev/null and b/images/img_folder/airplanes/image_0693.jpg differ diff --git a/images/img_folder/airplanes/image_0694.jpg b/images/img_folder/airplanes/image_0694.jpg new file mode 100644 index 0000000..bba08f2 Binary files /dev/null and b/images/img_folder/airplanes/image_0694.jpg differ diff --git a/images/img_folder/airplanes/image_0695.jpg b/images/img_folder/airplanes/image_0695.jpg new file mode 100644 index 0000000..9e1d6e3 Binary files /dev/null and b/images/img_folder/airplanes/image_0695.jpg differ diff --git a/images/img_folder/airplanes/image_0696.jpg b/images/img_folder/airplanes/image_0696.jpg new file mode 100644 index 0000000..b5d10af Binary files /dev/null and b/images/img_folder/airplanes/image_0696.jpg differ diff --git a/images/img_folder/airplanes/image_0697.jpg b/images/img_folder/airplanes/image_0697.jpg new file mode 100644 index 0000000..9efb143 Binary files /dev/null and b/images/img_folder/airplanes/image_0697.jpg differ diff --git a/images/img_folder/airplanes/image_0698.jpg b/images/img_folder/airplanes/image_0698.jpg new file mode 100644 index 0000000..c9d5a2f Binary files /dev/null and b/images/img_folder/airplanes/image_0698.jpg differ diff --git a/images/img_folder/airplanes/image_0699.jpg b/images/img_folder/airplanes/image_0699.jpg new file mode 100644 index 0000000..c111618 Binary files /dev/null and b/images/img_folder/airplanes/image_0699.jpg differ diff --git a/images/img_folder/airplanes/image_0700.jpg b/images/img_folder/airplanes/image_0700.jpg new file mode 100644 index 0000000..c1be14b Binary files /dev/null and b/images/img_folder/airplanes/image_0700.jpg differ diff --git a/images/img_folder/airplanes/image_0701.jpg b/images/img_folder/airplanes/image_0701.jpg new file mode 100644 index 0000000..e4e19bd Binary files /dev/null and b/images/img_folder/airplanes/image_0701.jpg differ diff --git a/images/img_folder/airplanes/image_0702.jpg b/images/img_folder/airplanes/image_0702.jpg new file mode 100644 index 0000000..d72dca5 Binary files /dev/null and b/images/img_folder/airplanes/image_0702.jpg differ diff --git a/images/img_folder/airplanes/image_0703.jpg b/images/img_folder/airplanes/image_0703.jpg new file mode 100644 index 0000000..f70a666 Binary files /dev/null and b/images/img_folder/airplanes/image_0703.jpg differ diff --git a/images/img_folder/airplanes/image_0704.jpg b/images/img_folder/airplanes/image_0704.jpg new file mode 100644 index 0000000..90e07a2 Binary files /dev/null and b/images/img_folder/airplanes/image_0704.jpg differ diff --git a/images/img_folder/airplanes/image_0705.jpg b/images/img_folder/airplanes/image_0705.jpg new file mode 100644 index 0000000..d889bc2 Binary files /dev/null and b/images/img_folder/airplanes/image_0705.jpg differ diff --git a/images/img_folder/airplanes/image_0706.jpg b/images/img_folder/airplanes/image_0706.jpg new file mode 100644 index 0000000..a775abd Binary files /dev/null and b/images/img_folder/airplanes/image_0706.jpg differ diff --git a/images/img_folder/airplanes/image_0707.jpg b/images/img_folder/airplanes/image_0707.jpg new file mode 100644 index 0000000..46dd71d Binary files /dev/null and b/images/img_folder/airplanes/image_0707.jpg differ diff --git a/images/img_folder/airplanes/image_0708.jpg b/images/img_folder/airplanes/image_0708.jpg new file mode 100644 index 0000000..6dffbef Binary files /dev/null and b/images/img_folder/airplanes/image_0708.jpg differ diff --git a/images/img_folder/airplanes/image_0709.jpg b/images/img_folder/airplanes/image_0709.jpg new file mode 100644 index 0000000..01a99c1 Binary files /dev/null and b/images/img_folder/airplanes/image_0709.jpg differ diff --git a/images/img_folder/airplanes/image_0710.jpg b/images/img_folder/airplanes/image_0710.jpg new file mode 100644 index 0000000..cdf7cf3 Binary files /dev/null and b/images/img_folder/airplanes/image_0710.jpg differ diff --git a/images/img_folder/airplanes/image_0711.jpg b/images/img_folder/airplanes/image_0711.jpg new file mode 100644 index 0000000..11fac5e Binary files /dev/null and b/images/img_folder/airplanes/image_0711.jpg differ diff --git a/images/img_folder/airplanes/image_0712.jpg b/images/img_folder/airplanes/image_0712.jpg new file mode 100644 index 0000000..5c46c18 Binary files /dev/null and b/images/img_folder/airplanes/image_0712.jpg differ diff --git a/images/img_folder/airplanes/image_0713.jpg b/images/img_folder/airplanes/image_0713.jpg new file mode 100644 index 0000000..a1ba496 Binary files /dev/null and b/images/img_folder/airplanes/image_0713.jpg differ diff --git a/images/img_folder/airplanes/image_0714.jpg b/images/img_folder/airplanes/image_0714.jpg new file mode 100644 index 0000000..0c44810 Binary files /dev/null and b/images/img_folder/airplanes/image_0714.jpg differ diff --git a/images/img_folder/airplanes/image_0715.jpg b/images/img_folder/airplanes/image_0715.jpg new file mode 100644 index 0000000..d9510ef Binary files /dev/null and b/images/img_folder/airplanes/image_0715.jpg differ diff --git a/images/img_folder/airplanes/image_0716.jpg b/images/img_folder/airplanes/image_0716.jpg new file mode 100644 index 0000000..572a0b2 Binary files /dev/null and b/images/img_folder/airplanes/image_0716.jpg differ diff --git a/images/img_folder/airplanes/image_0717.jpg b/images/img_folder/airplanes/image_0717.jpg new file mode 100644 index 0000000..0255ccc Binary files /dev/null and b/images/img_folder/airplanes/image_0717.jpg differ diff --git a/images/img_folder/airplanes/image_0718.jpg b/images/img_folder/airplanes/image_0718.jpg new file mode 100644 index 0000000..06d2765 Binary files /dev/null and b/images/img_folder/airplanes/image_0718.jpg differ diff --git a/images/img_folder/airplanes/image_0719.jpg b/images/img_folder/airplanes/image_0719.jpg new file mode 100644 index 0000000..1fe66a9 Binary files /dev/null and b/images/img_folder/airplanes/image_0719.jpg differ diff --git a/images/img_folder/airplanes/image_0720.jpg b/images/img_folder/airplanes/image_0720.jpg new file mode 100644 index 0000000..9f7c8ff Binary files /dev/null and b/images/img_folder/airplanes/image_0720.jpg differ diff --git a/images/img_folder/airplanes/image_0721.jpg b/images/img_folder/airplanes/image_0721.jpg new file mode 100644 index 0000000..6429bca Binary files /dev/null and b/images/img_folder/airplanes/image_0721.jpg differ diff --git a/images/img_folder/airplanes/image_0722.jpg b/images/img_folder/airplanes/image_0722.jpg new file mode 100644 index 0000000..3e35518 Binary files /dev/null and b/images/img_folder/airplanes/image_0722.jpg differ diff --git a/images/img_folder/airplanes/image_0723.jpg b/images/img_folder/airplanes/image_0723.jpg new file mode 100644 index 0000000..b7ebc7b Binary files /dev/null and b/images/img_folder/airplanes/image_0723.jpg differ diff --git a/images/img_folder/airplanes/image_0724.jpg b/images/img_folder/airplanes/image_0724.jpg new file mode 100644 index 0000000..4acd700 Binary files /dev/null and b/images/img_folder/airplanes/image_0724.jpg differ diff --git a/images/img_folder/airplanes/image_0725.jpg b/images/img_folder/airplanes/image_0725.jpg new file mode 100644 index 0000000..2408bba Binary files /dev/null and b/images/img_folder/airplanes/image_0725.jpg differ diff --git a/images/img_folder/airplanes/image_0726.jpg b/images/img_folder/airplanes/image_0726.jpg new file mode 100644 index 0000000..b661d5e Binary files /dev/null and b/images/img_folder/airplanes/image_0726.jpg differ diff --git a/images/img_folder/airplanes/image_0727.jpg b/images/img_folder/airplanes/image_0727.jpg new file mode 100644 index 0000000..9804522 Binary files /dev/null and b/images/img_folder/airplanes/image_0727.jpg differ diff --git a/images/img_folder/airplanes/image_0728.jpg b/images/img_folder/airplanes/image_0728.jpg new file mode 100644 index 0000000..da8715c Binary files /dev/null and b/images/img_folder/airplanes/image_0728.jpg differ diff --git a/images/img_folder/airplanes/image_0729.jpg b/images/img_folder/airplanes/image_0729.jpg new file mode 100644 index 0000000..bfe4447 Binary files /dev/null and b/images/img_folder/airplanes/image_0729.jpg differ diff --git a/images/img_folder/airplanes/image_0730.jpg b/images/img_folder/airplanes/image_0730.jpg new file mode 100644 index 0000000..95ce418 Binary files /dev/null and b/images/img_folder/airplanes/image_0730.jpg differ diff --git a/images/img_folder/airplanes/image_0731.jpg b/images/img_folder/airplanes/image_0731.jpg new file mode 100644 index 0000000..f69c149 Binary files /dev/null and b/images/img_folder/airplanes/image_0731.jpg differ diff --git a/images/img_folder/airplanes/image_0732.jpg b/images/img_folder/airplanes/image_0732.jpg new file mode 100644 index 0000000..d927df2 Binary files /dev/null and b/images/img_folder/airplanes/image_0732.jpg differ diff --git a/images/img_folder/airplanes/image_0733.jpg b/images/img_folder/airplanes/image_0733.jpg new file mode 100644 index 0000000..beed557 Binary files /dev/null and b/images/img_folder/airplanes/image_0733.jpg differ diff --git a/images/img_folder/airplanes/image_0734.jpg b/images/img_folder/airplanes/image_0734.jpg new file mode 100644 index 0000000..ac2bb43 Binary files /dev/null and b/images/img_folder/airplanes/image_0734.jpg differ diff --git a/images/img_folder/airplanes/image_0735.jpg b/images/img_folder/airplanes/image_0735.jpg new file mode 100644 index 0000000..56f0432 Binary files /dev/null and b/images/img_folder/airplanes/image_0735.jpg differ diff --git a/images/img_folder/airplanes/image_0736.jpg b/images/img_folder/airplanes/image_0736.jpg new file mode 100644 index 0000000..b714b61 Binary files /dev/null and b/images/img_folder/airplanes/image_0736.jpg differ diff --git a/images/img_folder/airplanes/image_0737.jpg b/images/img_folder/airplanes/image_0737.jpg new file mode 100644 index 0000000..5bc20ad Binary files /dev/null and b/images/img_folder/airplanes/image_0737.jpg differ diff --git a/images/img_folder/airplanes/image_0738.jpg b/images/img_folder/airplanes/image_0738.jpg new file mode 100644 index 0000000..d8e7d88 Binary files /dev/null and b/images/img_folder/airplanes/image_0738.jpg differ diff --git a/images/img_folder/airplanes/image_0739.jpg b/images/img_folder/airplanes/image_0739.jpg new file mode 100644 index 0000000..45d9749 Binary files /dev/null and b/images/img_folder/airplanes/image_0739.jpg differ diff --git a/images/img_folder/airplanes/image_0740.jpg b/images/img_folder/airplanes/image_0740.jpg new file mode 100644 index 0000000..9e5ec0a Binary files /dev/null and b/images/img_folder/airplanes/image_0740.jpg differ diff --git a/images/img_folder/airplanes/image_0741.jpg b/images/img_folder/airplanes/image_0741.jpg new file mode 100644 index 0000000..f231a8e Binary files /dev/null and b/images/img_folder/airplanes/image_0741.jpg differ diff --git a/images/img_folder/airplanes/image_0742.jpg b/images/img_folder/airplanes/image_0742.jpg new file mode 100644 index 0000000..750d6af Binary files /dev/null and b/images/img_folder/airplanes/image_0742.jpg differ diff --git a/images/img_folder/airplanes/image_0743.jpg b/images/img_folder/airplanes/image_0743.jpg new file mode 100644 index 0000000..db6ebe2 Binary files /dev/null and b/images/img_folder/airplanes/image_0743.jpg differ diff --git a/images/img_folder/airplanes/image_0744.jpg b/images/img_folder/airplanes/image_0744.jpg new file mode 100644 index 0000000..8fb4d7b Binary files /dev/null and b/images/img_folder/airplanes/image_0744.jpg differ diff --git a/images/img_folder/airplanes/image_0745.jpg b/images/img_folder/airplanes/image_0745.jpg new file mode 100644 index 0000000..5895727 Binary files /dev/null and b/images/img_folder/airplanes/image_0745.jpg differ diff --git a/images/img_folder/airplanes/image_0746.jpg b/images/img_folder/airplanes/image_0746.jpg new file mode 100644 index 0000000..6e004bf Binary files /dev/null and b/images/img_folder/airplanes/image_0746.jpg differ diff --git a/images/img_folder/airplanes/image_0747.jpg b/images/img_folder/airplanes/image_0747.jpg new file mode 100644 index 0000000..26a4ba7 Binary files /dev/null and b/images/img_folder/airplanes/image_0747.jpg differ diff --git a/images/img_folder/airplanes/image_0748.jpg b/images/img_folder/airplanes/image_0748.jpg new file mode 100644 index 0000000..908994f Binary files /dev/null and b/images/img_folder/airplanes/image_0748.jpg differ diff --git a/images/img_folder/airplanes/image_0749.jpg b/images/img_folder/airplanes/image_0749.jpg new file mode 100644 index 0000000..fc5176f Binary files /dev/null and b/images/img_folder/airplanes/image_0749.jpg differ diff --git a/images/img_folder/airplanes/image_0750.jpg b/images/img_folder/airplanes/image_0750.jpg new file mode 100644 index 0000000..cd600ea Binary files /dev/null and b/images/img_folder/airplanes/image_0750.jpg differ diff --git a/images/img_folder/airplanes/image_0751.jpg b/images/img_folder/airplanes/image_0751.jpg new file mode 100644 index 0000000..2760a04 Binary files /dev/null and b/images/img_folder/airplanes/image_0751.jpg differ diff --git a/images/img_folder/airplanes/image_0752.jpg b/images/img_folder/airplanes/image_0752.jpg new file mode 100644 index 0000000..9f8756c Binary files /dev/null and b/images/img_folder/airplanes/image_0752.jpg differ diff --git a/images/img_folder/airplanes/image_0753.jpg b/images/img_folder/airplanes/image_0753.jpg new file mode 100644 index 0000000..b242501 Binary files /dev/null and b/images/img_folder/airplanes/image_0753.jpg differ diff --git a/images/img_folder/airplanes/image_0754.jpg b/images/img_folder/airplanes/image_0754.jpg new file mode 100644 index 0000000..b23d5d5 Binary files /dev/null and b/images/img_folder/airplanes/image_0754.jpg differ diff --git a/images/img_folder/airplanes/image_0755.jpg b/images/img_folder/airplanes/image_0755.jpg new file mode 100644 index 0000000..655e24c Binary files /dev/null and b/images/img_folder/airplanes/image_0755.jpg differ diff --git a/images/img_folder/airplanes/image_0756.jpg b/images/img_folder/airplanes/image_0756.jpg new file mode 100644 index 0000000..0309a4e Binary files /dev/null and b/images/img_folder/airplanes/image_0756.jpg differ diff --git a/images/img_folder/airplanes/image_0757.jpg b/images/img_folder/airplanes/image_0757.jpg new file mode 100644 index 0000000..7c3ca37 Binary files /dev/null and b/images/img_folder/airplanes/image_0757.jpg differ diff --git a/images/img_folder/airplanes/image_0758.jpg b/images/img_folder/airplanes/image_0758.jpg new file mode 100644 index 0000000..796fe2e Binary files /dev/null and b/images/img_folder/airplanes/image_0758.jpg differ diff --git a/images/img_folder/airplanes/image_0759.jpg b/images/img_folder/airplanes/image_0759.jpg new file mode 100644 index 0000000..ba86310 Binary files /dev/null and b/images/img_folder/airplanes/image_0759.jpg differ diff --git a/images/img_folder/airplanes/image_0760.jpg b/images/img_folder/airplanes/image_0760.jpg new file mode 100644 index 0000000..78fd4d0 Binary files /dev/null and b/images/img_folder/airplanes/image_0760.jpg differ diff --git a/images/img_folder/airplanes/image_0761.jpg b/images/img_folder/airplanes/image_0761.jpg new file mode 100644 index 0000000..f1581d8 Binary files /dev/null and b/images/img_folder/airplanes/image_0761.jpg differ diff --git a/images/img_folder/airplanes/image_0762.jpg b/images/img_folder/airplanes/image_0762.jpg new file mode 100644 index 0000000..03ca448 Binary files /dev/null and b/images/img_folder/airplanes/image_0762.jpg differ diff --git a/images/img_folder/airplanes/image_0763.jpg b/images/img_folder/airplanes/image_0763.jpg new file mode 100644 index 0000000..13c6fae Binary files /dev/null and b/images/img_folder/airplanes/image_0763.jpg differ diff --git a/images/img_folder/airplanes/image_0764.jpg b/images/img_folder/airplanes/image_0764.jpg new file mode 100644 index 0000000..79d40d4 Binary files /dev/null and b/images/img_folder/airplanes/image_0764.jpg differ diff --git a/images/img_folder/airplanes/image_0765.jpg b/images/img_folder/airplanes/image_0765.jpg new file mode 100644 index 0000000..12b4079 Binary files /dev/null and b/images/img_folder/airplanes/image_0765.jpg differ diff --git a/images/img_folder/airplanes/image_0766.jpg b/images/img_folder/airplanes/image_0766.jpg new file mode 100644 index 0000000..48cd176 Binary files /dev/null and b/images/img_folder/airplanes/image_0766.jpg differ diff --git a/images/img_folder/airplanes/image_0767.jpg b/images/img_folder/airplanes/image_0767.jpg new file mode 100644 index 0000000..46dfbb5 Binary files /dev/null and b/images/img_folder/airplanes/image_0767.jpg differ diff --git a/images/img_folder/airplanes/image_0768.jpg b/images/img_folder/airplanes/image_0768.jpg new file mode 100644 index 0000000..25459f5 Binary files /dev/null and b/images/img_folder/airplanes/image_0768.jpg differ diff --git a/images/img_folder/airplanes/image_0769.jpg b/images/img_folder/airplanes/image_0769.jpg new file mode 100644 index 0000000..c31b491 Binary files /dev/null and b/images/img_folder/airplanes/image_0769.jpg differ diff --git a/images/img_folder/airplanes/image_0770.jpg b/images/img_folder/airplanes/image_0770.jpg new file mode 100644 index 0000000..5358d34 Binary files /dev/null and b/images/img_folder/airplanes/image_0770.jpg differ diff --git a/images/img_folder/airplanes/image_0771.jpg b/images/img_folder/airplanes/image_0771.jpg new file mode 100644 index 0000000..5b2fd86 Binary files /dev/null and b/images/img_folder/airplanes/image_0771.jpg differ diff --git a/images/img_folder/airplanes/image_0772.jpg b/images/img_folder/airplanes/image_0772.jpg new file mode 100644 index 0000000..d94d18b Binary files /dev/null and b/images/img_folder/airplanes/image_0772.jpg differ diff --git a/images/img_folder/airplanes/image_0773.jpg b/images/img_folder/airplanes/image_0773.jpg new file mode 100644 index 0000000..dcede95 Binary files /dev/null and b/images/img_folder/airplanes/image_0773.jpg differ diff --git a/images/img_folder/airplanes/image_0774.jpg b/images/img_folder/airplanes/image_0774.jpg new file mode 100644 index 0000000..370a214 Binary files /dev/null and b/images/img_folder/airplanes/image_0774.jpg differ diff --git a/images/img_folder/airplanes/image_0775.jpg b/images/img_folder/airplanes/image_0775.jpg new file mode 100644 index 0000000..32c6d6a Binary files /dev/null and b/images/img_folder/airplanes/image_0775.jpg differ diff --git a/images/img_folder/airplanes/image_0776.jpg b/images/img_folder/airplanes/image_0776.jpg new file mode 100644 index 0000000..aae99f6 Binary files /dev/null and b/images/img_folder/airplanes/image_0776.jpg differ diff --git a/images/img_folder/airplanes/image_0777.jpg b/images/img_folder/airplanes/image_0777.jpg new file mode 100644 index 0000000..ee2d142 Binary files /dev/null and b/images/img_folder/airplanes/image_0777.jpg differ diff --git a/images/img_folder/airplanes/image_0778.jpg b/images/img_folder/airplanes/image_0778.jpg new file mode 100644 index 0000000..8071108 Binary files /dev/null and b/images/img_folder/airplanes/image_0778.jpg differ diff --git a/images/img_folder/airplanes/image_0779.jpg b/images/img_folder/airplanes/image_0779.jpg new file mode 100644 index 0000000..5c90e7e Binary files /dev/null and b/images/img_folder/airplanes/image_0779.jpg differ diff --git a/images/img_folder/airplanes/image_0780.jpg b/images/img_folder/airplanes/image_0780.jpg new file mode 100644 index 0000000..96cde3f Binary files /dev/null and b/images/img_folder/airplanes/image_0780.jpg differ diff --git a/images/img_folder/airplanes/image_0781.jpg b/images/img_folder/airplanes/image_0781.jpg new file mode 100644 index 0000000..1773a30 Binary files /dev/null and b/images/img_folder/airplanes/image_0781.jpg differ diff --git a/images/img_folder/airplanes/image_0782.jpg b/images/img_folder/airplanes/image_0782.jpg new file mode 100644 index 0000000..f80da8c Binary files /dev/null and b/images/img_folder/airplanes/image_0782.jpg differ diff --git a/images/img_folder/airplanes/image_0783.jpg b/images/img_folder/airplanes/image_0783.jpg new file mode 100644 index 0000000..141cd5c Binary files /dev/null and b/images/img_folder/airplanes/image_0783.jpg differ diff --git a/images/img_folder/airplanes/image_0784.jpg b/images/img_folder/airplanes/image_0784.jpg new file mode 100644 index 0000000..2aaa4a4 Binary files /dev/null and b/images/img_folder/airplanes/image_0784.jpg differ diff --git a/images/img_folder/airplanes/image_0785.jpg b/images/img_folder/airplanes/image_0785.jpg new file mode 100644 index 0000000..b3dfa23 Binary files /dev/null and b/images/img_folder/airplanes/image_0785.jpg differ diff --git a/images/img_folder/airplanes/image_0786.jpg b/images/img_folder/airplanes/image_0786.jpg new file mode 100644 index 0000000..a6a3375 Binary files /dev/null and b/images/img_folder/airplanes/image_0786.jpg differ diff --git a/images/img_folder/airplanes/image_0787.jpg b/images/img_folder/airplanes/image_0787.jpg new file mode 100644 index 0000000..cafe830 Binary files /dev/null and b/images/img_folder/airplanes/image_0787.jpg differ diff --git a/images/img_folder/airplanes/image_0788.jpg b/images/img_folder/airplanes/image_0788.jpg new file mode 100644 index 0000000..cee78d4 Binary files /dev/null and b/images/img_folder/airplanes/image_0788.jpg differ diff --git a/images/img_folder/airplanes/image_0789.jpg b/images/img_folder/airplanes/image_0789.jpg new file mode 100644 index 0000000..4cd73f7 Binary files /dev/null and b/images/img_folder/airplanes/image_0789.jpg differ diff --git a/images/img_folder/airplanes/image_0790.jpg b/images/img_folder/airplanes/image_0790.jpg new file mode 100644 index 0000000..041d15b Binary files /dev/null and b/images/img_folder/airplanes/image_0790.jpg differ diff --git a/images/img_folder/airplanes/image_0791.jpg b/images/img_folder/airplanes/image_0791.jpg new file mode 100644 index 0000000..291c003 Binary files /dev/null and b/images/img_folder/airplanes/image_0791.jpg differ diff --git a/images/img_folder/airplanes/image_0792.jpg b/images/img_folder/airplanes/image_0792.jpg new file mode 100644 index 0000000..cb84386 Binary files /dev/null and b/images/img_folder/airplanes/image_0792.jpg differ diff --git a/images/img_folder/airplanes/image_0793.jpg b/images/img_folder/airplanes/image_0793.jpg new file mode 100644 index 0000000..affda2a Binary files /dev/null and b/images/img_folder/airplanes/image_0793.jpg differ diff --git a/images/img_folder/airplanes/image_0794.jpg b/images/img_folder/airplanes/image_0794.jpg new file mode 100644 index 0000000..b9dcb64 Binary files /dev/null and b/images/img_folder/airplanes/image_0794.jpg differ diff --git a/images/img_folder/airplanes/image_0795.jpg b/images/img_folder/airplanes/image_0795.jpg new file mode 100644 index 0000000..0a1c72f Binary files /dev/null and b/images/img_folder/airplanes/image_0795.jpg differ diff --git a/images/img_folder/airplanes/image_0796.jpg b/images/img_folder/airplanes/image_0796.jpg new file mode 100644 index 0000000..f0936fe Binary files /dev/null and b/images/img_folder/airplanes/image_0796.jpg differ diff --git a/images/img_folder/airplanes/image_0797.jpg b/images/img_folder/airplanes/image_0797.jpg new file mode 100644 index 0000000..96b1205 Binary files /dev/null and b/images/img_folder/airplanes/image_0797.jpg differ diff --git a/images/img_folder/airplanes/image_0798.jpg b/images/img_folder/airplanes/image_0798.jpg new file mode 100644 index 0000000..628eaec Binary files /dev/null and b/images/img_folder/airplanes/image_0798.jpg differ diff --git a/images/img_folder/airplanes/image_0799.jpg b/images/img_folder/airplanes/image_0799.jpg new file mode 100644 index 0000000..a08d1ed Binary files /dev/null and b/images/img_folder/airplanes/image_0799.jpg differ diff --git a/images/img_folder/airplanes/image_0800.jpg b/images/img_folder/airplanes/image_0800.jpg new file mode 100644 index 0000000..2d56989 Binary files /dev/null and b/images/img_folder/airplanes/image_0800.jpg differ diff --git a/images/img_folder/anchor/image_0001.jpg b/images/img_folder/anchor/image_0001.jpg new file mode 100644 index 0000000..d2f97ff Binary files /dev/null and b/images/img_folder/anchor/image_0001.jpg differ diff --git a/images/img_folder/anchor/image_0002.jpg b/images/img_folder/anchor/image_0002.jpg new file mode 100644 index 0000000..b4773f2 Binary files /dev/null and b/images/img_folder/anchor/image_0002.jpg differ diff --git a/images/img_folder/anchor/image_0003.jpg b/images/img_folder/anchor/image_0003.jpg new file mode 100644 index 0000000..7cf9380 Binary files /dev/null and b/images/img_folder/anchor/image_0003.jpg differ diff --git a/images/img_folder/anchor/image_0004.jpg b/images/img_folder/anchor/image_0004.jpg new file mode 100644 index 0000000..3eadf34 Binary files /dev/null and b/images/img_folder/anchor/image_0004.jpg differ diff --git a/images/img_folder/anchor/image_0005.jpg b/images/img_folder/anchor/image_0005.jpg new file mode 100644 index 0000000..f7a961e Binary files /dev/null and b/images/img_folder/anchor/image_0005.jpg differ diff --git a/images/img_folder/anchor/image_0006.jpg b/images/img_folder/anchor/image_0006.jpg new file mode 100644 index 0000000..6d3e268 Binary files /dev/null and b/images/img_folder/anchor/image_0006.jpg differ diff --git a/images/img_folder/anchor/image_0007.jpg b/images/img_folder/anchor/image_0007.jpg new file mode 100644 index 0000000..329bd15 Binary files /dev/null and b/images/img_folder/anchor/image_0007.jpg differ diff --git a/images/img_folder/anchor/image_0008.jpg b/images/img_folder/anchor/image_0008.jpg new file mode 100644 index 0000000..1f15ed3 Binary files /dev/null and b/images/img_folder/anchor/image_0008.jpg differ diff --git a/images/img_folder/anchor/image_0009.jpg b/images/img_folder/anchor/image_0009.jpg new file mode 100644 index 0000000..76c4d51 Binary files /dev/null and b/images/img_folder/anchor/image_0009.jpg differ diff --git a/images/img_folder/anchor/image_0010.jpg b/images/img_folder/anchor/image_0010.jpg new file mode 100644 index 0000000..777aabf Binary files /dev/null and b/images/img_folder/anchor/image_0010.jpg differ diff --git a/images/img_folder/anchor/image_0011.jpg b/images/img_folder/anchor/image_0011.jpg new file mode 100644 index 0000000..b26196a Binary files /dev/null and b/images/img_folder/anchor/image_0011.jpg differ diff --git a/images/img_folder/anchor/image_0012.jpg b/images/img_folder/anchor/image_0012.jpg new file mode 100644 index 0000000..239cb80 Binary files /dev/null and b/images/img_folder/anchor/image_0012.jpg differ diff --git a/images/img_folder/anchor/image_0013.jpg b/images/img_folder/anchor/image_0013.jpg new file mode 100644 index 0000000..6eff368 Binary files /dev/null and b/images/img_folder/anchor/image_0013.jpg differ diff --git a/images/img_folder/anchor/image_0014.jpg b/images/img_folder/anchor/image_0014.jpg new file mode 100644 index 0000000..22badfd Binary files /dev/null and b/images/img_folder/anchor/image_0014.jpg differ diff --git a/images/img_folder/anchor/image_0015.jpg b/images/img_folder/anchor/image_0015.jpg new file mode 100644 index 0000000..f7f1430 Binary files /dev/null and b/images/img_folder/anchor/image_0015.jpg differ diff --git a/images/img_folder/anchor/image_0016.jpg b/images/img_folder/anchor/image_0016.jpg new file mode 100644 index 0000000..70a4054 Binary files /dev/null and b/images/img_folder/anchor/image_0016.jpg differ diff --git a/images/img_folder/anchor/image_0017.jpg b/images/img_folder/anchor/image_0017.jpg new file mode 100644 index 0000000..4bd9d86 Binary files /dev/null and b/images/img_folder/anchor/image_0017.jpg differ diff --git a/images/img_folder/anchor/image_0018.jpg b/images/img_folder/anchor/image_0018.jpg new file mode 100644 index 0000000..e1f0590 Binary files /dev/null and b/images/img_folder/anchor/image_0018.jpg differ diff --git a/images/img_folder/anchor/image_0019.jpg b/images/img_folder/anchor/image_0019.jpg new file mode 100644 index 0000000..0f243ce Binary files /dev/null and b/images/img_folder/anchor/image_0019.jpg differ diff --git a/images/img_folder/anchor/image_0020.jpg b/images/img_folder/anchor/image_0020.jpg new file mode 100644 index 0000000..d9076df Binary files /dev/null and b/images/img_folder/anchor/image_0020.jpg differ diff --git a/images/img_folder/anchor/image_0021.jpg b/images/img_folder/anchor/image_0021.jpg new file mode 100644 index 0000000..5deab9f Binary files /dev/null and b/images/img_folder/anchor/image_0021.jpg differ diff --git a/images/img_folder/anchor/image_0022.jpg b/images/img_folder/anchor/image_0022.jpg new file mode 100644 index 0000000..7f88724 Binary files /dev/null and b/images/img_folder/anchor/image_0022.jpg differ diff --git a/images/img_folder/anchor/image_0023.jpg b/images/img_folder/anchor/image_0023.jpg new file mode 100644 index 0000000..0b4c779 Binary files /dev/null and b/images/img_folder/anchor/image_0023.jpg differ diff --git a/images/img_folder/anchor/image_0024.jpg b/images/img_folder/anchor/image_0024.jpg new file mode 100644 index 0000000..fa3dfd5 Binary files /dev/null and b/images/img_folder/anchor/image_0024.jpg differ diff --git a/images/img_folder/anchor/image_0025.jpg b/images/img_folder/anchor/image_0025.jpg new file mode 100644 index 0000000..0dba2f3 Binary files /dev/null and b/images/img_folder/anchor/image_0025.jpg differ diff --git a/images/img_folder/anchor/image_0026.jpg b/images/img_folder/anchor/image_0026.jpg new file mode 100644 index 0000000..43b3077 Binary files /dev/null and b/images/img_folder/anchor/image_0026.jpg differ diff --git a/images/img_folder/anchor/image_0027.jpg b/images/img_folder/anchor/image_0027.jpg new file mode 100644 index 0000000..39cdd86 Binary files /dev/null and b/images/img_folder/anchor/image_0027.jpg differ diff --git a/images/img_folder/anchor/image_0028.jpg b/images/img_folder/anchor/image_0028.jpg new file mode 100644 index 0000000..16abf60 Binary files /dev/null and b/images/img_folder/anchor/image_0028.jpg differ diff --git a/images/img_folder/anchor/image_0029.jpg b/images/img_folder/anchor/image_0029.jpg new file mode 100644 index 0000000..05fce76 Binary files /dev/null and b/images/img_folder/anchor/image_0029.jpg differ diff --git a/images/img_folder/anchor/image_0030.jpg b/images/img_folder/anchor/image_0030.jpg new file mode 100644 index 0000000..1b0d30c Binary files /dev/null and b/images/img_folder/anchor/image_0030.jpg differ diff --git a/images/img_folder/anchor/image_0031.jpg b/images/img_folder/anchor/image_0031.jpg new file mode 100644 index 0000000..b2842ba Binary files /dev/null and b/images/img_folder/anchor/image_0031.jpg differ diff --git a/images/img_folder/anchor/image_0032.jpg b/images/img_folder/anchor/image_0032.jpg new file mode 100644 index 0000000..c94a1bc Binary files /dev/null and b/images/img_folder/anchor/image_0032.jpg differ diff --git a/images/img_folder/anchor/image_0033.jpg b/images/img_folder/anchor/image_0033.jpg new file mode 100644 index 0000000..626d9c7 Binary files /dev/null and b/images/img_folder/anchor/image_0033.jpg differ diff --git a/images/img_folder/anchor/image_0034.jpg b/images/img_folder/anchor/image_0034.jpg new file mode 100644 index 0000000..e2de64a Binary files /dev/null and b/images/img_folder/anchor/image_0034.jpg differ diff --git a/images/img_folder/anchor/image_0035.jpg b/images/img_folder/anchor/image_0035.jpg new file mode 100644 index 0000000..0ad9b8f Binary files /dev/null and b/images/img_folder/anchor/image_0035.jpg differ diff --git a/images/img_folder/anchor/image_0036.jpg b/images/img_folder/anchor/image_0036.jpg new file mode 100644 index 0000000..0a83805 Binary files /dev/null and b/images/img_folder/anchor/image_0036.jpg differ diff --git a/images/img_folder/anchor/image_0037.jpg b/images/img_folder/anchor/image_0037.jpg new file mode 100644 index 0000000..54907d3 Binary files /dev/null and b/images/img_folder/anchor/image_0037.jpg differ diff --git a/images/img_folder/anchor/image_0038.jpg b/images/img_folder/anchor/image_0038.jpg new file mode 100644 index 0000000..925ccce Binary files /dev/null and b/images/img_folder/anchor/image_0038.jpg differ diff --git a/images/img_folder/anchor/image_0039.jpg b/images/img_folder/anchor/image_0039.jpg new file mode 100644 index 0000000..7850a49 Binary files /dev/null and b/images/img_folder/anchor/image_0039.jpg differ diff --git a/images/img_folder/anchor/image_0040.jpg b/images/img_folder/anchor/image_0040.jpg new file mode 100644 index 0000000..eb680a3 Binary files /dev/null and b/images/img_folder/anchor/image_0040.jpg differ diff --git a/images/img_folder/anchor/image_0041.jpg b/images/img_folder/anchor/image_0041.jpg new file mode 100644 index 0000000..0a5d9de Binary files /dev/null and b/images/img_folder/anchor/image_0041.jpg differ diff --git a/images/img_folder/anchor/image_0042.jpg b/images/img_folder/anchor/image_0042.jpg new file mode 100644 index 0000000..8f43ce0 Binary files /dev/null and b/images/img_folder/anchor/image_0042.jpg differ diff --git a/images/mask_cartoon.jpg b/images/mask_cartoon.jpg new file mode 100644 index 0000000..a8768ab Binary files /dev/null and b/images/mask_cartoon.jpg differ diff --git a/images/red_car.jpg b/images/red_car.jpg new file mode 100644 index 0000000..47ac06a Binary files /dev/null and b/images/red_car.jpg differ diff --git a/images/regionFill_test.jpg b/images/regionFill_test.jpg new file mode 100644 index 0000000..cee90fc Binary files /dev/null and b/images/regionFill_test.jpg differ diff --git a/images/regionFill_test2.jpg b/images/regionFill_test2.jpg new file mode 100644 index 0000000..7972f56 Binary files /dev/null and b/images/regionFill_test2.jpg differ diff --git a/images/regionFill_test3.jpg b/images/regionFill_test3.jpg new file mode 100644 index 0000000..30bc499 Binary files /dev/null and b/images/regionFill_test3.jpg differ diff --git a/images/regionFill_test4.jpg b/images/regionFill_test4.jpg new file mode 100644 index 0000000..9e4a16b Binary files /dev/null and b/images/regionFill_test4.jpg differ diff --git a/images/regionFill_test5.jpeg b/images/regionFill_test5.jpeg new file mode 100644 index 0000000..3d8f18a Binary files /dev/null and b/images/regionFill_test5.jpeg differ diff --git a/images/regionFill_test5.jpg b/images/regionFill_test5.jpg new file mode 100644 index 0000000..d714d28 Binary files /dev/null and b/images/regionFill_test5.jpg differ diff --git a/images/regionFill_test6.jpg b/images/regionFill_test6.jpg new file mode 100644 index 0000000..6cc95f8 Binary files /dev/null and b/images/regionFill_test6.jpg differ diff --git a/images/regionFill_test7.jpg b/images/regionFill_test7.jpg new file mode 100644 index 0000000..605d5be Binary files /dev/null and b/images/regionFill_test7.jpg differ diff --git a/images/sky.jpg b/images/sky.jpg new file mode 100644 index 0000000..8a6eba4 Binary files /dev/null and b/images/sky.jpg differ diff --git a/images/smile.jpg b/images/smile.jpg new file mode 100644 index 0000000..2847bb8 Binary files /dev/null and b/images/smile.jpg differ diff --git a/images/templateMatcher_test5.jpg b/images/templateMatcher_test5.jpg new file mode 100644 index 0000000..f847cb2 Binary files /dev/null and b/images/templateMatcher_test5.jpg differ diff --git a/images/templateMatcher_test8.jpg b/images/templateMatcher_test8.jpg new file mode 100644 index 0000000..de09f7e Binary files /dev/null and b/images/templateMatcher_test8.jpg differ diff --git a/images/test/airplanes/image_0001.jpg b/images/test/airplanes/image_0001.jpg new file mode 100644 index 0000000..39b7760 Binary files /dev/null and b/images/test/airplanes/image_0001.jpg differ diff --git a/images/test/airplanes/image_0002.jpg b/images/test/airplanes/image_0002.jpg new file mode 100644 index 0000000..c6a1026 Binary files /dev/null and b/images/test/airplanes/image_0002.jpg differ diff --git a/images/test/airplanes/image_0003.jpg b/images/test/airplanes/image_0003.jpg new file mode 100644 index 0000000..2589eaa Binary files /dev/null and b/images/test/airplanes/image_0003.jpg differ diff --git a/images/test/airplanes/image_0004.jpg b/images/test/airplanes/image_0004.jpg new file mode 100644 index 0000000..10aada6 Binary files /dev/null and b/images/test/airplanes/image_0004.jpg differ diff --git a/images/test/airplanes/image_0005.jpg b/images/test/airplanes/image_0005.jpg new file mode 100644 index 0000000..380fac3 Binary files /dev/null and b/images/test/airplanes/image_0005.jpg differ diff --git a/images/test/airplanes/image_0006.jpg b/images/test/airplanes/image_0006.jpg new file mode 100644 index 0000000..ab7bbba Binary files /dev/null and b/images/test/airplanes/image_0006.jpg differ diff --git a/images/test/ferry/image_0001.jpg b/images/test/ferry/image_0001.jpg new file mode 100644 index 0000000..2b9b5e3 Binary files /dev/null and b/images/test/ferry/image_0001.jpg differ diff --git a/images/test/ferry/image_0002.jpg b/images/test/ferry/image_0002.jpg new file mode 100644 index 0000000..dc3bdcc Binary files /dev/null and b/images/test/ferry/image_0002.jpg differ diff --git a/images/test/ferry/image_0003.jpg b/images/test/ferry/image_0003.jpg new file mode 100644 index 0000000..e1d0c2b Binary files /dev/null and b/images/test/ferry/image_0003.jpg differ diff --git a/images/test/ferry/image_0004.jpg b/images/test/ferry/image_0004.jpg new file mode 100644 index 0000000..271c43f Binary files /dev/null and b/images/test/ferry/image_0004.jpg differ diff --git a/images/test/ferry/image_0005.jpg b/images/test/ferry/image_0005.jpg new file mode 100644 index 0000000..a1310f5 Binary files /dev/null and b/images/test/ferry/image_0005.jpg differ diff --git a/images/test/ferry/image_0006.jpg b/images/test/ferry/image_0006.jpg new file mode 100644 index 0000000..bdb16d5 Binary files /dev/null and b/images/test/ferry/image_0006.jpg differ diff --git a/images/test/laptop/image_0001.jpg b/images/test/laptop/image_0001.jpg new file mode 100644 index 0000000..00968e2 Binary files /dev/null and b/images/test/laptop/image_0001.jpg differ diff --git a/images/test/laptop/image_0002.jpg b/images/test/laptop/image_0002.jpg new file mode 100644 index 0000000..efd30ca Binary files /dev/null and b/images/test/laptop/image_0002.jpg differ diff --git a/images/test/laptop/image_0003.jpg b/images/test/laptop/image_0003.jpg new file mode 100644 index 0000000..4ac7180 Binary files /dev/null and b/images/test/laptop/image_0003.jpg differ diff --git a/images/test/laptop/image_0004.jpg b/images/test/laptop/image_0004.jpg new file mode 100644 index 0000000..a39e296 Binary files /dev/null and b/images/test/laptop/image_0004.jpg differ diff --git a/images/test/laptop/image_0005.jpg b/images/test/laptop/image_0005.jpg new file mode 100644 index 0000000..7e80884 Binary files /dev/null and b/images/test/laptop/image_0005.jpg differ diff --git a/images/test/laptop/image_0006.jpg b/images/test/laptop/image_0006.jpg new file mode 100644 index 0000000..39f417d Binary files /dev/null and b/images/test/laptop/image_0006.jpg differ diff --git a/images/watershed2.jpg b/images/watershed2.jpg new file mode 100644 index 0000000..bf55f35 Binary files /dev/null and b/images/watershed2.jpg differ diff --git a/images/watershed3.jpg b/images/watershed3.jpg new file mode 100644 index 0000000..6006df8 Binary files /dev/null and b/images/watershed3.jpg differ diff --git a/images/watershed4.jpg b/images/watershed4.jpg new file mode 100644 index 0000000..cd52e27 Binary files /dev/null and b/images/watershed4.jpg differ diff --git a/images/yellow_car.jpg b/images/yellow_car.jpg new file mode 100644 index 0000000..9b2a244 Binary files /dev/null and b/images/yellow_car.jpg differ diff --git a/macros/colorChange.sci b/macros/colorChange.sci new file mode 100644 index 0000000..ac5bab5 --- /dev/null +++ b/macros/colorChange.sci @@ -0,0 +1,89 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = colorChange(src,mask,varargin) +// This function seamlessly mixes two differently colored versions of the input image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = colorChange(src, mask, red_mul, green_mul, blue_mul ) +// +// Parameters +// outputImage: resultant Output image +// src: Input source image +// mask: Input mask image with same size as that of source image. +// red_mul: R-channel multiply factor (float) (default value= 1.0f) +// green_mul: G-channel multiply factor.(float) (default value= 1.0f) +// blue_mul: B-channel multiply factor.(float) (default value= 1.0f) +// -Multiplication factor is between .5 to 2.5. +// +// Description +// Given an original color image, two differently colored versions of this image can be mixed seamlessly. +// +// Examples +// src = imread("/images/color2.jpeg"); +// mask = roiFreeHand(src); //creating a mask +// +// outputImage1 = colorChange(src, mask) //using default value for all optional parameters +// imshow(outputImage1);//view the output +// +// outputImage2 = colorChange(src, mask,0.5 ) //specifying just the value of red_mul +// imshow(outputImage2);//view the output +// +// outputImage3 = colorChange(src, mask,0.5 , 1, 2.5 ) //specifying value of all optional parameter +// imshow(outputImage3);//view the output +// +// outputImage4 = colorChange(src, mask,0.5 , [] , 2.5 ) //skipping the second argument +// imshow(outputImage4);//view the output +// +// Examples +// src = imread("../images/color2.jpeg"); +// [row col] = size(src) +// mask = zeros(row,col) //creating a mask +// mask(100:140,100:150) =255 +// imshow(mask); view the mask +// outputImage = colorChange(src, mask,0.5 , 1, 2.5 ) //specifying value of all optional parameter +// imshow(outputImage);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>5 //max i/p arguments are 5 + error(msprintf(" Too many input arguments")); + elseif rhs<2 //min i/p arguments are 2 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(mask); + + + red_mul = argindefault ( varargin , 1 , 1.0 );//default value is 1.0 + green_mul = argindefault ( varargin , 2 , 1.0 );//default value is 1.0 + border = argindefault ( varargin , 3 , 1.0 );//default value is 1.0 + + out = raw_colorChange(image_list1,image_list2,red_mul,green_mul,blue_mul ); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/colorChange.sci~ b/macros/colorChange.sci~ new file mode 100644 index 0000000..ac5bab5 --- /dev/null +++ b/macros/colorChange.sci~ @@ -0,0 +1,89 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = colorChange(src,mask,varargin) +// This function seamlessly mixes two differently colored versions of the input image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = colorChange(src, mask, red_mul, green_mul, blue_mul ) +// +// Parameters +// outputImage: resultant Output image +// src: Input source image +// mask: Input mask image with same size as that of source image. +// red_mul: R-channel multiply factor (float) (default value= 1.0f) +// green_mul: G-channel multiply factor.(float) (default value= 1.0f) +// blue_mul: B-channel multiply factor.(float) (default value= 1.0f) +// -Multiplication factor is between .5 to 2.5. +// +// Description +// Given an original color image, two differently colored versions of this image can be mixed seamlessly. +// +// Examples +// src = imread("/images/color2.jpeg"); +// mask = roiFreeHand(src); //creating a mask +// +// outputImage1 = colorChange(src, mask) //using default value for all optional parameters +// imshow(outputImage1);//view the output +// +// outputImage2 = colorChange(src, mask,0.5 ) //specifying just the value of red_mul +// imshow(outputImage2);//view the output +// +// outputImage3 = colorChange(src, mask,0.5 , 1, 2.5 ) //specifying value of all optional parameter +// imshow(outputImage3);//view the output +// +// outputImage4 = colorChange(src, mask,0.5 , [] , 2.5 ) //skipping the second argument +// imshow(outputImage4);//view the output +// +// Examples +// src = imread("../images/color2.jpeg"); +// [row col] = size(src) +// mask = zeros(row,col) //creating a mask +// mask(100:140,100:150) =255 +// imshow(mask); view the mask +// outputImage = colorChange(src, mask,0.5 , 1, 2.5 ) //specifying value of all optional parameter +// imshow(outputImage);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>5 //max i/p arguments are 5 + error(msprintf(" Too many input arguments")); + elseif rhs<2 //min i/p arguments are 2 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(mask); + + + red_mul = argindefault ( varargin , 1 , 1.0 );//default value is 1.0 + green_mul = argindefault ( varargin , 2 , 1.0 );//default value is 1.0 + border = argindefault ( varargin , 3 , 1.0 );//default value is 1.0 + + out = raw_colorChange(image_list1,image_list2,red_mul,green_mul,blue_mul ); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/convert.sci b/macros/convert.sci new file mode 100644 index 0000000..ae5e61b --- /dev/null +++ b/macros/convert.sci @@ -0,0 +1,65 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function dst = convert(src,rtype, varargin) +// This function converts a matrix to another data type with optional scaling. +// +// Calling Sequence +// src = imread('location-of-src'); +// dst = convert(src,rtype, alpha,beta); +// +// Parameters +// src : the source matrix/image +// alpha: optional scale factor (default value is 1) (type- Double) +// beta: optional delta added to the scaled values (default value is 0) (type- Double) +// rtype: (type- string)desired output matrix type/depth.It supports the following types -> 1) CV_8U, 2) CV_8S, 3) CV_16U ,4) CV_16S, 5) CV_32S, 6) CV_64F +// +// Description +// The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overflows- +// +// Examples +// src = imread('/images/color2.jpeg'); +// dst = convert(src,'CV_8U') //convert to 8 bit unsigned int using default values of alpha and beta +// dst //viewing the content of dst +// +// dst2 = convert(src,'CV_64F') //convert to 64 bit floating point using default values of alpha and beta +// dst2 //viewing the content of dst2 +// +// Authors +// Rohan Gurve + + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 4 then + error(msprintf("Too many input arguments")) + elseif rhs < 2 then + error(msprintf("Input arguments missing")) + end + + image_list = mattolist(src) + + alpha = argindefault ( varargin , 1 , 1 );//default value is 1 + beta = argindefault ( varargin , 2 , 0 );//default value is 0 + + temp = raw_convert(image_list, rtype, alpha,beta) + + + sz = size(temp) + + for i=1 : sz + dst(:, :, i) = temp(i) + end + +endfunction diff --git a/macros/convert.sci~ b/macros/convert.sci~ new file mode 100644 index 0000000..ae5e61b --- /dev/null +++ b/macros/convert.sci~ @@ -0,0 +1,65 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function dst = convert(src,rtype, varargin) +// This function converts a matrix to another data type with optional scaling. +// +// Calling Sequence +// src = imread('location-of-src'); +// dst = convert(src,rtype, alpha,beta); +// +// Parameters +// src : the source matrix/image +// alpha: optional scale factor (default value is 1) (type- Double) +// beta: optional delta added to the scaled values (default value is 0) (type- Double) +// rtype: (type- string)desired output matrix type/depth.It supports the following types -> 1) CV_8U, 2) CV_8S, 3) CV_16U ,4) CV_16S, 5) CV_32S, 6) CV_64F +// +// Description +// The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overflows- +// +// Examples +// src = imread('/images/color2.jpeg'); +// dst = convert(src,'CV_8U') //convert to 8 bit unsigned int using default values of alpha and beta +// dst //viewing the content of dst +// +// dst2 = convert(src,'CV_64F') //convert to 64 bit floating point using default values of alpha and beta +// dst2 //viewing the content of dst2 +// +// Authors +// Rohan Gurve + + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 4 then + error(msprintf("Too many input arguments")) + elseif rhs < 2 then + error(msprintf("Input arguments missing")) + end + + image_list = mattolist(src) + + alpha = argindefault ( varargin , 1 , 1 );//default value is 1 + beta = argindefault ( varargin , 2 , 0 );//default value is 0 + + temp = raw_convert(image_list, rtype, alpha,beta) + + + sz = size(temp) + + for i=1 : sz + dst(:, :, i) = temp(i) + end + +endfunction diff --git a/macros/detailEnhance.sci b/macros/detailEnhance.sci new file mode 100644 index 0000000..9907288 --- /dev/null +++ b/macros/detailEnhance.sci @@ -0,0 +1,66 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = detailEnhance(src,varargin) +//This filter enhances the details of a the given image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// outputImage = detailEnhance(src,sigma_s,sigma_r) +// +// Parameters +// outputImage: resultant Output image +// src: Input 8-bit 3-channel image. +// sigma_s: Range between 0 to 200 (float) (default value is 10) +// sigma_r: Range between 0 to 1. (float) (default value is 0.15f) +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// outputImage1 = detailEnhance(src) //using the default values for optional parameter +// imshow(outputImage1);//view the output +// +// outputImage2 = detailEnhance(src,[],0.4) //providing value for second optional parameter +// imshow(outputImage2);//view the output +// +// outputImage3 = detailEnhance(src,121,0.4) // providing value all optional parameters +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 //max i/p arguments are 3 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + + sigma_s = argindefault ( varargin , 1 , 10 );//default value is 10 + sigma_r = argindefault ( varargin , 2 , 0.15 );//default value is 0.15 + + out = raw_detailEnhance(image_list1,sigma_s,sigma_r); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/detailEnhance.sci~ b/macros/detailEnhance.sci~ new file mode 100644 index 0000000..9907288 --- /dev/null +++ b/macros/detailEnhance.sci~ @@ -0,0 +1,66 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = detailEnhance(src,varargin) +//This filter enhances the details of a the given image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// outputImage = detailEnhance(src,sigma_s,sigma_r) +// +// Parameters +// outputImage: resultant Output image +// src: Input 8-bit 3-channel image. +// sigma_s: Range between 0 to 200 (float) (default value is 10) +// sigma_r: Range between 0 to 1. (float) (default value is 0.15f) +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// outputImage1 = detailEnhance(src) //using the default values for optional parameter +// imshow(outputImage1);//view the output +// +// outputImage2 = detailEnhance(src,[],0.4) //providing value for second optional parameter +// imshow(outputImage2);//view the output +// +// outputImage3 = detailEnhance(src,121,0.4) // providing value all optional parameters +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 //max i/p arguments are 3 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + + sigma_s = argindefault ( varargin , 1 , 10 );//default value is 10 + sigma_r = argindefault ( varargin , 2 , 0.15 );//default value is 0.15 + + out = raw_detailEnhance(image_list1,sigma_s,sigma_r); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/edgePreservingFilter.sci b/macros/edgePreservingFilter.sci new file mode 100644 index 0000000..59a5e0a --- /dev/null +++ b/macros/edgePreservingFilter.sci @@ -0,0 +1,72 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = edgePreservingFilter(src,varargin) +// This function smoothens the given input image while preserving the edges. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// outputImage = edgePreservingFilter(src,flag,sigma_s,sigma_r) +// +//Parameters +//outputImage: resultant Output image +//src: Input 8-bit 3-channel image. +//flag: (default value is 1) (denotes Edge preserving filters). It takes 2 values -> 1) 1 (for RECURS_FILTER) ; 2) 2 (for NORMCONV_FILTER) +//sigma_s: Range between 0 to 200 (float) (default value is 60 ) +//sigma_r: Range between 0 to 1. (float) (default value is 0.4f) +// +//Description +//Filtering is the fundamental operation in image and video processing. Edge-preserving smoothing filters +//are used in many different applications +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// outputImage1 = edgePreservingFilter(src) //using default values for all optional arguments +// imshow(outputImage1);//view the output +// +// outputImage2 = edgePreservingFilter(src,2) //using default values for sigma_s & sigma_r +// imshow(outputImage2);//view the output +// +// outputImage3 = edgePreservingFilter(src,[],[],0.6) //using default values for sigma_s & sigma_r +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>4 //max i/p arguments are 4 + error(msprintf(" Too many input arguments")); + elseif rhs<1//min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + flag = argindefault ( varargin , 1 , 1 ); //default value is 1 + sigma_s = argindefault ( varargin , 2 , 60 );//default value is 60 + sigma_r = argindefault ( varargin , 3 , 0.4 );//default value is 0.4 + + + out = raw_edgePreservingFilter(image_list1,flag,sigma_s,sigma_r); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/edgePreservingFilter.sci~ b/macros/edgePreservingFilter.sci~ new file mode 100644 index 0000000..59a5e0a --- /dev/null +++ b/macros/edgePreservingFilter.sci~ @@ -0,0 +1,72 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = edgePreservingFilter(src,varargin) +// This function smoothens the given input image while preserving the edges. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// outputImage = edgePreservingFilter(src,flag,sigma_s,sigma_r) +// +//Parameters +//outputImage: resultant Output image +//src: Input 8-bit 3-channel image. +//flag: (default value is 1) (denotes Edge preserving filters). It takes 2 values -> 1) 1 (for RECURS_FILTER) ; 2) 2 (for NORMCONV_FILTER) +//sigma_s: Range between 0 to 200 (float) (default value is 60 ) +//sigma_r: Range between 0 to 1. (float) (default value is 0.4f) +// +//Description +//Filtering is the fundamental operation in image and video processing. Edge-preserving smoothing filters +//are used in many different applications +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// outputImage1 = edgePreservingFilter(src) //using default values for all optional arguments +// imshow(outputImage1);//view the output +// +// outputImage2 = edgePreservingFilter(src,2) //using default values for sigma_s & sigma_r +// imshow(outputImage2);//view the output +// +// outputImage3 = edgePreservingFilter(src,[],[],0.6) //using default values for sigma_s & sigma_r +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>4 //max i/p arguments are 4 + error(msprintf(" Too many input arguments")); + elseif rhs<1//min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + flag = argindefault ( varargin , 1 , 1 ); //default value is 1 + sigma_s = argindefault ( varargin , 2 , 60 );//default value is 60 + sigma_r = argindefault ( varargin , 3 , 0.4 );//default value is 0.4 + + + out = raw_edgePreservingFilter(image_list1,flag,sigma_s,sigma_r); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/getDepth.sci b/macros/getDepth.sci new file mode 100644 index 0000000..6c4ca18 --- /dev/null +++ b/macros/getDepth.sci @@ -0,0 +1,54 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function depth = getDepth(src) +// This function returns the depth of the input matrix element. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// depth = getDepth(src) +// +//Parameters +//src: Input 8-bit 3-channel image. +//depth: a string which denoted the depth of the src.It identifies the following- 1) CV_8U - 8-bit unsigned integers ( 0..255 ) ; 2) CV_8S - 8-bit signed integers ( -128..127 ); 3) CV_16U - 16-bit unsigned integers ( 0..65535 ); 4) CV_16U - 16-bit unsigned integers ( 0..65535 ); 5) CV_16S - 16-bit signed integers ( -32768..32767 ) ; 6) CV_32S - 32-bit signed integers ( -2147483648..2147483647 ) ; 7) CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN ) +// +// +// Examples +// +// src = imread("/images/color2.jpeg"); //reading an image +// depth = getDepth(src) ; //get the depth +// disp(depth) ; //view the output +// +// Description +// Note - Scilab does not support CV_32F - it would be considered as CV_64F +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>1 //max i/p arguments is 1 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + + d = raw_getDepth(image_list1); + depth = d(1); + +endfunction + + diff --git a/macros/getDepth.sci~ b/macros/getDepth.sci~ new file mode 100644 index 0000000..79e8cc1 --- /dev/null +++ b/macros/getDepth.sci~ @@ -0,0 +1,54 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function depth = getDepth(src) +// This function returns the depth of the input matrix element. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// depth = getDepth(src) +// +//Parameters +//src: Input 8-bit 3-channel image. +//depth: a string which denoted the depth of the src.It identifies the following- 1) CV_8U - 8-bit unsigned integers ( 0..255 ) ; 2) CV_8S - 8-bit signed integers ( -128..127 ); 3) CV_16U - 16-bit unsigned integers ( 0..65535 ); 4) CV_16U - 16-bit unsigned integers ( 0..65535 ); 5) CV_16S - 16-bit signed integers ( -32768..32767 ) ; 6) CV_32S - 32-bit signed integers ( -2147483648..2147483647 ) ; 7) CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN ) +// +// +// Examples +// +// src = imread("../images/color2.jpeg"); //reading an image +// depth = getDepth(src) ; //get the depth +// disp(depth) ; //view the output +// +// Description +// Note - Scilab does not support CV_32F - it would be considered as CV_64F +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>1 //max i/p arguments is 1 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + + d = raw_getDepth(image_list1); + depth = d(1); + +endfunction + + diff --git a/macros/getStructuringElement.sci b/macros/getStructuringElement.sci new file mode 100644 index 0000000..b09b98a --- /dev/null +++ b/macros/getStructuringElement.sci @@ -0,0 +1,67 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Sukul Bagai +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function structuring_element = getStructuringElement(gettype, cols, rows, anchorX, anchorY) +// This function returns a structuring element required for the morphological operations. +// Calling Sequence +// se = raw_getStructuringElement(gettype, cols, rows, anchorX, anchorY) +// +// Parameters +// se: output structuring element matrix +// shape: element shape that could be one of the following- +// +//MORPH_RECT - a rectangular structuring element +//MORPH_ELLIPSE - an elliptic structuring element +//MORPH_CROSS - a cross-shaped structuring element +// +//cols: Width of the structuring element +//rows: Height of the structuring element +//anchor: Anchor position within the element. The value (-1, -1) means that the anchor is at the center. +//Only the shape of a cross-shaped element depends on the anchor position. In other cases the anchor just regulates +//how much the result of the morphological operation is shifted. +//anchor_x: x-coordinate of the anchor +//anchor_y: y-coordinate of the anchor +// +// Description +// The function constructs and returns the structuring element that can be further passed to +// function that perform morphological operations like erode or dilate. +// +// Examples +// src = imread("/images/color2.jpeg"); +// se1=getStructuringElement('MORPH_RECT',5,7,3,4); //make a rectangular structuring element +// out = dilate(src,se1,3,4,1); //perform dilate morphological operation +// imshow(out); //view the output image +// +// Examples +// src = imread("../images/color2.jpeg"); +// se2=getStructuringElement('MORPH_ELLIPSE',10,15,2,2); //make an elliptical structuring element +// out = dilate(src,se2,2,2,2); //perform dilate morphological operation +// imshow(out); //view the output image +// +// Authors +// Sukul Bagai + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 5 then + error(msprintf("Too many input arguments")) + elseif rhs < 5 then + error(msprintf("input arguments missing")) + end + + + + structuring_element = raw_getStructuringElement(gettype, cols, rows, anchorX, anchorY) + +endfunction diff --git a/macros/getStructuringElement.sci~ b/macros/getStructuringElement.sci~ new file mode 100644 index 0000000..b09b98a --- /dev/null +++ b/macros/getStructuringElement.sci~ @@ -0,0 +1,67 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Sukul Bagai +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function structuring_element = getStructuringElement(gettype, cols, rows, anchorX, anchorY) +// This function returns a structuring element required for the morphological operations. +// Calling Sequence +// se = raw_getStructuringElement(gettype, cols, rows, anchorX, anchorY) +// +// Parameters +// se: output structuring element matrix +// shape: element shape that could be one of the following- +// +//MORPH_RECT - a rectangular structuring element +//MORPH_ELLIPSE - an elliptic structuring element +//MORPH_CROSS - a cross-shaped structuring element +// +//cols: Width of the structuring element +//rows: Height of the structuring element +//anchor: Anchor position within the element. The value (-1, -1) means that the anchor is at the center. +//Only the shape of a cross-shaped element depends on the anchor position. In other cases the anchor just regulates +//how much the result of the morphological operation is shifted. +//anchor_x: x-coordinate of the anchor +//anchor_y: y-coordinate of the anchor +// +// Description +// The function constructs and returns the structuring element that can be further passed to +// function that perform morphological operations like erode or dilate. +// +// Examples +// src = imread("/images/color2.jpeg"); +// se1=getStructuringElement('MORPH_RECT',5,7,3,4); //make a rectangular structuring element +// out = dilate(src,se1,3,4,1); //perform dilate morphological operation +// imshow(out); //view the output image +// +// Examples +// src = imread("../images/color2.jpeg"); +// se2=getStructuringElement('MORPH_ELLIPSE',10,15,2,2); //make an elliptical structuring element +// out = dilate(src,se2,2,2,2); //perform dilate morphological operation +// imshow(out); //view the output image +// +// Authors +// Sukul Bagai + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 5 then + error(msprintf("Too many input arguments")) + elseif rhs < 5 then + error(msprintf("input arguments missing")) + end + + + + structuring_element = raw_getStructuringElement(gettype, cols, rows, anchorX, anchorY) + +endfunction diff --git a/macros/illuminationChange.sci b/macros/illuminationChange.sci new file mode 100644 index 0000000..9c97dfe --- /dev/null +++ b/macros/illuminationChange.sci @@ -0,0 +1,87 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = illuminationChange(src,mask,varargin) +// This function is used to reduce specular reflections or highlight under-exposed foreground objects. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = illuminationChange(src, mask, alpha, beta ) +// +// Parameters +// outputImage: resultant Output image +// src: Input source image +// mask: Input mask image with same size as that of source image. +// alpha: Value ranges between 0-2. (float) (default value= 0.2f) +// beta: Value ranges between 0-2. (float) (default value= 0.4f) +// +// +// Description +// Applying an appropriate non-linear transformation to the gradient field inside the selection and then integrating +// back with a Poisson solver, modifies locally the apparent illumination of an image. +// +// Examples +// +// src = imread("/images/color2.jpeg");//reading an image +// mask = roiFreeHand(src); //creating a mask +// imshow(mask);//view mask +// +// outputImage1 = illuminationChange(src, mask) //using default arguments +// imshow(outputImage1); // view outputImage1 +// +// outputImage2 = illuminationChange(src, mask,1.9, 0.3) //providing all optional input arguments +// imshow(outputImage2); // view outputImage2 +// +// outputImage3 = illuminationChange(src, mask,[], 0.3) //skipping first optional input argument +// imshow(outputImage3); // view outputImage3 +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// [row col] = size(src) +// mask = zeros(row,col) //creating a mask +// mask(100:140,100:150) =255 +// imshow(mask); view the mask +// outputImage = illuminationChange(src, mask) //using default arguments +// imshow(outputImage);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>4 // max i/p arguments are 4 + error(msprintf(" Too many input arguments")); + elseif rhs<2// min i/p arguments are 2 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(mask); + + alpha = argindefault ( varargin , 1 , 0.2 );//default value is 0.2 + beta = argindefault ( varargin , 2 , 0.4 );//default value is 0.4 + + out = raw_illuminationChange(image_list1,image_list2,alpha,beta ); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/illuminationChange.sci~ b/macros/illuminationChange.sci~ new file mode 100644 index 0000000..9c97dfe --- /dev/null +++ b/macros/illuminationChange.sci~ @@ -0,0 +1,87 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = illuminationChange(src,mask,varargin) +// This function is used to reduce specular reflections or highlight under-exposed foreground objects. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = illuminationChange(src, mask, alpha, beta ) +// +// Parameters +// outputImage: resultant Output image +// src: Input source image +// mask: Input mask image with same size as that of source image. +// alpha: Value ranges between 0-2. (float) (default value= 0.2f) +// beta: Value ranges between 0-2. (float) (default value= 0.4f) +// +// +// Description +// Applying an appropriate non-linear transformation to the gradient field inside the selection and then integrating +// back with a Poisson solver, modifies locally the apparent illumination of an image. +// +// Examples +// +// src = imread("/images/color2.jpeg");//reading an image +// mask = roiFreeHand(src); //creating a mask +// imshow(mask);//view mask +// +// outputImage1 = illuminationChange(src, mask) //using default arguments +// imshow(outputImage1); // view outputImage1 +// +// outputImage2 = illuminationChange(src, mask,1.9, 0.3) //providing all optional input arguments +// imshow(outputImage2); // view outputImage2 +// +// outputImage3 = illuminationChange(src, mask,[], 0.3) //skipping first optional input argument +// imshow(outputImage3); // view outputImage3 +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// [row col] = size(src) +// mask = zeros(row,col) //creating a mask +// mask(100:140,100:150) =255 +// imshow(mask); view the mask +// outputImage = illuminationChange(src, mask) //using default arguments +// imshow(outputImage);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>4 // max i/p arguments are 4 + error(msprintf(" Too many input arguments")); + elseif rhs<2// min i/p arguments are 2 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(mask); + + alpha = argindefault ( varargin , 1 , 0.2 );//default value is 0.2 + beta = argindefault ( varargin , 2 , 0.4 );//default value is 0.4 + + out = raw_illuminationChange(image_list1,image_list2,alpha,beta ); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/localMaximaFinder.sci b/macros/localMaximaFinder.sci new file mode 100644 index 0000000..bd25c9b --- /dev/null +++ b/macros/localMaximaFinder.sci @@ -0,0 +1,137 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [location]=localMaximaFinder(inputMatrix,neighborhood,maxNoOfMaxima,threshold) +// This function returns local maxima in input matrice. +// +// Calling Sequence +// location=localMaximaFinder(inputMatrix,neighborhood,maxNoOfMaxima,threshold) +// +// Parameters +// inputMatrix: 2-D input matrix +// neighborhood: It specifies the neighborhood around maxima, function zeros out the values inside the block. +// Neighborhood is a two element vector,first one indicates number of rows in neighborhood,second one +// indicates columns, of odd intergers. +// maxNoOfMaxima: maximum number of local maxima you want to find. +// threshold: It specifies minimum value of the local maxima. +// +// Description +// localMaximaFinder returns [x y] coordinates of the local maxima in a M-by-2 matrix where M is +// the number of local maxima and each row represents one local maximum +// +// Examples +// mat = [0 0 0 0 0 0;0 0 0 1 0 0;0 0 7 0 0 0 ;0 0 0 0 0 0]; +// loc=localMaximaFinder(mat,[1 3],4,1); +// o/p: loc = +// +// 3. 3. +// 4. 2. +// +// Examples +// I=imread("/images/color2.jpeg"); +// grayImage=rgb2gray(I); +// location=localMaximaFinder(grayImage,[1 1],1,1); + + + [lhs,rhs]=argn(0) + if rhs<4 then + error(msprintf(" Not enough input arguments")) + elseif rhs>4 then + error(msprintf(" Too many input arguments to the function")) + elseif lhs>1 then + error(msprintf(" Too many output arguments")) + end + + [iRows iCols]=size(inputMatrix) + [nRows nCols]=size(neighborhood) + + if ~nRows==1 | ~nCols==2 + error(msprintf("Neighborhood property must be a vector with 2 columns")) + end + + nh_x=neighborhood(1,1); + nh_y=neighborhood(1,2); + if modulo(nh_x,2)==0 | modulo(nh_y,2)==0 + error(msprintf("-Neighborhood property must be odd")) + elseif ~nh_x<=iRows | ~nh_y<=iCols + error(msprintf("Each dimension of the NeighborhoodSize property value must be less than or equal to the corresponding dimension of the input matrix")) + end + + nh_x=floor(nh_x/2); + nh_y=floor(nh_y/2); + count=0; + index=1; + k=1; + while countmax_data + max_data=inputMatrix(i,j); + max_xIn=i; + max_yIn=j; + end + end + end + if threshold<=max_data //store the x & y coordinates + location(k,1)=max_yIn ; + location(k,2)=iRows ; + k=k+1; + + //to zero-out the values around the neighborhood + if max_xIn-nh_x<1 then + start_x=1 + else + start_x=max_xIn-nh_x + end + if max_yIn-nh_y<1 then + start_y=1 + else + start_y=max_yIn-nh_y + end + if max_xIn+nh_x>iRows then + end_x=iRows + else + end_x=max_xIn+nh_x + end + if max_yIn+nh_y>iCols then + end_y=iCols + else + end_y=max_yIn+nh_y + end + for i=start_x:end_x + for j=start_y:end_y + inputMatrix(i,j)=0; + end + end + //to check the existence of non-zero element + nonZeroCount=0; + for i=1:iRows + for j=1:iCols + if ~inputMatrix(i,j)==0 then + nonZeroCount=nonZeroCount+1; + break; + end + end + if nonZeroCount==1 then + break; + end + end + if nonZeroCount==0 then + break; + end + count=count+1; + + else + break; //if maximum number in input matrix is less than threshold + end + end +endfunction diff --git a/macros/localMaximaFinder.sci~ b/macros/localMaximaFinder.sci~ new file mode 100644 index 0000000..bd25c9b --- /dev/null +++ b/macros/localMaximaFinder.sci~ @@ -0,0 +1,137 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [location]=localMaximaFinder(inputMatrix,neighborhood,maxNoOfMaxima,threshold) +// This function returns local maxima in input matrice. +// +// Calling Sequence +// location=localMaximaFinder(inputMatrix,neighborhood,maxNoOfMaxima,threshold) +// +// Parameters +// inputMatrix: 2-D input matrix +// neighborhood: It specifies the neighborhood around maxima, function zeros out the values inside the block. +// Neighborhood is a two element vector,first one indicates number of rows in neighborhood,second one +// indicates columns, of odd intergers. +// maxNoOfMaxima: maximum number of local maxima you want to find. +// threshold: It specifies minimum value of the local maxima. +// +// Description +// localMaximaFinder returns [x y] coordinates of the local maxima in a M-by-2 matrix where M is +// the number of local maxima and each row represents one local maximum +// +// Examples +// mat = [0 0 0 0 0 0;0 0 0 1 0 0;0 0 7 0 0 0 ;0 0 0 0 0 0]; +// loc=localMaximaFinder(mat,[1 3],4,1); +// o/p: loc = +// +// 3. 3. +// 4. 2. +// +// Examples +// I=imread("/images/color2.jpeg"); +// grayImage=rgb2gray(I); +// location=localMaximaFinder(grayImage,[1 1],1,1); + + + [lhs,rhs]=argn(0) + if rhs<4 then + error(msprintf(" Not enough input arguments")) + elseif rhs>4 then + error(msprintf(" Too many input arguments to the function")) + elseif lhs>1 then + error(msprintf(" Too many output arguments")) + end + + [iRows iCols]=size(inputMatrix) + [nRows nCols]=size(neighborhood) + + if ~nRows==1 | ~nCols==2 + error(msprintf("Neighborhood property must be a vector with 2 columns")) + end + + nh_x=neighborhood(1,1); + nh_y=neighborhood(1,2); + if modulo(nh_x,2)==0 | modulo(nh_y,2)==0 + error(msprintf("-Neighborhood property must be odd")) + elseif ~nh_x<=iRows | ~nh_y<=iCols + error(msprintf("Each dimension of the NeighborhoodSize property value must be less than or equal to the corresponding dimension of the input matrix")) + end + + nh_x=floor(nh_x/2); + nh_y=floor(nh_y/2); + count=0; + index=1; + k=1; + while countmax_data + max_data=inputMatrix(i,j); + max_xIn=i; + max_yIn=j; + end + end + end + if threshold<=max_data //store the x & y coordinates + location(k,1)=max_yIn ; + location(k,2)=iRows ; + k=k+1; + + //to zero-out the values around the neighborhood + if max_xIn-nh_x<1 then + start_x=1 + else + start_x=max_xIn-nh_x + end + if max_yIn-nh_y<1 then + start_y=1 + else + start_y=max_yIn-nh_y + end + if max_xIn+nh_x>iRows then + end_x=iRows + else + end_x=max_xIn+nh_x + end + if max_yIn+nh_y>iCols then + end_y=iCols + else + end_y=max_yIn+nh_y + end + for i=start_x:end_x + for j=start_y:end_y + inputMatrix(i,j)=0; + end + end + //to check the existence of non-zero element + nonZeroCount=0; + for i=1:iRows + for j=1:iCols + if ~inputMatrix(i,j)==0 then + nonZeroCount=nonZeroCount+1; + break; + end + end + if nonZeroCount==1 then + break; + end + end + if nonZeroCount==0 then + break; + end + count=count+1; + + else + break; //if maximum number in input matrix is less than threshold + end + end +endfunction diff --git a/macros/minAreaRect.sci b/macros/minAreaRect.sci new file mode 100644 index 0000000..3384e79 --- /dev/null +++ b/macros/minAreaRect.sci @@ -0,0 +1,59 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Priyanka Hiranandani, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [out]=minAreaRect(x,y) +// This function is used to find a rotated rectangle of the minimum area enclosing the input 2D point set. +// +// Calling Sequence +// x = [x1 x2 x3 ...............xn] +// y = [y1 y2 y3................yn] +// out = minAreaRect(x , y) +// +// Parameters +// x: 1xn matrix denoting the x coordinates of the points +// y: 1xn matrix denoting the corresponding y coordinates of the points +// out: Output structure with the following members - 1) width- width of the rectangle, 2) height- height of the rectangle, 3) center_x- x coordinate of the center of the rectangle, 4) center_y- x coordinate of the center of the rectangle, 5) angle- the angle by which the rectanle is rotated, 6) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 7) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 8) y_coordinates_vertices- 1x4 Double matrix denoting the corresponding y coordinates of the vertices of the rectangle +// +// Description +// The function calculates and returns the minimum-area bounding rectangle (possibly rotated) for a specified point set. +// the returned rotatedRect can contain negative indices when data is close to the containing Mat element boundary. +// +// Examples +// x = [0 8 8 0] +// y = [0 0 5 5] +// out = minAreaRect(x,y) +// +// Examples +// x = [0 8 8 0 8 8] +// y = [0 0 5 5 4 4] +// out = minAreaRect(x,y) +// +// Authors +// Priyanka Hiranandani +// Rohan Gurve + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 2 then + error(msprintf("Too many input arguments")) + elseif rhs < 2 then + error(msprintf("input arguments missing")) + end + + + [t1 t2 t3 t4 t5 t6 t7]= raw_minAreaRect(x,y); + out=struct("width",t1,"height",t2,"center_x",t3,"center_y",t4,"angle",t5,"x_coordinates_vertices",t6,"y_coordinates_vertices",t7); +endfunction; + + diff --git a/macros/minAreaRect.sci~ b/macros/minAreaRect.sci~ new file mode 100644 index 0000000..3384e79 --- /dev/null +++ b/macros/minAreaRect.sci~ @@ -0,0 +1,59 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Priyanka Hiranandani, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [out]=minAreaRect(x,y) +// This function is used to find a rotated rectangle of the minimum area enclosing the input 2D point set. +// +// Calling Sequence +// x = [x1 x2 x3 ...............xn] +// y = [y1 y2 y3................yn] +// out = minAreaRect(x , y) +// +// Parameters +// x: 1xn matrix denoting the x coordinates of the points +// y: 1xn matrix denoting the corresponding y coordinates of the points +// out: Output structure with the following members - 1) width- width of the rectangle, 2) height- height of the rectangle, 3) center_x- x coordinate of the center of the rectangle, 4) center_y- x coordinate of the center of the rectangle, 5) angle- the angle by which the rectanle is rotated, 6) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 7) x_coordinates_vertices- 1x4 Double matrix denoting the x coordinates of the vertices of the rectangle, 8) y_coordinates_vertices- 1x4 Double matrix denoting the corresponding y coordinates of the vertices of the rectangle +// +// Description +// The function calculates and returns the minimum-area bounding rectangle (possibly rotated) for a specified point set. +// the returned rotatedRect can contain negative indices when data is close to the containing Mat element boundary. +// +// Examples +// x = [0 8 8 0] +// y = [0 0 5 5] +// out = minAreaRect(x,y) +// +// Examples +// x = [0 8 8 0 8 8] +// y = [0 0 5 5 4 4] +// out = minAreaRect(x,y) +// +// Authors +// Priyanka Hiranandani +// Rohan Gurve + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 2 then + error(msprintf("Too many input arguments")) + elseif rhs < 2 then + error(msprintf("input arguments missing")) + end + + + [t1 t2 t3 t4 t5 t6 t7]= raw_minAreaRect(x,y); + out=struct("width",t1,"height",t2,"center_x",t3,"center_y",t4,"angle",t5,"x_coordinates_vertices",t6,"y_coordinates_vertices",t7); +endfunction; + + diff --git a/macros/minEnclosingCircle.sci b/macros/minEnclosingCircle.sci new file mode 100644 index 0000000..6e16e00 --- /dev/null +++ b/macros/minEnclosingCircle.sci @@ -0,0 +1,53 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Priyanka Hiranandani, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [out]= minEnclosingCircle(x,y) +// This function is used to find the circumcircle of an object constituted by the given set of input points. +// +// Calling Sequence +// x = [x1 x2 x3 ...............xn] +// y = [y1 y2 y3................yn] +// out = minEnclosingCirlce(x , y) +// +// Parameters +// x: 1xn matrix denoting the x coordinates of the points of the object +// y: 1xn matrix denoting the corresponding y coordinates of the points of the object +// out: Output structure with the following members- 1) center_x- x coordinate of the center of the circle, 2)center_y- x coordinate of the center of the circle, 3) radius- radius of the circle +// +// Examples +// x = [0 8 8 0 2] +// y = [0 0 5 5 9] +// out = minEnclosingCircle(x,y) +// +// Examples +// +// x = [0 8 8 0 8 8] +// y = [0 0 5 5 4 4] +// out = minEnclosingCircle(x,y) +// +// Authors +// Priyanka Hiranandani +// Rohan Gurve + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 2 then + error(msprintf("Too many input arguments")) + elseif rhs < 2 then + error(msprintf("input arguments missing")) + end + + [t1 t2 t3]= raw_minEnclosingCircle(x,y); + out=struct("center_x",t1,"center_y",t2,"radius",t3); +endfunction; diff --git a/macros/minEnclosingCircle.sci~ b/macros/minEnclosingCircle.sci~ new file mode 100644 index 0000000..6e16e00 --- /dev/null +++ b/macros/minEnclosingCircle.sci~ @@ -0,0 +1,53 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Priyanka Hiranandani, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [out]= minEnclosingCircle(x,y) +// This function is used to find the circumcircle of an object constituted by the given set of input points. +// +// Calling Sequence +// x = [x1 x2 x3 ...............xn] +// y = [y1 y2 y3................yn] +// out = minEnclosingCirlce(x , y) +// +// Parameters +// x: 1xn matrix denoting the x coordinates of the points of the object +// y: 1xn matrix denoting the corresponding y coordinates of the points of the object +// out: Output structure with the following members- 1) center_x- x coordinate of the center of the circle, 2)center_y- x coordinate of the center of the circle, 3) radius- radius of the circle +// +// Examples +// x = [0 8 8 0 2] +// y = [0 0 5 5 9] +// out = minEnclosingCircle(x,y) +// +// Examples +// +// x = [0 8 8 0 8 8] +// y = [0 0 5 5 4 4] +// out = minEnclosingCircle(x,y) +// +// Authors +// Priyanka Hiranandani +// Rohan Gurve + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 2 then + error(msprintf("Too many input arguments")) + elseif rhs < 2 then + error(msprintf("input arguments missing")) + end + + [t1 t2 t3]= raw_minEnclosingCircle(x,y); + out=struct("center_x",t1,"center_y",t2,"radius",t3); +endfunction; diff --git a/macros/partition.sci b/macros/partition.sci new file mode 100644 index 0000000..f5c058d --- /dev/null +++ b/macros/partition.sci @@ -0,0 +1,77 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohit Suri, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [varargout]=partition(imageSet,groupSizesOrPercentages,varargin) +// This function is used to split an imageSet. +// +// Calling Sequence +// imgSet = imageSet(location) //or imgSet = imageSet(location,'recursive') +// [set1 set2 ... setN] = partition(imgSet, groupSizes) +// [set1 set2 ... setN] = partition(imgSet, groupPercentages) +// [set1 set2 ... setN] = partition(..., method) +// +// Parameters +// set: Output imageSet structure +// imgSet: Input imageSet to be split +// groupSizes: Matrix that specifies size of output sets +// groupPercentages: Matrix that specifies percentage content of each output set +// method: (Optional) Determines whether split is 'sequential' or 'randomized' (Default: 'sequential') +// +// Description +// This function splits an imageSet into two or more imageSets on the basis of the groupSizes or groupPercentages provided. +// +// Examples +// +// imgSet = imageSet('/images/test','recursive'); +// [set1 set2 set3] = partition(imgSet,[2 , 3], 'randomized'); +// +// imgSet = imageSet('/images/test','recursive'); +// [trainingSet testSet] = partition(imgSet,[0.8]); +// +// imgSet = imageSet('/images/airplanes'); +// [set1 set2] = partition(imgSet,[5]); +// +// imgSet = imageSet('/images/test','recursive'); +// [trainingSet testSet] = partition(imgSet,[4], 'randomized'); +// +// Authors +// Rohit Suri +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 + error(msprintf(" Too many input arguments")); + end + cols=size(groupSizesOrPercentages,'c'); + if lhs>cols+1 then + error(msprintf(" Too many output arguments")); + end + imgSetList=imageSetToList(imageSet); + + select rhs + case 2 then + sets=raw_partition(imgSetList,groupSizesOrPercentages); + case 3 then + sets=raw_partition(imgSetList,groupSizesOrPercentages,varargin(1)); + end + for i=1:lhs + for j=1:length(sets(i)(3)) + for k=1:sets(i)(3)(j) + imgLocations(k)=sets(i)(4)(j)(1,k); + end + imgSet(1,j)=struct('Description',sets(i)(2)(j),'ImageLocation',imgLocations,'Count',int32(sets(i)(3)(j)) ); + imgLocations=[] + end + varargout(i) = imgSet; + end +endfunction + + diff --git a/macros/partition.sci~ b/macros/partition.sci~ new file mode 100644 index 0000000..f5c058d --- /dev/null +++ b/macros/partition.sci~ @@ -0,0 +1,77 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohit Suri, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [varargout]=partition(imageSet,groupSizesOrPercentages,varargin) +// This function is used to split an imageSet. +// +// Calling Sequence +// imgSet = imageSet(location) //or imgSet = imageSet(location,'recursive') +// [set1 set2 ... setN] = partition(imgSet, groupSizes) +// [set1 set2 ... setN] = partition(imgSet, groupPercentages) +// [set1 set2 ... setN] = partition(..., method) +// +// Parameters +// set: Output imageSet structure +// imgSet: Input imageSet to be split +// groupSizes: Matrix that specifies size of output sets +// groupPercentages: Matrix that specifies percentage content of each output set +// method: (Optional) Determines whether split is 'sequential' or 'randomized' (Default: 'sequential') +// +// Description +// This function splits an imageSet into two or more imageSets on the basis of the groupSizes or groupPercentages provided. +// +// Examples +// +// imgSet = imageSet('/images/test','recursive'); +// [set1 set2 set3] = partition(imgSet,[2 , 3], 'randomized'); +// +// imgSet = imageSet('/images/test','recursive'); +// [trainingSet testSet] = partition(imgSet,[0.8]); +// +// imgSet = imageSet('/images/airplanes'); +// [set1 set2] = partition(imgSet,[5]); +// +// imgSet = imageSet('/images/test','recursive'); +// [trainingSet testSet] = partition(imgSet,[4], 'randomized'); +// +// Authors +// Rohit Suri +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 + error(msprintf(" Too many input arguments")); + end + cols=size(groupSizesOrPercentages,'c'); + if lhs>cols+1 then + error(msprintf(" Too many output arguments")); + end + imgSetList=imageSetToList(imageSet); + + select rhs + case 2 then + sets=raw_partition(imgSetList,groupSizesOrPercentages); + case 3 then + sets=raw_partition(imgSetList,groupSizesOrPercentages,varargin(1)); + end + for i=1:lhs + for j=1:length(sets(i)(3)) + for k=1:sets(i)(3)(j) + imgLocations(k)=sets(i)(4)(j)(1,k); + end + imgSet(1,j)=struct('Description',sets(i)(2)(j),'ImageLocation',imgLocations,'Count',int32(sets(i)(3)(j)) ); + imgLocations=[] + end + varargout(i) = imgSet; + end +endfunction + + diff --git a/macros/pencilSketch.sci b/macros/pencilSketch.sci new file mode 100644 index 0000000..752e7f0 --- /dev/null +++ b/macros/pencilSketch.sci @@ -0,0 +1,78 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [outputImage_1, outputImage_2 ] = pencilSketch(src,varargin) +// This function is used to give a non-photorealistic pencil-like line drawing effect to the given input image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// [outputImage_1 outputImage_2 ] = pencilSketch(src,sigma_s,sigma_r,shade_factor) +// +//Parameters +//outputImage_1: resultant Output image with single channel +//outputImage_2: resultant Output image with 3 channels +//src: Input 8-bit 3-channel image. +//sigma_s: Range between 0 to 200 (float) (default value is 60) +//sigma_r: Range between 0 to 1. (float) (default value is 0.07f) +//shade_factor: Range between 0 to 0.1 (default value is 0.02f) +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// outputImage1 = pencilSketch(src) //using default values for all optional parameters +// imshow(outputImage1);//view the output +// +// outputImage2 = pencilSketch(src,100,[],0.07) //using default values for sigma_s +// imshow(outputImage2);//view the output +// +// outputImage3 = pencilSketch(src,100,0.4,0.07) //providing values for all optional parameters +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>4//max i/p arguments are 4 + error(msprintf(" Too many input arguments")); + elseif rhs<1//min i/p arguments is 1 + error(msprintf("input arguments missing")); + end + + if lhs>2 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + + sigma_s = argindefault ( varargin , 1 , 60 );//default value is 60 + sigma_r = argindefault ( varargin , 2 , 0.07 );//default value is 0.07f + shade_factor = argindefault ( varargin , 3 , 0.02 ); //default value is 0.02f + + + + [out1 , out2] = raw_pencilSketch(image_list1,sigma_s,sigma_r,shade_factor); + + //sz = size(out); + + //we know that we'll receive 4 matrices + //the first matrice will be for the single channel image + //the rest 3 matrices will be for the 3 channel image + + //retreiving the 1 channel image + outputImage_1(:, :, 1) = out1(1); + //retreiving the 3 channel image + for i=1:size(out2) + outputImage_2(:, :, i) = out2(i) + end + +endfunction + + diff --git a/macros/pencilSketch.sci~ b/macros/pencilSketch.sci~ new file mode 100644 index 0000000..752e7f0 --- /dev/null +++ b/macros/pencilSketch.sci~ @@ -0,0 +1,78 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [outputImage_1, outputImage_2 ] = pencilSketch(src,varargin) +// This function is used to give a non-photorealistic pencil-like line drawing effect to the given input image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// [outputImage_1 outputImage_2 ] = pencilSketch(src,sigma_s,sigma_r,shade_factor) +// +//Parameters +//outputImage_1: resultant Output image with single channel +//outputImage_2: resultant Output image with 3 channels +//src: Input 8-bit 3-channel image. +//sigma_s: Range between 0 to 200 (float) (default value is 60) +//sigma_r: Range between 0 to 1. (float) (default value is 0.07f) +//shade_factor: Range between 0 to 0.1 (default value is 0.02f) +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// outputImage1 = pencilSketch(src) //using default values for all optional parameters +// imshow(outputImage1);//view the output +// +// outputImage2 = pencilSketch(src,100,[],0.07) //using default values for sigma_s +// imshow(outputImage2);//view the output +// +// outputImage3 = pencilSketch(src,100,0.4,0.07) //providing values for all optional parameters +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>4//max i/p arguments are 4 + error(msprintf(" Too many input arguments")); + elseif rhs<1//min i/p arguments is 1 + error(msprintf("input arguments missing")); + end + + if lhs>2 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + + sigma_s = argindefault ( varargin , 1 , 60 );//default value is 60 + sigma_r = argindefault ( varargin , 2 , 0.07 );//default value is 0.07f + shade_factor = argindefault ( varargin , 3 , 0.02 ); //default value is 0.02f + + + + [out1 , out2] = raw_pencilSketch(image_list1,sigma_s,sigma_r,shade_factor); + + //sz = size(out); + + //we know that we'll receive 4 matrices + //the first matrice will be for the single channel image + //the rest 3 matrices will be for the 3 channel image + + //retreiving the 1 channel image + outputImage_1(:, :, 1) = out1(1); + //retreiving the 3 channel image + for i=1:size(out2) + outputImage_2(:, :, i) = out2(i) + end + +endfunction + + diff --git a/macros/pyramid.sci b/macros/pyramid.sci new file mode 100644 index 0000000..79c2bfa --- /dev/null +++ b/macros/pyramid.sci @@ -0,0 +1,58 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Diwakar Bhardwaj +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [out]=pyramid(inputimage,direction,level) +// This function computes the pyramid reduction or expansion of input_image. +// +// Calling Sequence +// output_image=pyramid(inputimage,direction,level); +// +// Parameters +// inputimage : image matrix on which pyramid reduction or expansion has to be applied +// Direction : An input string 'expand' for expand or 'reduce' for reduce the image matrix +// level : It is specify number of times want to expand or reduce the dimension of an image matrix. +// output_image : Expanded or reduced form of image after pyramid reduction or expansio +// +// Description +// This function computes the pyramid reduction or expansion of input image.It uses Gaussian pyramid to downsamples +// and upsamples the image pixels.In reduction it reduces the size of image (if m*n matrix image) by m/pow(2,level) +// and n/pow(2,level).In expansion it expands the size of image (if m*n matrix image) by m*pow(2,level) +// and n*pow(2,level) where pow(x,y)=x^y. +// +// Examples +// inputimage1 = imread('/images/color2.jpeg'); //read an image +// a=pyramid(inputimage1,'expand',2); //perform 'expand' operation +// imshow(a); //view the output +// b=pyramid(inputimage1,'reduce',4); +// imshow(b); //view the output +// +// Authors +// Diwakar Bhardwaj + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 3 then + error(msprintf("Too many input arguments")) + elseif rhs < 3 + error(msprintf("Input arguments missing")) + end + + inputimage1=mattolist(inputimage); + a=raw_pyramid(inputimage1,direction,level); + dimension=size(a) + for i = 1:dimension + out(:,:,i)=a(i); + end + +endfunction; diff --git a/macros/pyramid.sci~ b/macros/pyramid.sci~ new file mode 100644 index 0000000..79c2bfa --- /dev/null +++ b/macros/pyramid.sci~ @@ -0,0 +1,58 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Diwakar Bhardwaj +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [out]=pyramid(inputimage,direction,level) +// This function computes the pyramid reduction or expansion of input_image. +// +// Calling Sequence +// output_image=pyramid(inputimage,direction,level); +// +// Parameters +// inputimage : image matrix on which pyramid reduction or expansion has to be applied +// Direction : An input string 'expand' for expand or 'reduce' for reduce the image matrix +// level : It is specify number of times want to expand or reduce the dimension of an image matrix. +// output_image : Expanded or reduced form of image after pyramid reduction or expansio +// +// Description +// This function computes the pyramid reduction or expansion of input image.It uses Gaussian pyramid to downsamples +// and upsamples the image pixels.In reduction it reduces the size of image (if m*n matrix image) by m/pow(2,level) +// and n/pow(2,level).In expansion it expands the size of image (if m*n matrix image) by m*pow(2,level) +// and n*pow(2,level) where pow(x,y)=x^y. +// +// Examples +// inputimage1 = imread('/images/color2.jpeg'); //read an image +// a=pyramid(inputimage1,'expand',2); //perform 'expand' operation +// imshow(a); //view the output +// b=pyramid(inputimage1,'reduce',4); +// imshow(b); //view the output +// +// Authors +// Diwakar Bhardwaj + + [ lhs rhs ] = argn(0) + if lhs > 1 then + error(msprintf("Too many output argument")) + end + + if rhs > 3 then + error(msprintf("Too many input arguments")) + elseif rhs < 3 + error(msprintf("Input arguments missing")) + end + + inputimage1=mattolist(inputimage); + a=raw_pyramid(inputimage1,direction,level); + dimension=size(a) + for i = 1:dimension + out(:,:,i)=a(i); + end + +endfunction; diff --git a/macros/regionFill.sci b/macros/regionFill.sci new file mode 100644 index 0000000..4b8bdc8 --- /dev/null +++ b/macros/regionFill.sci @@ -0,0 +1,73 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Vinay Bhat, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function[dstImg] = regionFill(srcImg,inpaintRadius,varargin) +// This function restores the selected region in an image using the region neighborhood. +// This function restores the selected region in an image using the region neighborhood. +// +// +// Calling Sequence +// src = imread(location-for-image) +// x = [x1 x2 ...........xn ] //x coordinates of polygon covering the region that you want to fill +// y = [y1 y2 ...........yn ] //corresponding y coordinates of polygon covering the region that you want to fill +// dstImg 1= regionFill(srcImg,inpaintRadius,x,y) +// +// mask = roiFreeHand(srx) //making a mask - you can also use other function to make the mask +// dstImg2 = regionFill(srcImg,inpaintRadius,mask) +// +// Parameters +// +// srcImg: input source imge //it is converted to 8 bit internally +// inpaintRadius: Radius of a circular neighborhood of each point inpainted that is considered by the algorithm(Double) +// mask: Inpainting mask. Non-zero pixels indicate the area that needs to be inpainted. +// x: 1xn matrix denoting x coordinates of polygon covering the region that you want to fill +// y: 1xn matrix denoting y coordinates of polygon covering the region that you want to fill +// +// Examples +// src= imread("/images/regionFill_test5.jpg"); +// p=regionFill(src,1,[100 110 110 100],[150 150 200 200]); +// imshow(p); +// +// Examples +// src= imread("/images/regionFill_test5.jpg"); //reading an image +// mask=roiFreeHand(src); //making a mask +// p=regionFill(src,5,mask); +// imshow(p); +// +//Authors +//Vinay Bhat +//Rohan Gurve + + [lhs, rhs] = argn(0) + + if rhs < 3 + error(msprintf("input arguments missing")); + elseif rhs > 4 + error(msprintf(" Too many input arguments")); + end + + srcMat = mattolist(srcImg) + + if rhs == 3 then + maskMat = mattolist(varargin(1)) + out = raw_regionFill(srcMat,inpaintRadius, maskMat) + elseif rhs == 4 then + x= varargin(1) + y= varargin(2) + out = raw_regionFill(srcMat,inpaintRadius, x, y) + end + + channels = size(out) + + for i = 1:channels + dstImg(:,:,i) = out(i) + end +endfunction diff --git a/macros/regionFill.sci~ b/macros/regionFill.sci~ new file mode 100644 index 0000000..4b8bdc8 --- /dev/null +++ b/macros/regionFill.sci~ @@ -0,0 +1,73 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Vinay Bhat, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function[dstImg] = regionFill(srcImg,inpaintRadius,varargin) +// This function restores the selected region in an image using the region neighborhood. +// This function restores the selected region in an image using the region neighborhood. +// +// +// Calling Sequence +// src = imread(location-for-image) +// x = [x1 x2 ...........xn ] //x coordinates of polygon covering the region that you want to fill +// y = [y1 y2 ...........yn ] //corresponding y coordinates of polygon covering the region that you want to fill +// dstImg 1= regionFill(srcImg,inpaintRadius,x,y) +// +// mask = roiFreeHand(srx) //making a mask - you can also use other function to make the mask +// dstImg2 = regionFill(srcImg,inpaintRadius,mask) +// +// Parameters +// +// srcImg: input source imge //it is converted to 8 bit internally +// inpaintRadius: Radius of a circular neighborhood of each point inpainted that is considered by the algorithm(Double) +// mask: Inpainting mask. Non-zero pixels indicate the area that needs to be inpainted. +// x: 1xn matrix denoting x coordinates of polygon covering the region that you want to fill +// y: 1xn matrix denoting y coordinates of polygon covering the region that you want to fill +// +// Examples +// src= imread("/images/regionFill_test5.jpg"); +// p=regionFill(src,1,[100 110 110 100],[150 150 200 200]); +// imshow(p); +// +// Examples +// src= imread("/images/regionFill_test5.jpg"); //reading an image +// mask=roiFreeHand(src); //making a mask +// p=regionFill(src,5,mask); +// imshow(p); +// +//Authors +//Vinay Bhat +//Rohan Gurve + + [lhs, rhs] = argn(0) + + if rhs < 3 + error(msprintf("input arguments missing")); + elseif rhs > 4 + error(msprintf(" Too many input arguments")); + end + + srcMat = mattolist(srcImg) + + if rhs == 3 then + maskMat = mattolist(varargin(1)) + out = raw_regionFill(srcMat,inpaintRadius, maskMat) + elseif rhs == 4 then + x= varargin(1) + y= varargin(2) + out = raw_regionFill(srcMat,inpaintRadius, x, y) + end + + channels = size(out) + + for i = 1:channels + dstImg(:,:,i) = out(i) + end +endfunction diff --git a/macros/rgb2gray.sci b/macros/rgb2gray.sci new file mode 100644 index 0000000..a84f735 --- /dev/null +++ b/macros/rgb2gray.sci @@ -0,0 +1,53 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Priyanka Hiranandani,Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [outputImg]=rgb2gray(inputImage) +//Given an original color image, this function converts it into a single channel grayscale image and return the same. +// +// Calling Sequence +// inputImage = imread("image-location-for-inputImage"); +// outputImg = rgb2gray(inputImage) +// +// Parameters +// outputImage: single channel grayscale version of the inputImage +// inputImage: Input source image +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// gray = rgb2gray(src); +// imshow(gray);//view the output grayscale image +// +// Authors +// Priyanka Hiranandani +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>1 //max i/p arguments is 1 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + inputList=mattolist(inputImage); + out=raw_rgb2gray(inputList); + + sz = size(out); + + for i=1:sz + outputImg(:, :, i) = out(i) + end + +endfunction diff --git a/macros/rgb2gray.sci~ b/macros/rgb2gray.sci~ new file mode 100644 index 0000000..a84f735 --- /dev/null +++ b/macros/rgb2gray.sci~ @@ -0,0 +1,53 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Priyanka Hiranandani,Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [outputImg]=rgb2gray(inputImage) +//Given an original color image, this function converts it into a single channel grayscale image and return the same. +// +// Calling Sequence +// inputImage = imread("image-location-for-inputImage"); +// outputImg = rgb2gray(inputImage) +// +// Parameters +// outputImage: single channel grayscale version of the inputImage +// inputImage: Input source image +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// gray = rgb2gray(src); +// imshow(gray);//view the output grayscale image +// +// Authors +// Priyanka Hiranandani +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>1 //max i/p arguments is 1 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + inputList=mattolist(inputImage); + out=raw_rgb2gray(inputList); + + sz = size(out); + + for i=1:sz + outputImg(:, :, i) = out(i) + end + +endfunction diff --git a/macros/roiFreeHand.sci b/macros/roiFreeHand.sci new file mode 100644 index 0000000..be98720 --- /dev/null +++ b/macros/roiFreeHand.sci @@ -0,0 +1,291 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function mask =roiFreeHand(Image) +// This is a gui based function which is used to create a mask by selecting the region of interest +// +// Calling Sequence +// src = imread(image-location-for-src) +// mask = roiFreeHand(src) +// +// Parameters +// mask: Output 8 bit mask image with same size as input image +// image: Input image to be masked +// +// Description +// This function allows the user to create a mask by selecting the region of interest in the image. +// Start selecting the region of interest by pressing the left mouse button and moving in the clockwise direction. +// Don't leave the left mouse button until you are done selecting the region. Once the region has been selected, +// wait until the process completes. +// More than one region of interest can be selected by repeating the same procedure. +// Once you are done selecting the ROI, press the small 's' key.This would stop the process. +// This function returns a 8 bit mask image with (the ROI being white and the rest of the region being black). +// +// Note +// more than one ROI can be selected from the image. Press key 's' only after all ROI have been selected. +// Move the mouse only in the clockwise direction. +// This algorithm assumes that the selected points in the ROI are very close to each other. Thus for best result, move +// the mouse slowly while selecting the ROI +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// mask = roiFreeHand(src); //creating a mask +// imshow(mask) //view the mask +// +// outputImage1 = colorChange(src, mask) //using this mask in the colorChange function +// imshow(outputImage1);//view the output +// +// Authors +// Rohan Gurve + + imshow(Image); + + FigureHandle = gcf(); + FigureHandle.figure_name = "Create mask - Select ROI "; + Diagram=gca(); + //Diagram.axes_visible = ['off' 'off' 'off']; + //Diagram.isoview = 'on'; + ImageList=mattolist(Image); + [rows cols]=size(ImageList(1)); + + temp_mask = zeros(ImageList(1)); + while(1) do + + pointsList = list(); + + while(1) //start selection of points only when the user presses the left mouse button + [b,x_new,y_new]=xclick(); + if(b==0 & ( (x_new <= cols) & (x_new>=0) & (y_new<= rows) & (y_new>=0))) then//left mouse button has been pressed + break; //consider the point only if it lies inside the image + elseif(b==115) //key s has been pressed + break; + end; + end; + + if(b==0) then + + + x_new = ceil(x_new); y_new = ceil(y_new); + pointsList($+1)=[x_new y_new]; + + rep=[x_new,y_new,0]; + plot([x_new x_new], [y_new y_new],'rx'); + while rep(3)~=-5 do // left mouse button has been pressed + rep=xgetmouse([%t %t]); + x_temp= ceil(rep(1)); + y_temp= ceil(rep(2)); + if( (x_temp <= cols) & (x_temp>=0) & (y_temp<= rows) & (y_temp>=0)) then// consider the point only if it lies inside the image + x_old=x_new;y_old=y_new; + x_new=x_temp;y_new=y_temp; + x = [x_old x_new]; + y = [y_old y_new]; + + pointsList($+1)=[x_new y_new]; + + plot(x, y); + end; + end; + + //-**ROI has been selected - the computation of the ROI will take palce now **-/ + + //first marking the boundary + FigureHandle.figure_name = "Wait (processing.............)"; + + + for i=1: (length(pointsList) -1) + //intensity; + if( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) < 0) //moved from right to left + intensity = 0; //negative area + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //-- moved from up to down & from right to left --// + increase_ht = 0 ; + for j=pointsList(i+1)(1,1):pointsList(i)(1,1) + temp_mask(rows - pointsList(i+1)(1,2) - increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht+1; + + end; + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up & from right to left --// + + increase_ht = 0 ; + for j=pointsList(i+1)(1,1):pointsList(i)(1,1) + temp_mask(rows - pointsList(i+1)(1,2) + increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht + 1; + end; + + else//both points have same height + for j=pointsList(i+1)(1,1):pointsList(i)(1,1) + temp_mask(rows - pointsList(i+1)(1,2) +1 ,j) = 1; //marking the boundary as 1 + end; + + end + + + elseif( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) > 0) + intensity =255;//positive area if movement from left to right + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //-- moved from up to down and from left to right --// + + increase_ht = 0 ; + for j=pointsList(i)(1,1):pointsList(i+1)(1,1) + temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht + 1; + end; + + + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up and from left to right --// + + increase_ht = 0 ; + for j=pointsList(i)(1,1):pointsList(i+1)(1,1) + temp_mask(rows - pointsList(i)(1,2) - increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht+1; + end; + else //both points have same height + for j=pointsList(i)(1,1):pointsList(i+1)(1,1) + temp_mask(rows - pointsList(i)(1,2) +1 ,j) = 1; //marking the boundary as 1 + + //increase_ht=increase_ht+1; + end; + + + end + + else//both coordinate have the same x coordinate + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + for j=0:(pointsList(i)(1,2) - pointsList(i+1)(1,2)) + temp_mask(rows - pointsList(i)(1,2) + j +1 ,pointsList(i)(1,1)) = 1; //marking the boundary as 1 + end + else + for j=0:(pointsList(i+1)(1,2) - pointsList(i)(1,2)) //moved from down to up + temp_mask(rows - pointsList(i)(1,2) - j +1 ,pointsList(i)(1,1)) = 1; //marking the boundary as 1 + end + + end + + end //if + + end //for loop + + + //next marking the area + for i=1: (length(pointsList) -1) + //intensity; + if( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) < 0) //moved from right to left + intensity = 0; //negative area + + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //-- moved from up to down & from right to left --// + + for j=0:(pointsList(i)(1,1)-pointsList(i+1)(1,1)) + increase_ht = 1 ; + while( ((rows - pointsList(i+1)(1,2) -j + increase_ht +1 ) <= rows) & (temp_mask(rows - pointsList(i+1)(1,2) -j + increase_ht +1 ,pointsList(i+1)(1,1)+j) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i+1)(1,2) -j + increase_ht +1 ,pointsList(i+1)(1,1)+j) = 0; //marking the underneath area as 0 + increase_ht=increase_ht + 1; + + end; + end; + + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up & from right to left --// + + + for j=0:(pointsList(i)(1,1)-pointsList(i+1)(1,1)) + increase_ht = 1 ; + while( ((rows - pointsList(i+1)(1,2) + j + increase_ht +1) <= rows) & (temp_mask(rows - pointsList(i+1)(1,2)+j + increase_ht +1 ,pointsList(i+1)(1,1)+j) ~= 1) ) //loop until it reaches any boundary or image border + temp_mask(rows - pointsList(i+1)(1,2) + j + increase_ht +1 ,pointsList(i+1)(1,1)+j) = 0; //marking the underneath area as 0 + increase_ht = increase_ht + 1 ; + end; + end; + + else //both point on same height + for j=0:(pointsList(i)(1,1)-pointsList(i+1)(1,1)) + increase_ht = 1 ; + while( ((rows - pointsList(i+1)(1,2) + increase_ht +1) <= rows) & (temp_mask(rows - pointsList(i+1)(1,2) + increase_ht +1 ,pointsList(i+1)(1,1)+j) ~= 1) ) //loop until it reaches any boundary or image border + temp_mask(rows - pointsList(i+1)(1,2) + increase_ht +1 ,pointsList(i+1)(1,1)+j) = 0; //marking the underneath area as 0 + increase_ht = increase_ht + 1 ; + end; + end; + + + end //"moved from up to down" 'if' end + + elseif( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) > 0)// moved from left to right + intensity =255;//positive area if movement from left to right + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //--moved from up to down and from left to right --// + + for j=0:(pointsList(i+1)(1,1)-pointsList(i)(1,1)) + increase_ht = 1 ; + + while(((rows - pointsList(i)(1,2) + increase_ht + j +1) <= rows) & (temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 +j,j+pointsList(i)(1,1)) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i)(1,2) + increase_ht +j +1 ,j+pointsList(i)(1,1)) = 255; //marking the underneath area as 255 + increase_ht = increase_ht + 1 ; + end; + end; + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up and from left to right --// + + + for j=0:(pointsList(i+1)(1,1)-pointsList(i)(1,1)) + increase_ht = 1 ; + + while( ((rows - pointsList(i)(1,2) + increase_ht -j +1) <= rows ) & (temp_mask(rows - pointsList(i)(1,2) -j + increase_ht +1 ,pointsList(i)(1,1)+j) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i)(1,2) - j + increase_ht +1 ,pointsList(i)(1,1)+j) = 255; //marking the underneath area as 255 + increase_ht = increase_ht + 1 ; + end; + + end; + else + for j=0:(pointsList(i+1)(1,1)-pointsList(i)(1,1)) + increase_ht = 1 ; + + while( ((rows - pointsList(i)(1,2) + increase_ht +1) <= rows ) & (temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 ,pointsList(i)(1,1)+j) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 ,pointsList(i)(1,1)+j) = 255; //marking the underneath area as 255 + increase_ht = increase_ht + 1 ; + end; + end; + + + + + end;//moved from up to down's if end + end; //if statement + end;//for loop's end + + FigureHandle.figure_name = "Create mask - Select ROI"; + + //-** the computation of the selected ROI has been completed **-/ + //mask = pointsList; + + else //b==115 + break;//ROI has been selected - stopping the selection process + + end //if(b==0) + mask = temp_mask; + + end //while(1) loop's end + + +endfunction diff --git a/macros/roiFreeHand.sci~ b/macros/roiFreeHand.sci~ new file mode 100644 index 0000000..be98720 --- /dev/null +++ b/macros/roiFreeHand.sci~ @@ -0,0 +1,291 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function mask =roiFreeHand(Image) +// This is a gui based function which is used to create a mask by selecting the region of interest +// +// Calling Sequence +// src = imread(image-location-for-src) +// mask = roiFreeHand(src) +// +// Parameters +// mask: Output 8 bit mask image with same size as input image +// image: Input image to be masked +// +// Description +// This function allows the user to create a mask by selecting the region of interest in the image. +// Start selecting the region of interest by pressing the left mouse button and moving in the clockwise direction. +// Don't leave the left mouse button until you are done selecting the region. Once the region has been selected, +// wait until the process completes. +// More than one region of interest can be selected by repeating the same procedure. +// Once you are done selecting the ROI, press the small 's' key.This would stop the process. +// This function returns a 8 bit mask image with (the ROI being white and the rest of the region being black). +// +// Note +// more than one ROI can be selected from the image. Press key 's' only after all ROI have been selected. +// Move the mouse only in the clockwise direction. +// This algorithm assumes that the selected points in the ROI are very close to each other. Thus for best result, move +// the mouse slowly while selecting the ROI +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// mask = roiFreeHand(src); //creating a mask +// imshow(mask) //view the mask +// +// outputImage1 = colorChange(src, mask) //using this mask in the colorChange function +// imshow(outputImage1);//view the output +// +// Authors +// Rohan Gurve + + imshow(Image); + + FigureHandle = gcf(); + FigureHandle.figure_name = "Create mask - Select ROI "; + Diagram=gca(); + //Diagram.axes_visible = ['off' 'off' 'off']; + //Diagram.isoview = 'on'; + ImageList=mattolist(Image); + [rows cols]=size(ImageList(1)); + + temp_mask = zeros(ImageList(1)); + while(1) do + + pointsList = list(); + + while(1) //start selection of points only when the user presses the left mouse button + [b,x_new,y_new]=xclick(); + if(b==0 & ( (x_new <= cols) & (x_new>=0) & (y_new<= rows) & (y_new>=0))) then//left mouse button has been pressed + break; //consider the point only if it lies inside the image + elseif(b==115) //key s has been pressed + break; + end; + end; + + if(b==0) then + + + x_new = ceil(x_new); y_new = ceil(y_new); + pointsList($+1)=[x_new y_new]; + + rep=[x_new,y_new,0]; + plot([x_new x_new], [y_new y_new],'rx'); + while rep(3)~=-5 do // left mouse button has been pressed + rep=xgetmouse([%t %t]); + x_temp= ceil(rep(1)); + y_temp= ceil(rep(2)); + if( (x_temp <= cols) & (x_temp>=0) & (y_temp<= rows) & (y_temp>=0)) then// consider the point only if it lies inside the image + x_old=x_new;y_old=y_new; + x_new=x_temp;y_new=y_temp; + x = [x_old x_new]; + y = [y_old y_new]; + + pointsList($+1)=[x_new y_new]; + + plot(x, y); + end; + end; + + //-**ROI has been selected - the computation of the ROI will take palce now **-/ + + //first marking the boundary + FigureHandle.figure_name = "Wait (processing.............)"; + + + for i=1: (length(pointsList) -1) + //intensity; + if( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) < 0) //moved from right to left + intensity = 0; //negative area + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //-- moved from up to down & from right to left --// + increase_ht = 0 ; + for j=pointsList(i+1)(1,1):pointsList(i)(1,1) + temp_mask(rows - pointsList(i+1)(1,2) - increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht+1; + + end; + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up & from right to left --// + + increase_ht = 0 ; + for j=pointsList(i+1)(1,1):pointsList(i)(1,1) + temp_mask(rows - pointsList(i+1)(1,2) + increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht + 1; + end; + + else//both points have same height + for j=pointsList(i+1)(1,1):pointsList(i)(1,1) + temp_mask(rows - pointsList(i+1)(1,2) +1 ,j) = 1; //marking the boundary as 1 + end; + + end + + + elseif( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) > 0) + intensity =255;//positive area if movement from left to right + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //-- moved from up to down and from left to right --// + + increase_ht = 0 ; + for j=pointsList(i)(1,1):pointsList(i+1)(1,1) + temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht + 1; + end; + + + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up and from left to right --// + + increase_ht = 0 ; + for j=pointsList(i)(1,1):pointsList(i+1)(1,1) + temp_mask(rows - pointsList(i)(1,2) - increase_ht +1 ,j) = 1; //marking the boundary as 1 + + increase_ht=increase_ht+1; + end; + else //both points have same height + for j=pointsList(i)(1,1):pointsList(i+1)(1,1) + temp_mask(rows - pointsList(i)(1,2) +1 ,j) = 1; //marking the boundary as 1 + + //increase_ht=increase_ht+1; + end; + + + end + + else//both coordinate have the same x coordinate + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + for j=0:(pointsList(i)(1,2) - pointsList(i+1)(1,2)) + temp_mask(rows - pointsList(i)(1,2) + j +1 ,pointsList(i)(1,1)) = 1; //marking the boundary as 1 + end + else + for j=0:(pointsList(i+1)(1,2) - pointsList(i)(1,2)) //moved from down to up + temp_mask(rows - pointsList(i)(1,2) - j +1 ,pointsList(i)(1,1)) = 1; //marking the boundary as 1 + end + + end + + end //if + + end //for loop + + + //next marking the area + for i=1: (length(pointsList) -1) + //intensity; + if( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) < 0) //moved from right to left + intensity = 0; //negative area + + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //-- moved from up to down & from right to left --// + + for j=0:(pointsList(i)(1,1)-pointsList(i+1)(1,1)) + increase_ht = 1 ; + while( ((rows - pointsList(i+1)(1,2) -j + increase_ht +1 ) <= rows) & (temp_mask(rows - pointsList(i+1)(1,2) -j + increase_ht +1 ,pointsList(i+1)(1,1)+j) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i+1)(1,2) -j + increase_ht +1 ,pointsList(i+1)(1,1)+j) = 0; //marking the underneath area as 0 + increase_ht=increase_ht + 1; + + end; + end; + + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up & from right to left --// + + + for j=0:(pointsList(i)(1,1)-pointsList(i+1)(1,1)) + increase_ht = 1 ; + while( ((rows - pointsList(i+1)(1,2) + j + increase_ht +1) <= rows) & (temp_mask(rows - pointsList(i+1)(1,2)+j + increase_ht +1 ,pointsList(i+1)(1,1)+j) ~= 1) ) //loop until it reaches any boundary or image border + temp_mask(rows - pointsList(i+1)(1,2) + j + increase_ht +1 ,pointsList(i+1)(1,1)+j) = 0; //marking the underneath area as 0 + increase_ht = increase_ht + 1 ; + end; + end; + + else //both point on same height + for j=0:(pointsList(i)(1,1)-pointsList(i+1)(1,1)) + increase_ht = 1 ; + while( ((rows - pointsList(i+1)(1,2) + increase_ht +1) <= rows) & (temp_mask(rows - pointsList(i+1)(1,2) + increase_ht +1 ,pointsList(i+1)(1,1)+j) ~= 1) ) //loop until it reaches any boundary or image border + temp_mask(rows - pointsList(i+1)(1,2) + increase_ht +1 ,pointsList(i+1)(1,1)+j) = 0; //marking the underneath area as 0 + increase_ht = increase_ht + 1 ; + end; + end; + + + end //"moved from up to down" 'if' end + + elseif( (pointsList(i+1)(1,1) - pointsList(i)(1,1)) > 0)// moved from left to right + intensity =255;//positive area if movement from left to right + + if( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) < 0) //moved from up to down + //--moved from up to down and from left to right --// + + for j=0:(pointsList(i+1)(1,1)-pointsList(i)(1,1)) + increase_ht = 1 ; + + while(((rows - pointsList(i)(1,2) + increase_ht + j +1) <= rows) & (temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 +j,j+pointsList(i)(1,1)) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i)(1,2) + increase_ht +j +1 ,j+pointsList(i)(1,1)) = 255; //marking the underneath area as 255 + increase_ht = increase_ht + 1 ; + end; + end; + + elseif( (pointsList(i+1)(1,2) - pointsList(i)(1,2)) > 0) //moved from down to up + //-- moved from down to up and from left to right --// + + + for j=0:(pointsList(i+1)(1,1)-pointsList(i)(1,1)) + increase_ht = 1 ; + + while( ((rows - pointsList(i)(1,2) + increase_ht -j +1) <= rows ) & (temp_mask(rows - pointsList(i)(1,2) -j + increase_ht +1 ,pointsList(i)(1,1)+j) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i)(1,2) - j + increase_ht +1 ,pointsList(i)(1,1)+j) = 255; //marking the underneath area as 255 + increase_ht = increase_ht + 1 ; + end; + + end; + else + for j=0:(pointsList(i+1)(1,1)-pointsList(i)(1,1)) + increase_ht = 1 ; + + while( ((rows - pointsList(i)(1,2) + increase_ht +1) <= rows ) & (temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 ,pointsList(i)(1,1)+j) ~ = 1) ) //loop until it reaches the any boundary or image border + temp_mask(rows - pointsList(i)(1,2) + increase_ht +1 ,pointsList(i)(1,1)+j) = 255; //marking the underneath area as 255 + increase_ht = increase_ht + 1 ; + end; + end; + + + + + end;//moved from up to down's if end + end; //if statement + end;//for loop's end + + FigureHandle.figure_name = "Create mask - Select ROI"; + + //-** the computation of the selected ROI has been completed **-/ + //mask = pointsList; + + else //b==115 + break;//ROI has been selected - stopping the selection process + + end //if(b==0) + mask = temp_mask; + + end //while(1) loop's end + + +endfunction diff --git a/macros/roiPoly.sci b/macros/roiPoly.sci new file mode 100644 index 0000000..6b4b9b0 --- /dev/null +++ b/macros/roiPoly.sci @@ -0,0 +1,78 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohit Suri, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function[dstImg] = roiPoly(srcImg, col_list, row_list) +//This function creates mask by selecting the ROI as a poygon. +//This function creates mask by selecting the ROI as a poygon. +// +// Calling Sequence +// I = imimread(image-location) +// c = [c1 c2 ..............cn] +// r = [r1 r2 ..............rn] +// BW = roipoly(I, c, r) +// +// Parameters +// I : Input image +// c : a 1xn vector specifying the column indices of the vertices of the n sided polygon +// r : a 1xn vector specifying the row indices of the vertices of the n sided polygon +// BW: Output mask image for input I +// +// Description +// Returns the ROI specified by the polygon described by vectors c and r, which specify the column +// and row indices of each vertex, respectively. c and r must be the same size. +// +// Examples +// I = imread('image_01.jpeg'); +// c = [50 50 100 100] //defining the column indices of the vertices of the ROI +// r = [100 150 150 100 ] //defining the corresponding row indices of the vertices of the ROI +// BW = roipoly(I, c, r) //creating a mask +// imshow(BW) //viewing the mask +// c=colorChange(I,mask,2.4 ,2.0, 2.2); //using this mask in colorChange function +// imshow(c); +// +// Examples +// I = imread('../images/color3.jpg'); +// c = [ 150 200 250 300 250 200 ] ; //defining the column indices of the vertices of the ROI +// r = [ 135 100 100 135 170 170 ] ; //defining the corresponding row indices of the vertices of the ROI +// gray = rgb2gray(I) ; //for a grayscale image +// BW = roiPoly(I, c, r); //creating a mask +// imshow(BW) //viewing the mask +// +// Examples +// I = imread('/images/color3.jpg'); +// c1 = [200 250 300 250 150 200 ] +// r1 = [ 170 170 135 100 135 100] //undesired output because changing the order of points +// BW = roiPoly(I,c1,r1); +// imshow(BW) +// +// Authors +// Vinay Bhat +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 + error(msprintf(" Too many input arguments")); + elseif rhs<3 + error(msprintf(" input arguments missing")); + end + + srcMat = mattolist(srcImg) + + out = raw_roiPoly(srcMat,row_list,col_list) + + + channels = size(out) + + for i = 1:channels + dstImg(:,:,i) = out(i) + end + +endfunction diff --git a/macros/roiPoly.sci~ b/macros/roiPoly.sci~ new file mode 100644 index 0000000..e6ff1b4 --- /dev/null +++ b/macros/roiPoly.sci~ @@ -0,0 +1,78 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohit Suri, Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function[dstImg] = roiPoly(srcImg, col_list, row_list) +//This function creates mask by selecting the ROI as a poygon. +//This function creates mask by selecting the ROI as a poygon. +// +// Calling Sequence +// I = imimread(image-location) +// c = [c1 c2 ..............cn] +// r = [r1 r2 ..............rn] +// BW = roipoly(I, c, r) +// +// Parameters +// I : Input image +// c : a 1xn vector specifying the column indices of the vertices of the n sided polygon +// r : a 1xn vector specifying the row indices of the vertices of the n sided polygon +// BW: Output mask image for input I +// +// Description +// Returns the ROI specified by the polygon described by vectors c and r, which specify the column +// and row indices of each vertex, respectively. c and r must be the same size. +// +// Examples +// I = imread('image_01.jpeg'); +// c = [50 50 100 100] //defining the column indices of the vertices of the ROI +// r = [100 150 150 100 ] //defining the corresponding row indices of the vertices of the ROI +// BW = roipoly(I, c, r) //creating a mask +// imshow(BW) //viewing the mask +// c=colorChange(I,mask,2.4 ,2.0, 2.2); //using this mask in colorChange function +// imshow(c); +// +// Examples +// I = imread('../images/color3.jpg'); +// c = [ 150 200 250 300 250 200 ] ; //defining the column indices of the vertices of the ROI +// r = [ 135 100 100 135 170 170 ] ; //defining the corresponding row indices of the vertices of the ROI +// gray = rgb2gray(I) ; //for a grayscale image +// BW = roiPoly(I, c, r); //creating a mask +// imshow(BW) //viewing the mask +// +// Examples +// I = imread('../images/color3.jpg'); +// c1 = [200 250 300 250 150 200 ] +// r1 = [ 170 170 135 100 135 100] //undesired output because changing the order of points +// BW = roiPoly(I,c1,r1); +// imshow(BW) +// +// Authors +// Vinay Bhat +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 + error(msprintf(" Too many input arguments")); + elseif rhs<3 + error(msprintf(" input arguments missing")); + end + + srcMat = mattolist(srcImg) + + out = raw_roiPoly(srcMat,row_list,col_list) + + + channels = size(out) + + for i = 1:channels + dstImg(:,:,i) = out(i) + end + +endfunction diff --git a/macros/seamlessClone.sci b/macros/seamlessClone.sci new file mode 100644 index 0000000..5d05fda --- /dev/null +++ b/macros/seamlessClone.sci @@ -0,0 +1,84 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = seamlessClone(src,dst,mask, pointMatirx, flag) +// This function is used to seamlessly clone a source image onto a destination image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = seamlessClone(src,dst,mask, pointMatirx, flag) +// +// Parameters +// outputImage: resultant Output image +// src: Input source image. +// dst: Input destination image on which the source image will be cloned onto . +// mask: Input mask image with same size as that of source image. +// pointMatirx: a 1x2 vector denoting the x & y coordinates of the point in dst where the src image will be cloned (x & y are Double) +// flag( Cloning method that could be one of the following):1) 1 - NORMAL_CLONE ; 2) 2 - MIXED_CLONE ; 3) 3 - FEATURE_EXCHANGE +// +// Description +// Image editing tasks concern either global changes (color/intensity corrections, filters, deformations) or +// local changes concerned to a selection. Here we are interested in achieving local changes, ones +// that are restricted to a region manually selected (ROI), in a seamless and effortless manner. +// The extent of the changes ranges from slight distortions to complete replacement by novel content +// +// +//Note: The size of the source image should be equal to or less than the destination image. The point 'p' +// should be chosen such that it fully fits inside the destination image.If not, then this function will throw the error=> +// -(minxd >= 0 && minyd >= 0 && maxxd <= dest.rows && maxyd <= dest.cols) in seamlessClone +// +// Examples +// dst = imread("/images/color3.jpg"); //read destination image +// src = imread("/images/cartoon.jpg"); //read source image +// mask = roiFreeHand(src); //create a mask for source image +// output = seamlessClone(src,dst,mask,[75 120], 1 ); //perform the seamelessClone +// imshow(output); +// +// Examples +// dst = imread("/images/color3.jpg"); //read destination image +// src = imread("/images/cartoon.jpg"); //read source image +// [rows cols] = size(src) //creating a mask for source image +// mask = zeros(rows,cols); +// mask(50:rows,1:cols) = 255; +// output = seamlessClone(src,dst,mask,[75 120], 1 ); //perform the seamelessClone +// imshow(output); +// +// +// Authors +// Rohan Gurve + + + [lhs rhs]=argn(0); + if rhs>5 + error(msprintf(" Too many input arguments")); + elseif rhs<5 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(dst); + image_list3 = mattolist(mask); + + out = raw_seamlessClone(image_list1,image_list2,image_list3,pointMatirx, flag); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + diff --git a/macros/seamlessClone.sci~ b/macros/seamlessClone.sci~ new file mode 100644 index 0000000..5d05fda --- /dev/null +++ b/macros/seamlessClone.sci~ @@ -0,0 +1,84 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = seamlessClone(src,dst,mask, pointMatirx, flag) +// This function is used to seamlessly clone a source image onto a destination image. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = seamlessClone(src,dst,mask, pointMatirx, flag) +// +// Parameters +// outputImage: resultant Output image +// src: Input source image. +// dst: Input destination image on which the source image will be cloned onto . +// mask: Input mask image with same size as that of source image. +// pointMatirx: a 1x2 vector denoting the x & y coordinates of the point in dst where the src image will be cloned (x & y are Double) +// flag( Cloning method that could be one of the following):1) 1 - NORMAL_CLONE ; 2) 2 - MIXED_CLONE ; 3) 3 - FEATURE_EXCHANGE +// +// Description +// Image editing tasks concern either global changes (color/intensity corrections, filters, deformations) or +// local changes concerned to a selection. Here we are interested in achieving local changes, ones +// that are restricted to a region manually selected (ROI), in a seamless and effortless manner. +// The extent of the changes ranges from slight distortions to complete replacement by novel content +// +// +//Note: The size of the source image should be equal to or less than the destination image. The point 'p' +// should be chosen such that it fully fits inside the destination image.If not, then this function will throw the error=> +// -(minxd >= 0 && minyd >= 0 && maxxd <= dest.rows && maxyd <= dest.cols) in seamlessClone +// +// Examples +// dst = imread("/images/color3.jpg"); //read destination image +// src = imread("/images/cartoon.jpg"); //read source image +// mask = roiFreeHand(src); //create a mask for source image +// output = seamlessClone(src,dst,mask,[75 120], 1 ); //perform the seamelessClone +// imshow(output); +// +// Examples +// dst = imread("/images/color3.jpg"); //read destination image +// src = imread("/images/cartoon.jpg"); //read source image +// [rows cols] = size(src) //creating a mask for source image +// mask = zeros(rows,cols); +// mask(50:rows,1:cols) = 255; +// output = seamlessClone(src,dst,mask,[75 120], 1 ); //perform the seamelessClone +// imshow(output); +// +// +// Authors +// Rohan Gurve + + + [lhs rhs]=argn(0); + if rhs>5 + error(msprintf(" Too many input arguments")); + elseif rhs<5 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(dst); + image_list3 = mattolist(mask); + + out = raw_seamlessClone(image_list1,image_list2,image_list3,pointMatirx, flag); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + diff --git a/macros/stylization.sci b/macros/stylization.sci new file mode 100644 index 0000000..ab23b69 --- /dev/null +++ b/macros/stylization.sci @@ -0,0 +1,72 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = stylization(src,varargin) +//This function aims to produce non-photorealistic digital imagery with a wide variety of effects. +// +//Calling Sequence +//src = imread("image-location-for-src"); +//outputImage = stylization(src,sigma_s,sigma_r) +// +//Parameters +//outputImage: resultant Output image +//src: Input 8-bit 3-channel image. +//sigma_s: Range between 0 to 200 (float) (default value is 60) +//sigma_r: Range between 0 to 1. (float) (default value is 0.45f) +// +//Description +// Edge-aware filters are ideal for stylization, as they can abstract regions of low contrast while preserving, +// or enhancing, high-contrast features. +// +// Examples +// src = imread("/images/color2.jpeg"); +// outputImage1 = stylization(src) //using default values for optional parameters +// imshow(outputImage1);//view the output +// +// outputImage2 = stylization(src,121) //using default value for sigma_r +// imshow(outputImage2);//view the output +// +// outputImage3 = stylization(src,[],0.2) //using default value for sigma_s +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 //max i/p arguments are 3 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + sigma_s = argindefault ( varargin , 1 , 60 );//default value is 60 + sigma_r = argindefault ( varargin , 2 , 0.45 );//default value is 0.45f + + + + out = raw_stylization(image_list1,sigma_s,sigma_r); + + + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/stylization.sci~ b/macros/stylization.sci~ new file mode 100644 index 0000000..ab23b69 --- /dev/null +++ b/macros/stylization.sci~ @@ -0,0 +1,72 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = stylization(src,varargin) +//This function aims to produce non-photorealistic digital imagery with a wide variety of effects. +// +//Calling Sequence +//src = imread("image-location-for-src"); +//outputImage = stylization(src,sigma_s,sigma_r) +// +//Parameters +//outputImage: resultant Output image +//src: Input 8-bit 3-channel image. +//sigma_s: Range between 0 to 200 (float) (default value is 60) +//sigma_r: Range between 0 to 1. (float) (default value is 0.45f) +// +//Description +// Edge-aware filters are ideal for stylization, as they can abstract regions of low contrast while preserving, +// or enhancing, high-contrast features. +// +// Examples +// src = imread("/images/color2.jpeg"); +// outputImage1 = stylization(src) //using default values for optional parameters +// imshow(outputImage1);//view the output +// +// outputImage2 = stylization(src,121) //using default value for sigma_r +// imshow(outputImage2);//view the output +// +// outputImage3 = stylization(src,[],0.2) //using default value for sigma_s +// imshow(outputImage3);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>3 //max i/p arguments are 3 + error(msprintf(" Too many input arguments")); + elseif rhs<1 //min i/p argument is 1 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + sigma_s = argindefault ( varargin , 1 , 60 );//default value is 60 + sigma_r = argindefault ( varargin , 2 , 0.45 );//default value is 0.45f + + + + out = raw_stylization(image_list1,sigma_s,sigma_r); + + + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/templateMatcher.sci b/macros/templateMatcher.sci new file mode 100644 index 0000000..fec8a9e --- /dev/null +++ b/macros/templateMatcher.sci @@ -0,0 +1,80 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Suraj Prakash,Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [new_image,x,y] = templateMatcher(image, template_image) +// This function compares a template in overlapped image regions and returns the coordinates of the point of match. +// +// Calling Sequence +// [new_image x y] = templateMatcher(image, template_image) +// +// Parameters +// image : 8-bit int or 32-bit floating image +// template_image : Searched template. It must not be greater than the source image and have the same data type of input image. +// newimage : Map of comparison results. It must be single channel 32-bit floating-point. Its size is (W-w+1) * (H-h+1) if image +// is W * H and template_image is w * h +// x: the row no. of the location where the template matched occured in the input image +// y: x: the column no. of the location where the template matched in the input image +// +// Description +// The function compares the w * h sized images of the original image against the template image and stores the result in the new_image. +// The point of maxima in the image gives the position of the match. +// +// Examples +// src= imread("/images/color3.jpg"); //reading the source image +// gray_src = rgb2gray(src); //converting src to grayscale +// tem = imread("/images/smile.jpg"); //reading the template image +// tem = rgb2gray(tem);//converting template image to gray +// imshow(tem);//view the template image +// [j x y] =templateMatcher(gray_src,tem); //perform the template matching +// [rows cols] =size(tem) +// t = rectangle(src,x,y,x+cols,y+rows,0,0,255,2,8,0); //mark the position of the point of template match in the src image +// imshow(j) //view the CV_64F output image of templateMatcher +// imshow(t) //view the src image with the template object marked +// +// +// Authors +// Suraj Prakash +// Rohan Gurve + + + [ lhs rhs ] = argn(0) + if lhs > 3 then + error(msprintf("Too many output argument")) + elseif lhs < 1 then + error(msprintf("output arguments missing")) + + end + + + if rhs > 2 then + error(msprintf("Too many input arguments")) + end + + [imagerows imagecols imagechannel] = size(image) + [t_rows t_cols t_channel] = size(template_image) + if t_rows > imagerows | t_cols > imagecols then + error(msprintf("Template image is greater than image\n")) + end + + image_list = mattolist(image) + template_image_list = mattolist(template_image) + + + [temp x y] = raw_templateMatcher(image_list, template_image_list) + + + sz = size(temp) + + for i=1 : sz + new_image(:, :, i) = temp(i) + end + +endfunction diff --git a/macros/templateMatcher.sci~ b/macros/templateMatcher.sci~ new file mode 100644 index 0000000..fec8a9e --- /dev/null +++ b/macros/templateMatcher.sci~ @@ -0,0 +1,80 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Suraj Prakash,Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function [new_image,x,y] = templateMatcher(image, template_image) +// This function compares a template in overlapped image regions and returns the coordinates of the point of match. +// +// Calling Sequence +// [new_image x y] = templateMatcher(image, template_image) +// +// Parameters +// image : 8-bit int or 32-bit floating image +// template_image : Searched template. It must not be greater than the source image and have the same data type of input image. +// newimage : Map of comparison results. It must be single channel 32-bit floating-point. Its size is (W-w+1) * (H-h+1) if image +// is W * H and template_image is w * h +// x: the row no. of the location where the template matched occured in the input image +// y: x: the column no. of the location where the template matched in the input image +// +// Description +// The function compares the w * h sized images of the original image against the template image and stores the result in the new_image. +// The point of maxima in the image gives the position of the match. +// +// Examples +// src= imread("/images/color3.jpg"); //reading the source image +// gray_src = rgb2gray(src); //converting src to grayscale +// tem = imread("/images/smile.jpg"); //reading the template image +// tem = rgb2gray(tem);//converting template image to gray +// imshow(tem);//view the template image +// [j x y] =templateMatcher(gray_src,tem); //perform the template matching +// [rows cols] =size(tem) +// t = rectangle(src,x,y,x+cols,y+rows,0,0,255,2,8,0); //mark the position of the point of template match in the src image +// imshow(j) //view the CV_64F output image of templateMatcher +// imshow(t) //view the src image with the template object marked +// +// +// Authors +// Suraj Prakash +// Rohan Gurve + + + [ lhs rhs ] = argn(0) + if lhs > 3 then + error(msprintf("Too many output argument")) + elseif lhs < 1 then + error(msprintf("output arguments missing")) + + end + + + if rhs > 2 then + error(msprintf("Too many input arguments")) + end + + [imagerows imagecols imagechannel] = size(image) + [t_rows t_cols t_channel] = size(template_image) + if t_rows > imagerows | t_cols > imagecols then + error(msprintf("Template image is greater than image\n")) + end + + image_list = mattolist(image) + template_image_list = mattolist(template_image) + + + [temp x y] = raw_templateMatcher(image_list, template_image_list) + + + sz = size(temp) + + for i=1 : sz + new_image(:, :, i) = temp(i) + end + +endfunction diff --git a/macros/textureFlattening.sci b/macros/textureFlattening.sci new file mode 100644 index 0000000..5cbb824 --- /dev/null +++ b/macros/textureFlattening.sci @@ -0,0 +1,90 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = textureFlattening(src,mask,varargin) +// This function washes out the texture of the selected region in the input image, giving its contents a flat aspect. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = textureFlattening(src,mask,low_threshold,high_threshold, kernel_size); +// +// Parameters +// outputImage: resultant Output image +// src: Input source image. +// mask: Input mask image with same size as that of source image ( 1 or 3-channel image) +// low_threshold: Range from 0 to 100. (double) (default value is 30) +// high_threshold: Value > 100 & <=255. (double) (default value is 120) +// kernel_size: The size of the Sobel kernel to be used: it can be 3 , 5 or 7 +// +// Description +// It retain the gradients at edge locations, before integrating with the Poisson solver. It uses Canny Edge Detector. +// The algorithm assumes that the color of the source image is close to that of the destination. +// This assumption means that when the colors don't match, the source image color gets tinted toward the color of the destination image. +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// mask = roiFreeHand(src); //creating a mask +// imshow(mask);//view mask +// +// outputImage1 = textureFlattening(src,mask) // using default value for optional parameters +// imshow(outputImage1); // view outputImage1 +// +// outputImage2 = textureFlattening(src,mask,50 , 180.5 ) //providing value for 1st and 2nd optional argument +// imshow(outputImage2); // view outputImage2 +// +// outputImage2 = textureFlattening(src,mask,[],[], 7 ) //providing value for only 3rd optional argument +// imshow(outputImage3); // view outputImage3 +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// [row col] = size(src) +// mask = zeros(row,col) //creating a mask +// mask(100:140,100:150) =255 +// imshow(mask); view the mask +// outputImage = textureFlattening(src,mask) +// imshow(outputImage);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>5 //max i/p arguments are 5 + error(msprintf(" Too many input arguments")); + elseif rhs<2 //min i/p arguments are 2 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(mask); + + low_threshold = argindefault ( varargin , 1 , 30 );//default value is 30 + high_threshold = argindefault ( varargin , 2 , 120 );//default value is 120 + kernel_size = argindefault ( varargin , 3 , 3 );//default value is 3 + + + out = raw_textureFlattening(image_list1,image_list2,low_threshold,high_threshold, kernel_size); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/textureFlattening.sci~ b/macros/textureFlattening.sci~ new file mode 100644 index 0000000..5cbb824 --- /dev/null +++ b/macros/textureFlattening.sci~ @@ -0,0 +1,90 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function output_image = textureFlattening(src,mask,varargin) +// This function washes out the texture of the selected region in the input image, giving its contents a flat aspect. +// +// Calling Sequence +// src = imread("image-location-for-src"); +// mask = roiFreeHand(src); //we can also use other function to create the mask +// outputImage = textureFlattening(src,mask,low_threshold,high_threshold, kernel_size); +// +// Parameters +// outputImage: resultant Output image +// src: Input source image. +// mask: Input mask image with same size as that of source image ( 1 or 3-channel image) +// low_threshold: Range from 0 to 100. (double) (default value is 30) +// high_threshold: Value > 100 & <=255. (double) (default value is 120) +// kernel_size: The size of the Sobel kernel to be used: it can be 3 , 5 or 7 +// +// Description +// It retain the gradients at edge locations, before integrating with the Poisson solver. It uses Canny Edge Detector. +// The algorithm assumes that the color of the source image is close to that of the destination. +// This assumption means that when the colors don't match, the source image color gets tinted toward the color of the destination image. +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// mask = roiFreeHand(src); //creating a mask +// imshow(mask);//view mask +// +// outputImage1 = textureFlattening(src,mask) // using default value for optional parameters +// imshow(outputImage1); // view outputImage1 +// +// outputImage2 = textureFlattening(src,mask,50 , 180.5 ) //providing value for 1st and 2nd optional argument +// imshow(outputImage2); // view outputImage2 +// +// outputImage2 = textureFlattening(src,mask,[],[], 7 ) //providing value for only 3rd optional argument +// imshow(outputImage3); // view outputImage3 +// +// Examples +// +// src = imread("/images/color2.jpeg"); +// [row col] = size(src) +// mask = zeros(row,col) //creating a mask +// mask(100:140,100:150) =255 +// imshow(mask); view the mask +// outputImage = textureFlattening(src,mask) +// imshow(outputImage);//view the output +// +// Authors +// Rohan Gurve + + [lhs rhs]=argn(0); + if rhs>5 //max i/p arguments are 5 + error(msprintf(" Too many input arguments")); + elseif rhs<2 //min i/p arguments are 2 + error(msprintf("input arguments missing")); + end + + if lhs>1 + error(msprintf("Too many output arguments")); + end + + image_list1 = mattolist(src); + image_list2 = mattolist(mask); + + low_threshold = argindefault ( varargin , 1 , 30 );//default value is 30 + high_threshold = argindefault ( varargin , 2 , 120 );//default value is 120 + kernel_size = argindefault ( varargin , 3 , 3 );//default value is 3 + + + out = raw_textureFlattening(image_list1,image_list2,low_threshold,high_threshold, kernel_size); + + sz = size(out); + + for i=1:sz + output_image(:, :, i) = out(i) + end + +endfunction + + diff --git a/macros/watershed.sci b/macros/watershed.sci new file mode 100644 index 0000000..33186db --- /dev/null +++ b/macros/watershed.sci @@ -0,0 +1,70 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Tess Zacharias, Ashish Manatosh Barik , Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function[dstImg] = watershed(srcImg, varargin) +// This function returns a marker based segmented image for the given input image. +// This function returns a marker based segmented image for the given input image. +// +// Calling Sequence +// +// src = imread("image-location-for-src"); +// [dstImg] = watershed(srcImg) //uses distance transform to find the contours +// +// src = imread("image-location-for-src"); +// markerMat = roiFreeHand(src); //using roiFreeHand to roughly mark the contours manually by selecting the ROI +// [dstImg] = watershed(srcImg,markerMat) +// src = imread("image-location-for-src"); +// +// Parameters +// dstImg: output segmented image +// src: Input source image +// markerMat: a mask image with the the contours marked(region selected) +// +// Description +// The second calling sequence gives better results.Here the user has to manually select the region of interest using roiFreeHand. +// Go through the documentation of roiFreeHand to see how it works. +// +// Examples +// src= imread("/images/watershed2.jpg"); +// w2=watershed(src);// markers are created after performing distance transform by default +// imshow(w2); +// +// Examples +// src= imread("../images/watershed2.jpg"); +// mask=roiFreeHand(src); //creating markers - selecting each coin separately using the function roiFreeHand +// w2=watershed(src,mask); //retrieve the segmented image +// imshow(w2); +// +// Authors +// Tess Zacharias +// Ashish Manatosh Barik +// Rohan Gurve + + + srcMat = mattolist(srcImg) + + [lhs, rhs] = argn(0) + + select rhs + case 1 then + out = raw_watershed(srcMat) + case 2 then + markerMat = mattolist(varargin(1)) + out = raw_watershed(srcMat, markerMat) + end + + channels = size(out) + + for i = 1 : channels + dstImg(:,:,i) = out(i) + end + +endfunction diff --git a/macros/watershed.sci~ b/macros/watershed.sci~ new file mode 100644 index 0000000..33186db --- /dev/null +++ b/macros/watershed.sci~ @@ -0,0 +1,70 @@ +// Copyright (C) 2015 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Tess Zacharias, Ashish Manatosh Barik , Rohan Gurve +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +// +function[dstImg] = watershed(srcImg, varargin) +// This function returns a marker based segmented image for the given input image. +// This function returns a marker based segmented image for the given input image. +// +// Calling Sequence +// +// src = imread("image-location-for-src"); +// [dstImg] = watershed(srcImg) //uses distance transform to find the contours +// +// src = imread("image-location-for-src"); +// markerMat = roiFreeHand(src); //using roiFreeHand to roughly mark the contours manually by selecting the ROI +// [dstImg] = watershed(srcImg,markerMat) +// src = imread("image-location-for-src"); +// +// Parameters +// dstImg: output segmented image +// src: Input source image +// markerMat: a mask image with the the contours marked(region selected) +// +// Description +// The second calling sequence gives better results.Here the user has to manually select the region of interest using roiFreeHand. +// Go through the documentation of roiFreeHand to see how it works. +// +// Examples +// src= imread("/images/watershed2.jpg"); +// w2=watershed(src);// markers are created after performing distance transform by default +// imshow(w2); +// +// Examples +// src= imread("../images/watershed2.jpg"); +// mask=roiFreeHand(src); //creating markers - selecting each coin separately using the function roiFreeHand +// w2=watershed(src,mask); //retrieve the segmented image +// imshow(w2); +// +// Authors +// Tess Zacharias +// Ashish Manatosh Barik +// Rohan Gurve + + + srcMat = mattolist(srcImg) + + [lhs, rhs] = argn(0) + + select rhs + case 1 then + out = raw_watershed(srcMat) + case 2 then + markerMat = mattolist(varargin(1)) + out = raw_watershed(srcMat, markerMat) + end + + channels = size(out) + + for i = 1 : channels + dstImg(:,:,i) = out(i) + end + +endfunction diff --git a/sci_gateway/opencv_colorChange.cpp b/sci_gateway/opencv_colorChange.cpp new file mode 100644 index 0000000..6dd4c65 --- /dev/null +++ b/sci_gateway/opencv_colorChange.cpp @@ -0,0 +1,253 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + +/* Calling sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = colorChange(src, mask, red_mul, green_mul, blue_mul ) + +*/ + int opencv_colorChange(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double red_mul,green_mul,blue_mul; + char * funcName= "colorChange"; + //checking input argument + CheckInputArgument(pvApiCtx, 5, 5); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src,mask; + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return -1; + } + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + retrieveImage(mask, 2); + + + //size of mask should be same as that of src + if( (src.rows!=mask.rows) || (src.cols!=mask.cols) ) + { + Scierror(999, "%s: in input argument #%d - size of mask is not equal to size of source image ! Same size required !\n",funcName,2); + return -1; + + } + + + + if(mask.channels()==1) + { + //convert to 8 bit 1 channel + mask.convertTo(mask,CV_8UC1); + } + else if(mask.channels()==3) + { + //convert to 8 bit 3 channel + mask.convertTo(mask,CV_8UC3); + + } + else + { + Scierror(999, "%s: in input argument #%d requires either a 1 or 3 channel image !\n",funcName,2); + return -1; + + } + + + //for value of red_mul + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + if (isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &red_mul); + if(intErr) + { + return intErr; + } + + if( (red_mul <= 0.5) || (red_mul >= 2.5)) + { + Scierror(999, "%s: value of input argument #%d should be between 0.5 & 2.5 .\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName, 3); + return -1; + + } + + + + + + + //for value of green_mul + sciErr = getVarAddressFromPosition(pvApiCtx,4,&piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + if ( isDoubleType(pvApiCtx, piAddr4) ) + { + if(isScalar(pvApiCtx, piAddr4)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr4, &green_mul); + if(intErr) + { + return intErr; + } + + if( (green_mul <= 0.5) || (green_mul >= 2.5)) + { + Scierror(999, "%s: value of input argument #%d should be between 0.5 & 2.5 .\n",funcName,4); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 4); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,4); + return -1; + + } + + + + + //for value of blue_mul + sciErr = getVarAddressFromPosition(pvApiCtx,5,&piAddr5); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return 0; + } + if ( isDoubleType(pvApiCtx, piAddr5) ) + { + if(isScalar(pvApiCtx, piAddr5)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr5, &blue_mul); + if(intErr) + { + return intErr; + } + + if( (blue_mul <= 0.5) || (blue_mul >= 2.5)) + { + Scierror(999, "%s: value of input argument #%d should be between 0.5 & 2.5 .\n",funcName,5); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 5); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,5); + return -1; + + } + + + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + colorChange(src,mask,output_image,red_mul,green_mul,blue_mul); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_convert.cpp b/sci_gateway/opencv_convert.cpp new file mode 100644 index 0000000..9977707 --- /dev/null +++ b/sci_gateway/opencv_convert.cpp @@ -0,0 +1,158 @@ +/*************************************************** +Author : Rohan Gurve +**************************************************** + dst = convert(src,rtype,alpha,beta) +***************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + int opencv_convert(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr=0; + int iRows=0,iCols=0; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piLen = NULL; + char **rtype = NULL; + double alpha,beta; + int i; + int type; + + //checking input argument + CheckInputArgument(pvApiCtx, 4, 4); + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src; + retrieveImage(src,1); + + + //for type + sciErr = getVarAddressFromPosition(pvApiCtx,2, &piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + sciErr = getMatrixOfString(pvApiCtx, piAddr2, &iRows, &iCols, NULL, NULL); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + piLen = (int*)malloc(sizeof(int) * iRows * iCols); + //second call to retrieve length of each string + sciErr = getMatrixOfString(pvApiCtx, piAddr2, &iRows, &iCols, piLen, NULL); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + rtype = (char**)malloc(sizeof(char*) * iRows * iCols); + for(i = 0 ; i < iRows * iCols ; i++) + { + rtype[i] = (char*)malloc(sizeof(char) * (piLen[i] + 1));//+ 1 for null termination + } + //third call to retrieve data + sciErr = getMatrixOfString(pvApiCtx, piAddr2, &iRows, &iCols, piLen, rtype); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + + //for value of alpha + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + intErr = getScalarDouble(pvApiCtx, piAddr3, &alpha); + if(intErr) + return intErr; + + + //for value of beta + sciErr = getVarAddressFromPosition(pvApiCtx,4,&piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + intErr = getScalarDouble(pvApiCtx, piAddr4 ,&beta); + if(intErr) + return intErr; + + + + + if(strcmp(rtype[0], "CV_8U") == 0) + type = CV_8U; + else if(strcmp(rtype[0], "CV_8S") == 0) + type = CV_8S; + else if(strcmp(rtype[0], "CV_16U") == 0) + type = CV_16U; + else if(strcmp(rtype[0], "CV_16S") == 0) + type = CV_16S; + else if(strcmp(rtype[0], "CV_32S") == 0) + type = CV_32S; + else if(strcmp(rtype[0], "CV_64F") == 0) + type = CV_64F; + + else + { + Scierror(999, "%s: Invalid image type\n"); + return -1; + } + + + try + { + src.convertTo(src,type,alpha,beta); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + string tempstring = type2str(src.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,src,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_detailEnhance.cpp b/sci_gateway/opencv_detailEnhance.cpp new file mode 100644 index 0000000..e9f3e97 --- /dev/null +++ b/sci_gateway/opencv_detailEnhance.cpp @@ -0,0 +1,178 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + /* + Calling Sequence + src = imread("image-location-for-src"); + outputImage = detailEnhance(src,sigma_s,sigma_r) + + */ + + int opencv_detailEnhance(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double sigma_s,sigma_r; + double temp_flag; + int flag; + char * funcName= "detailEnhance"; + //checking input argument + CheckInputArgument(pvApiCtx, 3, 3); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src; + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return -1; + } + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + //for value of sigma_s + sciErr = getVarAddressFromPosition(pvApiCtx,2,&piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + if (isDoubleType(pvApiCtx, piAddr2) ) + { + if(isScalar(pvApiCtx, piAddr2)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr2, &sigma_s); + if(intErr) + { + return intErr; + } + + if( (sigma_s <= 0) || (sigma_s >= 200)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 200 .\n",funcName,2); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 2); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,2); + return -1; + + } + + + //for value of sigma_r + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + if ( isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &sigma_r); + if(intErr) + { + return intErr; + } + + if( (sigma_r <= 0) || (sigma_r >= 1)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 1 !\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,3); + return -1; + + } + + + + + + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + detailEnhance(src,output_image,sigma_s,sigma_r); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_edgePreservingFilter.cpp b/sci_gateway/opencv_edgePreservingFilter.cpp new file mode 100644 index 0000000..40d88b1 --- /dev/null +++ b/sci_gateway/opencv_edgePreservingFilter.cpp @@ -0,0 +1,223 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + /*Calling Sequence + + src = imread("image-location-for-src"); + outputImage = edgePreservingFilter(src,flag,sigma_s,sigma_r) + */ + + int opencv_edgePreservingFilter(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double sigma_s,sigma_r; + double temp_flag; + int flag; + char * funcName= "edgePreservingFilter"; + //checking input argument + CheckInputArgument(pvApiCtx, 4, 4); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src; + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return -1; + } + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + //for flag + sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + if (isDoubleType(pvApiCtx, piAddr2) ) + { + if(isScalar(pvApiCtx, piAddr2)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr2, &temp_flag); + if(intErr) + { + return intErr; + } + flag = int(temp_flag); + + if( !((flag == 1) || (flag ==2))) + { + Scierror(999, "%s: value of input argument #%d should be 1 or 2 .\n",funcName,2); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 2); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar int expected.\n", funcName, 2); + return -1; + + } + + + //for value of sigma_s + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + if (isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &sigma_s); + if(intErr) + { + return intErr; + } + + if( (sigma_s <= 0) || (sigma_s >= 200)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 200 .\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName, 3); + return -1; + + } + + + + + + + //for value of sigma_r + sciErr = getVarAddressFromPosition(pvApiCtx,4,&piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + if ( isDoubleType(pvApiCtx, piAddr4) ) + { + if(isScalar(pvApiCtx, piAddr4)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr4, &sigma_r); + if(intErr) + { + return intErr; + } + + if( (sigma_r <= 0) || (sigma_r >= 1)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 1 !\n",funcName,4); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 4); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,4); + return -1; + + } + + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + edgePreservingFilter(src,output_image,flag,sigma_s,sigma_r); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_getDepth.cpp b/sci_gateway/opencv_getDepth.cpp new file mode 100644 index 0000000..834a9ca --- /dev/null +++ b/sci_gateway/opencv_getDepth.cpp @@ -0,0 +1,108 @@ +/*************************************************** +Author : Rohan Gurve +**************************************************** + depth = getDepth(src) +***************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + int opencv_getDepth(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr=0; + + char **postData = NULL; + int i; + int size; + int iRows = 1; + int iCols = 1; + char * depth; + //checking input argument + CheckInputArgument(pvApiCtx, 1, 1); + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src; + retrieveImage(src,1); + + postData= (char**)malloc(sizeof(char*) * (iRows*iCols)); + + try + { + switch(src.depth()) + { + case CV_8U : depth= "CV_8U"; + postData[0] = depth; + break; + + + case CV_8S : depth = "CV_8S"; + postData[0] = depth; + break; + + case CV_16U : depth = "CV_16U"; + postData[0] = depth; + break; + + case CV_16S : depth = "CV_16S"; + postData[0] = depth; + + break; + + case CV_32S : depth = "CV_32S"; + postData[0] = depth; + break; + + //scialb dosen't support CV_32F - it would be treated as CV_64F + + case CV_64F : depth = "CV_64F"; + + postData[0] = depth; + + break; + + } + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + /* Create the stringmatrix as return of the function */ + sciErr = createMatrixOfString(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iRows,iCols, postData); + free(postData); // Data have been copied into Scilab memory + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_getStructuringElement.cpp b/sci_gateway/opencv_getStructuringElement.cpp new file mode 100644 index 0000000..8f451d6 --- /dev/null +++ b/sci_gateway/opencv_getStructuringElement.cpp @@ -0,0 +1,158 @@ +/************************************************* +Author: Sukul Bagai +**************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + int opencv_getStructuringElement(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr=0; + int iRows=0,iCols=0; + int *piLen = NULL; + int *piAddr1 = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k,type; + char **gettype = NULL; + double cols,rows,anchorX,anchorY; + + //checking input argument + CheckInputArgument(pvApiCtx, 5, 5); + CheckOutputArgument(pvApiCtx, 1, 1) ; + + sciErr = getVarAddressFromPosition(pvApiCtx,1,&piAddr1); + //checking for error if any + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + sciErr = getMatrixOfString(pvApiCtx, piAddr1, &iRows, &iCols, NULL, NULL); + piLen = (int*)malloc(sizeof(int) * iRows * iCols); + //second call to retrieve length of each string of first argument + sciErr = getMatrixOfString(pvApiCtx, piAddr1, &iRows, &iCols, piLen, NULL); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + gettype= (char**)malloc(sizeof(char*) * iRows * iCols); + for(i = 0 ; i < iRows * iCols ; i++) + gettype[i] = (char*)malloc(sizeof(char) * (piLen[i] + 1));//+ 1 for null termination + //third call to retrieve data of each string of first argument + sciErr = getMatrixOfString(pvApiCtx, piAddr1, &iRows, &iCols, piLen, gettype); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + if(strcmp("MORPH_RECT",gettype[0])==0) + type=MORPH_RECT; + else if(strcmp("MORPH_ELLIPSE",gettype[0])==0) + type=MORPH_ELLIPSE; + else if(strcmp("MORPH_CROSS",gettype[0])==0) + type=MORPH_CROSS; + + //for cols + sciErr = getVarAddressFromPosition(pvApiCtx,2,&piAddr2); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + intErr = getScalarDouble(pvApiCtx, piAddr2 ,&cols); + if(intErr) + return intErr; + + //for rows + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + intErr = getScalarDouble(pvApiCtx, piAddr3, &rows); + if(intErr) + return intErr; + + //for anchorX + sciErr = getVarAddressFromPosition(pvApiCtx,4,&piAddr4); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + intErr = getScalarDouble(pvApiCtx, piAddr4 ,&anchorX); + if(intErr) + return intErr; + + //for anchorY + sciErr = getVarAddressFromPosition(pvApiCtx,5,&piAddr5); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + intErr = getScalarDouble(pvApiCtx, piAddr5 ,&anchorY); + if(intErr) + return intErr; + + Mat temp; + + try + { + temp = getStructuringElement(type,Size(rows,cols),Point(anchorX,anchorY)); + + } + catch(Exception& e) + { + const char* err = e.what(); + sciprint("%s", err); + return -1; + } + double *m = (double *)malloc(temp.rows*temp.cols*sizeof(double)); + for(i=0;i(i, j); + *(m + i*temp.cols + j) = intensity; + } + } + + sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, temp.rows, temp.cols, m); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + + } + +} diff --git a/sci_gateway/opencv_illuminationChange.cpp b/sci_gateway/opencv_illuminationChange.cpp new file mode 100644 index 0000000..2c9f6d4 --- /dev/null +++ b/sci_gateway/opencv_illuminationChange.cpp @@ -0,0 +1,215 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + +/**Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = illuminationChange(src, mask, alpha, beta ) +**/ + + int opencv_illuminationChange(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double alpha,beta; + char * funcName= "illuminationChange"; + //checking input argument + CheckInputArgument(pvApiCtx, 4, 4); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src,mask; + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return -1; + } + + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + retrieveImage(mask, 2); + + + //size of mask should be same as that of src + if( (src.rows!=mask.rows) || (src.cols!=mask.cols) ) + { + Scierror(999, "%s: in input argument #%d - size of mask is not equal to size of source image ! Same size required !\n",funcName,2); + return -1; + + } + + + + + if(mask.channels()==1) + { + //convert to 8 bit 1 channel + mask.convertTo(mask,CV_8UC1); + } + else if(mask.channels()==3) + { + //convert to 8 bit 3 channel + mask.convertTo(mask,CV_8UC3); + + } + else + { + Scierror(999, "%s: in input argument #%d requires either a 1 or 3 channel image !\n",funcName,2); + return -1; + + } + + + + + + + + //for value of apha + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + if (isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &alpha); + if(intErr) + { + return intErr; + } + + if( (alpha < 0) || (alpha > 2)) + { + Scierror(999, "%s: input argument #%d can only accept values in the range from 0 to 2 .\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName, 3); + return -1; + + } + + + + + + + //for value of beta + sciErr = getVarAddressFromPosition(pvApiCtx,4,&piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + if ( isDoubleType(pvApiCtx, piAddr4) ) + { + if(isScalar(pvApiCtx, piAddr4)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr4, &beta); + if(intErr) + { + return intErr; + } + + if( (beta < 0) || (beta > 2)) + { + Scierror(999, "%s: input argument #%d can only accept values in the range from 0 to 2 .\n",funcName,4); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 4); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,4); + return -1; + + } + + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + illuminationChange(src,mask,output_image,alpha,beta); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + } + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_minAreaRect.cpp b/sci_gateway/opencv_minAreaRect.cpp new file mode 100644 index 0000000..a36326d --- /dev/null +++ b/sci_gateway/opencv_minAreaRect.cpp @@ -0,0 +1,240 @@ +/* ==================================================================== */ +/* Author :Priyanka Hiranandani NIT Surat, Rohan Gurve GCET, Anand */ +/* ==================================================================== */ +/* Syntax : return_rotatedrect=minAreaRect(x,y); +/* ==================================================================== */ +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +#include +using namespace cv; +using namespace std; + extern "C" + { + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + int opencv_minAreaRect(char *fname, unsigned long fname_len) + { + // Error management variable + SciErr sciErr; + //variable info + int x_iRows = 0; + int x_iCols = 0; + + int y_iRows = 0; + int y_iCols = 0; + + + int piRows = 0; + int piCols = 0; + int* piAddr = NULL; + int* piAddr2 = NULL; + //int* piAddr3 = NULL; + //int* piAddr4 = NULL; + // int* piAddr5 = NULL; + //int* piAddr6 = NULL; + int* piAddrNew = NULL; + int* piLen = NULL; + double* x = NULL; + double* y = NULL; + + double * rectCoordinates_x = NULL; //to store x coordinates of vertices of the min area rect + double * rectCoordinates_y = NULL; //to store y coordinates of vertices of the min area rect + + rectCoordinates_x = (double*)malloc(sizeof(double) * 1 * 4); + rectCoordinates_y = (double*)malloc(sizeof(double) * 1 * 4); + double sigmaSpace; + int error; + ////checking input argument + CheckInputArgument(pvApiCtx,2,2); + //checking output argument + CheckOutputArgument(pvApiCtx,7,7); + + + //for first argument + // get Address of first input + sciErr = getVarAddressFromPosition(pvApiCtx,1,&piAddr); + //check for any error + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + /* Check that the first input argument is a real matrix (and not complex) */ + if ( !isDoubleType(pvApiCtx, piAddr) || isVarComplex(pvApiCtx, piAddr) ) + { + Scierror(999, "%s: Wrong type for input argument #%d: A real matrix expected.\n", fname, 1); + return -1; + } + + //retrieve input array an dstore it in x + sciErr = getMatrixOfDouble(pvApiCtx, piAddr, &x_iRows, &x_iCols,&x); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + //for second argument + // get Address of second input + sciErr = getVarAddressFromPosition(pvApiCtx,2,&piAddr2); + //check for any error + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + /* Check that the second input argument is a real matrix (and not complex) */ + if ( !isDoubleType(pvApiCtx, piAddr2) || isVarComplex(pvApiCtx, piAddr2) ) + { + Scierror(999, "%s: Wrong type for input argument #%d: A real matrix expected.\n", fname, 2); + return -1; + } + + //retrieve input array and store it in y + sciErr = getMatrixOfDouble(pvApiCtx, piAddr2, &y_iRows, &y_iCols,&y); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + //error check + + if(!(x_iRows==1 && y_iRows==1) ) + { + Scierror(999, "%s","x and y matrix expects a dimension of 1xn"); + return -1; + + } + + if( !(x_iCols==y_iCols)) + { + Scierror(999, "%s","size of x matrix is not equal to y matrix"); + return -1; + + } + + + int k=0; + vector contours; + for(int i=0;i +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +#include +using namespace cv; +using namespace std; + extern "C" + { + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + // #include "../common.h" + int opencv_minEnclosingCircle(char *fname, unsigned long fname_len) + { + // Error management variable + SciErr sciErr; + //variable info + int x_iRows = 0; + int x_iCols = 0; + + int y_iRows = 0; + int y_iCols = 0; + + int piRows = 0; + int piCols = 0; + int* piAddr = NULL; + int* piAddr2 = NULL; + int* piAddrNew = NULL; + int* piLen = NULL; + double *pstData = NULL; + char **pstData2 = NULL; + //for storing the input matrix + double* x = NULL; + double* y = NULL; + + Point2f center; + float radius; + int error; + //checking input argument + CheckInputArgument(pvApiCtx,2,2); + //checking output argument + CheckOutputArgument(pvApiCtx,3,3); + //for first argument + // get Address of first input + sciErr = getVarAddressFromPosition(pvApiCtx,1,&piAddr); + //check for any error + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + /* Check that the first input argument is a real matrix (and not complex) */ + if ( !isDoubleType(pvApiCtx, piAddr) || isVarComplex(pvApiCtx, piAddr) ) + { + Scierror(999, "%s: Wrong type for input argument #%d: A real matrix expected.\n", fname, 1); + return -1; + } + + //retrieve input array an dstore it in x + sciErr = getMatrixOfDouble(pvApiCtx, piAddr, &x_iRows, &x_iCols,&x); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + //for second argument + // get Address of second input + sciErr = getVarAddressFromPosition(pvApiCtx,2,&piAddr2); + //check for any error + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + /* Check that the second input argument is a real matrix (and not complex) */ + if ( !isDoubleType(pvApiCtx, piAddr2) || isVarComplex(pvApiCtx, piAddr2) ) + { + Scierror(999, "%s: Wrong type for input argument #%d: A real matrix expected.\n", fname, 2); + return -1; + } + + //retrieve input array and store it in y + sciErr = getMatrixOfDouble(pvApiCtx, piAddr2, &y_iRows, &y_iCols,&y); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + //error check + + if(!(x_iRows==1 && y_iRows==1) ) + { + Scierror(999, "%s","x and y matrix expects a dimension of 1xn"); + return -1; + + } + + if( !(x_iCols==y_iCols)) + { + Scierror(999, "%s","size of x matrix is not equal to y matrix"); + return -1; + + } + + + int k=0; + vector contours; + for(int i=0;i +#include +#include +#include +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include "sciprint.h" + + /* Calling sequence: imgSet = imageSet(location) //or imgSet = imageSet(location,'recursive') + [set1,set2,...,setN] = partition(imgSet,groupSizes) + [set1,set2,...,setN] = partition(imgSet,groupPercentages) + [set1,set2,...,setN] = partition(___,method) */ + + double findSum(double *array, int n) + { + double sum = 0; + for(int iter=0; iter0 && groupSizesOrPercentages[0]<1) + { + sizeProvided = 0; + } + else if(groupSizesOrPercentages[0]>=1) + { + sizeProvided = 1; + } + else + { + Scierror(999, "Error: Please enter positive values groupSizes argument.\n"); + return -1; + } + for(int iter = 0; iter=1)) + { + Scierror(999, "Error: Please enter proper groupPercentages argument. Values should lie between 0-1.\n"); + return -1; + } + groupSizesOrPercentagesSum+=groupSizesOrPercentages[iter]; + } + if(!sizeProvided && groupSizesOrPercentagesSum>1) + { + Scierror(999, "Error: Sum of values of groupPercentages should be less than or equal to one. \n"); + return -1; + } + if(sizeProvided) + { + for(int iter = 0; iter= 0.5) + { + temp = (int)temp + 1; + } + else + { + temp = (int)temp; + } + } + if(tempCount[iter2]==0) + { + countOutput[iter][iter2] = 0; + } + else if(tempCount[iter2]-temp<=0) + { + countOutput[iter][iter2] = tempCount[iter2]; + tempCount[iter2] = 0; + zeroWarning = 1; + } + else + { + if(temp==0) + { + zeroWarning = 1; + } + countOutput[iter][iter2] = temp; + tempCount[iter2] -= temp; + } + } + } + countOutput[partitionCount-1] = (int*) malloc(sizeof(int) * descriptionCount); + for(int iter = 0; iter +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + /* Calling Sequence + + src = imread("image-location-for-src"); + [outputImage_1 outputImage_2 ] = pencilSketch(src,sigma_s,sigma_r,shade_factor) + + */ + + int opencv_pencilSketch(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double sigma_s,sigma_r,shade_factor; + char * funcName= "pencilSketch"; + //checking input argument + CheckInputArgument(pvApiCtx, 4, 4); + //checking output argument + CheckOutputArgument(pvApiCtx, 2, 2) ; + + Mat src; + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return -1; + } + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + + + //for value of sigma_s + sciErr = getVarAddressFromPosition(pvApiCtx,2,&piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + if (isDoubleType(pvApiCtx, piAddr2) ) + { + if(isScalar(pvApiCtx, piAddr2)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr2, &sigma_s); + if(intErr) + { + return intErr; + } + + if( (sigma_s <= 0) || (sigma_s >= 200)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 200 .\n",funcName,2); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 2); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName, 2); + return -1; + + } + + + + + + + //for value of sigma_r + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + if ( isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &sigma_r); + if(intErr) + { + return intErr; + } + + if( (sigma_r <= 0) || (sigma_r >= 1)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 1 !\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,3); + return -1; + + } + + + //for shade_factor + sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + if (isDoubleType(pvApiCtx, piAddr4) ) + { + if(isScalar(pvApiCtx, piAddr4)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr4, &shade_factor); + if(intErr) + { + return intErr; + } + + + if( (shade_factor <= 0 ) || (shade_factor >= 0.1)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 0.1\n",funcName,4); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 4); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar int expected.\n", funcName, 4); + return -1; + + } + + + + + Mat output_image_1_channel(src.rows,src.cols,CV_8UC1); + Mat output_image_3_channel(src.rows,src.cols,CV_8UC3); + + try + { + pencilSketch(src,output_image_1_channel,output_image_3_channel,sigma_s,sigma_r,shade_factor); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + //We need to return 2 images : the first is a 1 channel image and the second is a 3 channel image + + //for the 1 channel image + string tempstring = type2str(output_image_1_channel.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image_1_channel,1); + free(checker); + //now for the 3 channel image + string tempstring2 = type2str(output_image_3_channel.type()); + checker = (char *)malloc(tempstring2.size() + 1); + memcpy(checker, tempstring2.c_str(), tempstring2.size() + 1); + returnImage(checker,output_image_3_channel,2); + free(checker); + + + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + AssignOutputVariable(pvApiCtx, 2) = nbInputArgument(pvApiCtx) + 2; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_pyramid.cpp b/sci_gateway/opencv_pyramid.cpp new file mode 100644 index 0000000..cf63040 --- /dev/null +++ b/sci_gateway/opencv_pyramid.cpp @@ -0,0 +1,157 @@ +/******************************************************** +Author: Diwakar Bhardwaj +********************************************************* +Usage :return_image=pyramid(input_image,'direction',level) +********************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +using namespace cv; +using namespace std; + +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include "sciprint.h" + #include "../common.h" + + int opencv_pyramid(char *fname, unsigned long fname_len) + { + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piLen = NULL; + char **direction = NULL; + int i,j,k=0,l=0; + double alpha, beta,x,n; + + + //checking input argument + CheckInputArgument(pvApiCtx, 3, 3); + CheckOutputArgument(pvApiCtx, 1, 1) ; + Mat image,new_image; + + retrieveImage(image, 1); + + sciErr = getVarAddressFromPosition(pvApiCtx,2, &piAddr2); + + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + sciErr = getMatrixOfString(pvApiCtx, piAddr2, &iRows, &iCols, NULL, NULL); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + piLen = (int*)malloc(sizeof(int) * iRows * iCols); + //second call to retrieve length of each string + sciErr = getMatrixOfString(pvApiCtx, piAddr2, &iRows, &iCols, piLen, NULL); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + direction = (char**)malloc(sizeof(char*) * iRows * iCols); + for(i = 0 ; i < iRows * iCols ; i++) + { + direction[i] = (char*)malloc(sizeof(char) * (piLen[i] + 1));//+ 1 for null termination + } + //third call to retrieve data + sciErr = getMatrixOfString(pvApiCtx, piAddr2, &iRows, &iCols, piLen, direction); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + intErr = getScalarDouble(pvApiCtx, piAddr3 ,&x); + if(intErr) + return intErr; + n=x; + k=image.rows; + l=image.cols; + while(n--) + { + + //if expand operation is performed + if(strcmp(direction[0], "expand") == 0) + { + + try + { + pyrUp(image, new_image, Size( image.cols*2, image.rows*2 )); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + //Size size((k*2)-1,(l*2)-1); + //resize(image,new_image,size); + } + + + //if reduced operation is performed + else if(strcmp(direction[0], "reduce") == 0) + { + try + { + pyrDown( image, new_image, Size( image.cols/2, image.rows/2 )); + + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + } + image=new_image; + + } + + + + + int temp = nbInputArgument(pvApiCtx) + 1; + string tempstring = type2str(new_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,new_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} + + diff --git a/sci_gateway/opencv_regionFill.cpp b/sci_gateway/opencv_regionFill.cpp new file mode 100644 index 0000000..4e56d75 --- /dev/null +++ b/sci_gateway/opencv_regionFill.cpp @@ -0,0 +1,259 @@ +/******************************************************** +Author: Vinay Bhat,Rohan Gurve +******************************************************** +Usage: return_image = regionFill(input_image,inpaintRadius, column_list, row_list) + return_image = regionFill(input_image,inpaintRadius, mask) +Example: + im = regionFill(image, 3,[0 100 100 0], [0 0 100 100]) + im = regionFill(image, 1, mask) +********************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include "sciprint.h" + #include "../common.h" + + int opencv_regionFill(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRowsR=0,iColsR=0,iColsC=0,iRowsC=0; + int *piAddr = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + double *pstDataR = NULL; + double *pstDataC = NULL; + int i, number_of_points; + int lineType = 8; + double inpaintRadius; + int iRet; + + //checking input argument + CheckInputArgument(pvApiCtx, 3, 4); + CheckOutputArgument(pvApiCtx, 1, 1); + + // Get the input image from the Scilab environment + Mat image, mask, mask_orig, fin_image; + retrieveImage(image, 1); + + //get the inPaint radius + sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + iRet = getScalarDouble(pvApiCtx, piAddr2, &inpaintRadius); + if(iRet) + { + return iRet; + } + + if (nbInputArgument(pvApiCtx) == 3) + { + retrieveImage(mask_orig, 3); + + if(mask_orig.channels()==3) + { + try + { + mask_orig.convertTo(mask_orig,CV_8UC3); + cvtColor(mask_orig, mask_orig, CV_BGR2GRAY); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + } + else + { + try + { + mask_orig.convertTo(mask_orig,CV_8UC1); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + } + + + mask = mask_orig.clone(); + + } + else + { + // Get the address of 3rd argument, the column list + sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + // Get the address of the 4th argument, the row list + sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + // Get the column list in the form of a matrix + // No. of columns = No. of elements in the list + // No. of rows = 1 + sciErr = getMatrixOfDouble(pvApiCtx, piAddr3, &iRowsC, &iColsC, &pstDataC); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + if (iRowsC != 1) + { + + Scierror(999, "%s","Please enter a list of column coordinates.\n"); + return -1; + + } + + // Get the row list in the form of a matrix + // No. of columns = No. of elements in the list + // No. of rows = 1 + sciErr = getMatrixOfDouble(pvApiCtx, piAddr4, &iRowsR, &iColsR, &pstDataR); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + if (iRowsR != 1) + { + sciprint("Please enter a list of row coordinates.\n"); + return -1; + } + + if (iColsC != iColsR) + { + sciprint("Please ensure number of elements in both row and column lists are equal.\n"); + return -1; + } + + // Number of points is number of columns + number_of_points = iColsC; + + // Create the n points which define + // the polygon + Point points[1][number_of_points]; + + for (i = 0; i < number_of_points; i++) + { + if (pstDataR[i] < 0 || pstDataC[i] < 0) + { + sciprint("Coordinates cannot be negative.\n"); + return -1; + } + else + points[0][i] = Point(pstDataR[i], pstDataC[i]); + } + + const Point* ppt[1] = { points[0] }; + + int npt[] = { number_of_points }; + + // Create a new, black, blank image same size as of input + mask_orig = Mat::zeros(image.size(),CV_8UC3 ); + + // Call the fillPoly OpenCV function + // Fill the blank image in the polygon specified + // by the points + + + + try + { + fillPoly(mask_orig, ppt, npt, 1, Scalar(255, 255, 255), lineType); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + try + { + mask_orig.convertTo(mask_orig,CV_8UC3); + cvtColor(mask_orig, mask_orig, CV_BGR2GRAY); + // Binary Threshold + threshold(mask_orig,mask_orig, 0, 255, THRESH_BINARY); + + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + mask = mask_orig.clone(); + + } + + + try + { + image.convertTo(image,CV_8U);//convert image to 8 bit + inpaint(image, mask, fin_image, inpaintRadius, INPAINT_TELEA); + + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + string tempstring = type2str(fin_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker, fin_image, 1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_rgb2gray.cpp b/sci_gateway/opencv_rgb2gray.cpp new file mode 100644 index 0000000..1bdf4df --- /dev/null +++ b/sci_gateway/opencv_rgb2gray.cpp @@ -0,0 +1,82 @@ +/* ==================================================================== */ +/* Author :Priyanka Hiranandani NIT Surat, Rohan Gurve GCET,Anand */ +/* ==================================================================== */ +/* Syntax : output_image=rgb2gray(sourceimage) */ +/* ==================================================================== */ +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include "opencv2/imgproc/imgproc.hpp" //new header file for cvtColor function of opencv +#include +using namespace cv; +using namespace std; +extern "C" +{ +#include "api_scilab.h" +#include "Scierror.h" +#include "BOOL.h" +#include +#include +#include "../common.h" +#include +int opencv_rgb2gray(char *fname, unsigned long fname_len) +{ + + // Error management variable + SciErr sciErr; + //checking input argument + CheckInputArgument(pvApiCtx,1,1); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) + Mat img; + + Mat grayimg = Mat(img.rows,img.cols,CV_8UC1); + //calling function + retrieveImage(img,1); + + + + try + { + //converting to 8 bit 3 channel + img.convertTo(img,CV_8UC3); + + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + + try + { + cvtColor(img, grayimg, CV_BGR2GRAY ); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + string tempstring = type2str(grayimg.type()); + char* checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,grayimg,1); + free(checker); + + //returning output variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + ReturnArguments(pvApiCtx); + return 0; +} + +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_roiPoly.cpp b/sci_gateway/opencv_roiPoly.cpp new file mode 100644 index 0000000..991a96e --- /dev/null +++ b/sci_gateway/opencv_roiPoly.cpp @@ -0,0 +1,165 @@ + +/******************************************************** +Author: Vinay Bhat, Rohan Gurve +******************************************************** +Usage: return_image = roipoly(input_image, column_list, row_list) +Example: + im = roiPoly(image, [0 100 100 0], [0 0 100 100]) +********************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include "sciprint.h" + #include "../common.h" + + int opencv_roiPoly(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRowsR=0,iColsR=0,iColsC=0,iRowsC=0; + int *piAddr = NULL; + int *piAddr2 = NULL; + double *pstDataR = NULL; + double *pstDataC = NULL; + int i, number_of_points; + int lineType = 8; + + //checking input argument + CheckInputArgument(pvApiCtx, 3, 4); + CheckOutputArgument(pvApiCtx, 1, 1) ; + + // Get the input image from the Scilab environment + Mat image; + retrieveImage(image, 1); + + // Get the address of 2nd argument, the column list + sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddr); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + // Get the address of the 3rd agument, the row list + sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + // Get the column list in the form of a matrix + // No. of columns = No. of elements in the list + // No. of rows = 1 + sciErr = getMatrixOfDouble(pvApiCtx, piAddr, &iRowsC, &iColsC, &pstDataC); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + if (iRowsC != 1) + { + Scierror(999, "%s","Please enter a list of column coordinates.\n"); + return -1; + + } + + // Get the row list in the form of a matrix + // No. of columns = No. of elements in the list + // No. of rows = 1 + sciErr = getMatrixOfDouble(pvApiCtx, piAddr2, &iRowsR, &iColsR, &pstDataR); + if(sciErr.iErr) + { + printError(&sciErr, 0); + return 0; + } + + if (iRowsR != 1) + { + + Scierror(999, "%s","Please enter a list of row coordinates.\n"); + return -1; + + } + + if (iColsC != iColsR) + { + Scierror(999, "%s","Please ensure number of elements in both row and column lists are equal.\n"); + return -1; + + + } + + // Number of points is number of columns + number_of_points = iColsC; + + // Create the n points which define + // the polygon + Point points[1][number_of_points]; + + for (i = 0; i < number_of_points; i++) + { + if (pstDataR[i] < 0 || pstDataC[i] < 0) + { + Scierror(999, "%s","Coordinates cannot be negative.\n"); + return -1; + + } + else + points[0][i] = Point(pstDataR[i], pstDataC[i]); + } + + const Point* ppt[1] = { points[0] }; + + int npt[] = { number_of_points }; + + // Create a new, white, blank image same size as of input + Mat img = Mat::zeros(image.size(), image.type()); + + // Call the fillPoly OpenCV function + // Fill the blank image in the polygon specified + // by the points + + try + { + fillPoly(img, ppt, npt, 1, Scalar(255, 255, 255), lineType);; + + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + + string tempstring = type2str(img.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker, img, 1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_seamlessClone.cpp b/sci_gateway/opencv_seamlessClone.cpp new file mode 100644 index 0000000..8e65ff3 --- /dev/null +++ b/sci_gateway/opencv_seamlessClone.cpp @@ -0,0 +1,252 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + /*Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = seamlessClone(src,dst,mask, pointMatirx, flag) + + */ + + + int opencv_seamlessClone(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double * pointMatrix =NULL; + int m1,n1; + int flag; + + //for point + int x,y; + double alpha,beta,temp_flag; + char * funcName= "seamlessClone"; + //checking input argument + CheckInputArgument(pvApiCtx, 5, 5); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src,mask,dst; + //retrieveing src + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return 0; + } + + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + //retrieveing dst + retrieveImage(dst, 2); + + + + + if(dst.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,2); + return -1; + } + + + if(dst.rows < src.rows || dst.cols < src.cols) + { + Scierror(999, "%s: input argument #%d : size of destination image is less than size of source image! Size of destination image should be atleast equal to the size of source image! \n",funcName,2); + return -1; + } + + + + + //converting dst to 8 bit 3 channel + dst.convertTo(dst,CV_8UC3); + + //retrieveing mask + retrieveImage(mask, 3); + + //size of mask should be same as that of src + if( (src.rows!=mask.rows) || (src.cols!=mask.cols) ) + { + Scierror(999, "%s: in input argument #%d - size of mask is not equal to size of source image ! Same size required !\n",funcName,3); + return -1; + + } + + + + + + if(mask.channels()==1) + { + //convert to 8 bit 1 channel + mask.convertTo(mask,CV_8UC1); + } + else if(mask.channels()==3) + { + //convert to 8 bit 3 channel + mask.convertTo(mask,CV_8UC3); + + } + else + { + Scierror(999, "%s: in input argument #%d requires either a 1 or 3 channel image !\n",funcName,3); + return -1; + + } + + //for value of p + sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + /* Check that the 4th input argument is a real matrix (and not complex) */ + if ( !isDoubleType(pvApiCtx, piAddr4) || isVarComplex(pvApiCtx, piAddr4) ) + { + + + Scierror(999, "%s: Wrong type for input argument #%d: A real matrix expected.\n",funcName, 4); + return -1; + } + + /* get matrix */ + sciErr = getMatrixOfDouble(pvApiCtx, piAddr4, &m1, &n1, &pointMatrix); + if (sciErr.iErr) + { + sciprint("get matrix main"); + printError(&sciErr, 0); + return -1; + } + + if((m1!=1) || (n1!=2)) + { + Scierror(999, "%s: a 1x2 real matrix expcted for argument #%d .\n",funcName,4); + return -1; + } + + + Point p(pointMatrix[0],pointMatrix[1]); + + + + //for flag + sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddr5); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + if (isDoubleType(pvApiCtx, piAddr5) ) + { + if(isScalar(pvApiCtx, piAddr5)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr5, &temp_flag); + if(intErr) + { + return intErr; + } + flag = int(temp_flag); + + if( (flag < 1) || (flag > 3)) + { + Scierror(999, "%s: value of input argument #%d should be 1, 2 or 3 .\n",funcName,5); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 5); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar int expected.\n", funcName, 5); + return -1; + + } + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + switch(flag) + { + case 1:seamlessClone(src,dst,mask, p, output_image,NORMAL_CLONE); + break; + case 2:seamlessClone(src,dst,mask, p, output_image,MIXED_CLONE); + break; + case 3:seamlessClone(src,dst,mask, p, output_image,MONOCHROME_TRANSFER); + break; + + + } + + + } + + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_stylization.cpp b/sci_gateway/opencv_stylization.cpp new file mode 100644 index 0000000..c24defe --- /dev/null +++ b/sci_gateway/opencv_stylization.cpp @@ -0,0 +1,179 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + /* Calling Sequence + + src = imread("image-location-for-src"); + outputImage = stylization(src,sigma_s,sigma_r) + + */ + + int opencv_stylization(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double sigma_s,sigma_r; + double temp_flag; + int flag; + char * funcName= "stylization"; + //checking input argument + CheckInputArgument(pvApiCtx, 3, 3); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src; + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image .\n",funcName,1); + return -1; + } + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + //for value of sigma_s + sciErr = getVarAddressFromPosition(pvApiCtx,2,&piAddr2); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + if (isDoubleType(pvApiCtx, piAddr2) ) + { + if(isScalar(pvApiCtx, piAddr2)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr2, &sigma_s); + if(intErr) + { + return intErr; + } + + if( (sigma_s <= 0) || (sigma_s >= 200)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 200 .\n",funcName,2); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 2); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,2); + return -1; + + } + + + //for value of sigma_r + sciErr = getVarAddressFromPosition(pvApiCtx,3,&piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return 0; + } + if ( isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &sigma_r); + if(intErr) + { + return intErr; + } + + if( (sigma_r <= 0) || (sigma_r >= 1)) + { + Scierror(999, "%s: value of input argument #%d should be between 0 & 1 !\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar float expected.\n", funcName,3); + return -1; + + } + + + + + + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + stylization(src,output_image,sigma_s,sigma_r); + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_templateMatcher.cpp b/sci_gateway/opencv_templateMatcher.cpp new file mode 100644 index 0000000..a503f8b --- /dev/null +++ b/sci_gateway/opencv_templateMatcher.cpp @@ -0,0 +1,135 @@ +/******************************************************** +Author: Suraj Prakash,Rohan Gurve +[return_image,x,y] = templateMatcher(InputArray image, InputArray template_image) +********************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include +#include + +using namespace cv; +using namespace std; + +extern "C"{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + + int opencv_templateMatcher(char *fname, unsigned long fname_len){ + + /// Error management variable + SciErr sciErr; + + /// Variables + int i, j; + int error; + int iRows = 0; + int iCols = 0; + int *piLen = NULL; + int *piAddr = NULL; + + double minVal; double maxVal; Point minLoc; Point maxLoc; + Point matchLoc; + + /// checking input argument + CheckInputArgument(pvApiCtx, 2, 2); + CheckOutputArgument(pvApiCtx, 3, 3); + + Mat image, template_image; + retrieveImage(image, 1); + retrieveImage(template_image, 2); + + + + if(image.channels()!=1){ + Scierror(999,"argument %d requires a single channel image\n",1); + return 0; + } + + if(template_image.channels()!=1){ + Scierror(999,"argument %d requires a single channel image\n",2); + return 0; + } + + if(template_image.rows > image.rows or template_image.cols > image.cols){ + Scierror(999, "%s: Dimensions of template image is greater then image\n"); + return 0; + } + + //converting image to 8 bit + image.convertTo(image,CV_8UC1); + + //converting template_image to type of image + template_image.convertTo(template_image,CV_8UC1); + + + /// generated image is (W - w + 1) * (H - h + 1) and it must be 32 bit floating number with single channel + + Mat new_image(image.rows, image.cols,CV_32FC1); + + + try + { + + matchTemplate(image, template_image, new_image, CV_TM_SQDIFF); + normalize( new_image, new_image, 0, 1, NORM_MINMAX, -1, Mat() ); + /// Localizing the best match with minMaxLoc + minMaxLoc( new_image, &minVal, &maxVal, &minLoc, &maxLoc, Mat() ); + /// For SQDIFF the best matches are lower values + matchLoc = minLoc; + + + } + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return 0; + + } + + + + + + string tempstring = type2str(new_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker, new_image, 1); + free(checker); + + error=createScalarDouble(pvApiCtx,nbInputArgument(pvApiCtx)+2,matchLoc.x); + if(error!=0) + { + sciprint("error occurred"); + return 0; + } + error=createScalarDouble(pvApiCtx,nbInputArgument(pvApiCtx)+3,matchLoc.y); + if(error!=0) + { + sciprint("error occurred"); + return 0; + } + + + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + AssignOutputVariable(pvApiCtx, 2) = nbInputArgument(pvApiCtx) + 2; + AssignOutputVariable(pvApiCtx, 3) = nbInputArgument(pvApiCtx) + 3; + + + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_textureFlattening.cpp b/sci_gateway/opencv_textureFlattening.cpp new file mode 100644 index 0000000..d7db94f --- /dev/null +++ b/sci_gateway/opencv_textureFlattening.cpp @@ -0,0 +1,263 @@ +/******************************************************** + Author: Rohan Gurve +********************************************************/ + +#include +#include "opencv2/opencv.hpp" +#include "opencv2/photo.hpp" +#include + + +using namespace cv; +using namespace std; +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include + #include "../common.h" + +/* Calling Sequence + + src = imread("image-location-for-src"); + mask = roiFreeHand(src); //we can also use other function to create the mask + outputImage = textureFlattening(src,mask,low_threshold,high_threshold, kernel_size); +*/ + + int opencv_textureFlattening(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + int iRows=0,iCols=0; + int *piAddr = NULL; + int *piAddrNew = NULL; + int *piAddr2 = NULL; + int *piAddr3 = NULL; + int *piAddr4 = NULL; + int *piAddr5 = NULL; + int i,j,k; + double * pointMatrix =NULL; + int m1,n1; + int kernel_size; + + //for point + int x,y; + double low_threshold,high_threshold,temp_kernel_size; + char * funcName= "textureFlattening"; + //checking input argument + CheckInputArgument(pvApiCtx,5,5); + //checking output argument + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src,mask,dst; + //retrieveing src + retrieveImage(src, 1); + + if(src.channels()!=3) + { + Scierror(999, "%s: input argument #%d requires a 3 channel image.\n",funcName,1); + return -1; + } + + //converting src to 8 bit 3 channel + src.convertTo(src,CV_8UC3); + + //retrieveing mask + retrieveImage(mask, 2); + + //size of mask should be same as that of src + if( (src.rows!=mask.rows) || (src.cols!=mask.cols) ) + { + Scierror(999, "%s: in input argument #%d - size of mask is not equal to size of source image ! Same size required !\n",funcName,2); + return -1; + + } + + if(mask.channels()==1) + { + //convert to 8 bit 1 channel + mask.convertTo(mask,CV_8UC1); + } + else if(mask.channels()==3) + { + //convert to 8 bit 3 channel + mask.convertTo(mask,CV_8UC3); + + } + else + { + Scierror(999, "%s: in input argument #%d requires either a 1 or 3 channel image !\n",funcName,2); + return -1; + + } + + + // for low threshold + + sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddr3); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + if (isDoubleType(pvApiCtx, piAddr3) ) + { + if(isScalar(pvApiCtx, piAddr3)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr3, &low_threshold); + if(intErr) + { + return intErr; + } + + if( (low_threshold < 0) || (low_threshold > 100)) + { + Scierror(999, "%s: Out of range! value of input argument #%d should be from 0 to 100 .\n",funcName,3); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 3); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar double expected.\n", funcName,3); + return -1; + + } + + + + + //for high threshold + sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddr4); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + if (isDoubleType(pvApiCtx, piAddr4) ) + { + if(isScalar(pvApiCtx, piAddr4)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr4, &high_threshold); + if(intErr) + { + return intErr; + } + + if( (high_threshold < 100 || high_threshold > 255) ) + { + Scierror(999, "%s: Out of range! argument #%d should be greater than 100 and less than or equal to 255 .\n",funcName,4); + return -1; + + } + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 4); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar double expected.\n", funcName, 4); + return -1; + + } + + //for kernel_size + sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddr5); + if (sciErr.iErr) + { + printError(&sciErr, 0); + return -1; + } + + + + if (isDoubleType(pvApiCtx, piAddr5) ) + { + if(isScalar(pvApiCtx, piAddr5)) + { + + intErr = getScalarDouble(pvApiCtx, piAddr5, &temp_kernel_size); + if(intErr) + { + return intErr; + } + kernel_size = int(temp_kernel_size); + + if(! (kernel_size == 3 || kernel_size == 5 || kernel_size == 7)) + { + Scierror(999, "%s: For input argument #%d : size of kernel can only be 3, 5 or 7.\n",funcName,5); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar expected.\n", funcName, 5); + return -1; + + } + + } + else + { + Scierror(999, "%s: Wrong type for input argument #%d: A scalar int expected.\n", funcName, 5); + return -1; + + } + + Mat output_image(src.rows,src.cols,CV_8UC3); + + try + { + textureFlattening(src,mask,output_image,low_threshold,high_threshold, kernel_size); + } + + catch(Exception& e) + { + const char* err = e.what(); + Scierror(999, "%s",err); + return -1; + + } + + string tempstring = type2str(output_image.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,output_image,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + return 0; + + } +/* ==================================================================== */ +} diff --git a/sci_gateway/opencv_watershed.cpp b/sci_gateway/opencv_watershed.cpp new file mode 100644 index 0000000..54c2bda --- /dev/null +++ b/sci_gateway/opencv_watershed.cpp @@ -0,0 +1,160 @@ +/******************************************************** +Author: Tess Zacharias, Ashish Manatosh Barik , Rohan Gurve +********************************************************/ + +#include +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/opencv.hpp" +#include + +using namespace cv; +using namespace std; + +extern "C" +{ + #include "api_scilab.h" + #include "Scierror.h" + #include "BOOL.h" + #include + #include "sciprint.h" + #include "../common.h" + + int opencv_watershed(char *fname, unsigned long fname_len) + { + + SciErr sciErr; + int intErr = 0; + + int n= *getNbInputArgument(pvApiCtx); + + //checking input argument + CheckInputArgument(pvApiCtx, 1, 2); + CheckOutputArgument(pvApiCtx, 1, 1) ; + + Mat src, markerMask; + retrieveImage(src, 1); + + if(n == 2) + { + retrieveImage(markerMask, 2); + } + + + Mat srcGray, dist, dist_8u, dst; + + try + { + + // converting the input images to 8-bit and 1 channel images + src.convertTo(srcGray, CV_8U); + cvtColor(srcGray, srcGray, CV_BGR2GRAY); + + src.convertTo(src, CV_8U); + + // OpenCV functionalities + + if(n == 1) + { + + + threshold(srcGray, srcGray, 40, 255, CV_THRESH_BINARY); + + // Perform the distance transform algorithm + distanceTransform(srcGray, dist, CV_DIST_L2, 3); + + // Normalize the distance image for range = {0.0, 1.0} + // so we can visualize and threshold it + normalize(dist, dist, 0, 1., cv::NORM_MINMAX); + + // Threshold to obtain the peaks + // This will be the markers for the foreground objects + threshold(dist, dist, .5, 1., CV_THRESH_BINARY); + + // Create the CV_8U version of the distance image + // It is needed for cv::findContours() + dist.convertTo(dist_8u, CV_8U); + } + else if(n == 2) + { + + markerMask.convertTo(markerMask, CV_8U); + //cvtColor(markerMask, markerMask, CV_BGR2GRAY); + + dist_8u = markerMask.clone(); + + + threshold(dist_8u, dist_8u, 0, 255, CV_THRESH_BINARY); + + } + + + // Find total markers + vector > contours; + findContours(dist_8u, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); + int ncomp = contours.size(); + + // Create the marker image for the watershed algorithm + Mat markers = Mat::zeros(dist_8u.size(), CV_32SC1); + // Draw the foreground markers + for (int i = 0; i < ncomp; i++) + drawContours(markers, contours, i, Scalar::all(i+1), -1); + + // Draw the background marker + circle(markers, cv::Point(5,5), 3, CV_RGB(255,255,255), -1); + //imshow("markers", markers*10000); + // Perform the watershed algorithm + + watershed(src, markers); + // Generate random colors + vector colors; + + for (int i = 0; i < ncomp; i++) + { + int b = theRNG().uniform(0, 255); + int g = theRNG().uniform(0, 255); + int r = theRNG().uniform(0, 255); + + colors.push_back(Vec3b((uchar)b, (uchar)g, (uchar)r)); + } + + // Create the result image + dst = Mat::zeros(markers.size(), CV_8UC3); + // Fill labeled objects with random colors + for (int i = 0; i < markers.rows; i++) + { + for (int j = 0; j < markers.cols; j++) + { + int index = markers.at(i,j); + if (index > 0 && index <= ncomp) + dst.at(i,j) = colors[index-1]; + else + dst.at(i,j) = Vec3b(0,0,0); + } + } + + } + catch(Exception& e) + { + const char* err=e.what(); + Scierror(999, "%s", err); + } + + + string tempstring = type2str(dst.type()); + char *checker; + checker = (char *)malloc(tempstring.size() + 1); + memcpy(checker, tempstring.c_str(), tempstring.size() + 1); + returnImage(checker,dst,1); + free(checker); + + //Assigning the list as the Output Variable + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; + + //Returning the Output Variables as arguments to the Scilab environment + ReturnArguments(pvApiCtx); + + return 0; + + } +}