func VerticalSobelGray(gray *image.Gray, border padding.Border) (*image.Gray, error) {
	return convolution.ConvolveGray(gray, &verticalKernel, image.Point{X: 1, Y: 1}, border)
}
VerticalSobelGray applies the vertical Sobel operator (vertical kernel) to a grayscale image. The result
of the Sobel operator is a 2-dimensional map of the gradient at each point.
More information on the Sobel operator: https://en.wikipedia.org/wiki/Sobel_operator
package edgedetection
import (
	"github.com/Ernyoke/Imger/blend"
	"github.com/Ernyoke/Imger/convolution"
	"github.com/Ernyoke/Imger/grayscale"
	"github.com/Ernyoke/Imger/padding"
	"image"
)
var horizontalKernel = convolution.Kernel{Content: [][]float64{
	{-1, 0, 1},
	{-2, 0, 2},
	{-1, 0, 1},
}, Width: 3, Height: 3}
var verticalKernel = convolution.Kernel{Content: [][]float64{
	{-1, -2, -1},
	{0, 0, 0},
	{1, 2, 1},
}, Width: 3, Height: 3}
func HorizontalSobelGray(gray *image.Gray, border padding.Border) (*image.Gray, error) {
	return convolution.ConvolveGray(gray, &horizontalKernel, image.Point{X: 1, Y: 1}, border)
}