'**SUMMARY**
Smoothes an image, typically used to reduce image noise and reduce detail.
The optional parameter is window.
see : http://en.wikipedia.org/wiki/Gaussian_blur
**Parameters**
* *window* - should be in the form a tuple (win_x,win_y). Where win_x and win_y should be positive and odd.
- By default it is set to 3x3, i.e window = (3x3).
* *sigmaX* - Gaussian kernel standard deviation in X direction.
* *sigmaY* - Gaussian kernel standard deviation in Y direction.
* *grayscale* - If true, the effect is applied on grayscale images.
**NOTE**
For OpenCV versions <= 2.3.0
-- this acts as Convience function derived from the :py:meth:`smooth` method. Which internally calls cv.Smooth
For OpenCV versions higher than 2.3.0. i.e >= 2.3.0
-- cv.GaussianBlur function is called'

def gaussianBlur(self, window='', sigmaX=0, sigmaY=0, grayscale=False):

    try:
        import cv2
        ver = cv2.__version__
        new_version = False
        if (not ver.startswith('$Rev:')):
            if (int(ver.replace('.', '0')) >= 20300):
                new_version = True
    except:
        new_version = False
        pass
    if is_tuple(window):
        (win_x, win_y) = window
        if ((win_x >= 0) and (win_y >= 0) and ((win_x % 2) == 1) and ((win_y % 2) == 1)):
            pass
        else:
            logger.warning('The    aperture    (win_x,win_y)    must    be    odd    number    and    greater    than    0.')
            return None
    elif is_number(window):
        window = (window, window)
    else:
        window = (3, 3)
    if (not new_version):
        grayscale_ = grayscale
        return self.smooth(algorithm_name='blur', aperture=window, grayscale=grayscale_)
    else:
        image_gauss = cv2.GaussianBlur(self.getNumpyCv2(), window, sigmaX, sigmaY=sigmaY)
        if grayscale:
            return Image(image_gauss, colorSpace=ColorSpace.GRAY, cv2image=True)
        else:
            return Image(image_gauss, colorSpace=self._colorSpace, cv2image=True)
