public double[][] Convolve(double[][] image, double[][] kernel){
		
		// Initialize the image to return
		
		double[][] result = new double[image.length][image[0].length];
		
		// Iterate over the image
		
		for(int y = 0; y < result.length; y++){
			for(int x = 0; x < result[0].length; x++){
				
				// Initialize the value of the image
				
				result[y][x] = 0.0;
				
				// Iterate over the kernel
				
				for(int kernel_y = 0; kernel_y < kernel.length; kernel_y++){
					for(int kernel_x = 0; kernel_x < kernel[kernel_y].length; kernel_x++){
						result[y][x] += image[(y + kernel_y-(kernel.length)/2 + result.length) % result.length][(x + kernel_x-(kernel[kernel_y].length)/2  + result[kernel_y].length) % result[kernel_y].length] * kernel[kernel_y][kernel_x] / 256;
					}
				}
				
			}
		}
		
		return result;
	}