code: func Blur(dst draw.Image, src image.Image, opt *BlurOptions) error {
  	if dst == nil {
  		return errors.New("graphics: dst is nil")
  	}
  	if src == nil {
  		return errors.New("graphics: src is nil")
  	}
  
  	sd := DefaultStdDev
  	size := 0
  
  	if opt != nil {
  		sd = opt.StdDev
  		size = opt.Size
  	}
  
  	if size < 1 {
  		size = int(math.Ceil(sd * 6))
  	}
  
  	kernel := make([]float64, 2*size+1)
  	for i := 0; i <= size; i++ {
  		x := float64(i) / sd
  		x = math.Pow(1/math.SqrtE, x*x)
  		kernel[size-i] = x
  		kernel[size+i] = x
  	}
  
  	// Normalize the weights to sum to 1.0.
  	kSum := 0.0
  	for _, k := range kernel {
  		kSum += k
  	}
  	for i, k := range kernel {
  		kernel[i] = k / kSum
  	}
  
  	return convolve.Convolve(dst, src, &convolve.SeparableKernel{
  		X: kernel,
  		Y: kernel,
  	})
  }
docs: // Blur produces a blurred version of the image, using a Gaussian blur.