docs: public static <In extends ImageBase<In>, Out extends ImageBase<Out>, K extends Kernel1D>
  	void horizontal(K kernel, In input, Out output ) {
  		switch (input.getImageType().getFamily()) {
  			case GRAY: {
  				if (input instanceof GrayF32) {
  					ConvolveImageNoBorder.horizontal((Kernel1D_F32) kernel, (GrayF32) input, (GrayF32) output);
  				} else if (input instanceof GrayU8) {
  					if (GrayI16.class.isAssignableFrom(output.getClass()))
  						ConvolveImageNoBorder.horizontal((Kernel1D_S32) kernel, (GrayU8) input, (GrayI16) output);
  					else
  						ConvolveImageNoBorder.horizontal((Kernel1D_S32) kernel, (GrayU8) input, (GrayS32) output);
  				} else if (input instanceof GrayS16) {
  					ConvolveImageNoBorder.horizontal((Kernel1D_S32) kernel, (GrayS16) input, (GrayI16) output);
  				} else {
  					throw new IllegalArgumentException("Unknown image type: " + input.getClass().getName());
  				}
  			}break;
  
  			case INTERLEAVED: {
  				if (output instanceof InterleavedF32) {
  					ConvolveImageNoBorder.horizontal((Kernel1D_F32) kernel, (InterleavedF32) input, (InterleavedF32) output);
  				} else if (input instanceof InterleavedU8) {
  					if (InterleavedI16.class.isAssignableFrom(output.getClass()))
  						ConvolveImageNoBorder.horizontal((Kernel1D_S32) kernel, (InterleavedU8) input, (InterleavedI16) output);
  					else
  						ConvolveImageNoBorder.horizontal((Kernel1D_S32) kernel, (InterleavedU8) input, (InterleavedS32) output);
  				} else if (input instanceof InterleavedS16) {
  					ConvolveImageNoBorder.horizontal((Kernel1D_S32) kernel, (InterleavedS16) input, (InterleavedI16) output);
  				} else {
  					throw new IllegalArgumentException("Unknown image type: " + input.getClass().getName());
  				}
  			}break;
  
  			case PLANAR:{
  				Planar inp = (Planar)input;
  				Planar outp = (Planar)output;
  
  				for (int i = 0; i < inp.getNumBands(); i++) {
  					horizontal(kernel, inp.getBand(i), outp.getBand(i));
  				}
  			}break;
  
  			default: throw new IllegalArgumentException("Unknown image family");
  		}
  	}