package extractors.hog;


/**
 * This interface provides a methods for computing a gradient field.
 * 
 */
public interface GradientFieldGenerator {

	/**
	 * Computes a gradient field as 3D {@link Gradient} array from a given distance field.
	 * 
	 * @param field
	 * @return
	 */
	public Gradient[][][] generateGradientField(double[][][] field);

	/**
	 * Returns the size of the x-dimension of the gradient field depending on the
	 * {@link DistanceFieldGenerator} used to produce the distance field given to the generateGradientField
	 * method.
	 * 
	 * @param dfg
	 * @return
	 */
	public int getResx(DistanceFieldGenerator dfg);

	/**
	 * Returns the size of the y-dimension of the gradient field depending on the
	 * {@link DistanceFieldGenerator} used to produce the distance field given to the generateGradientField
	 * method.
	 * 
	 * @param dfg
	 * @return
	 */
	public int getResy(DistanceFieldGenerator dfg);

	/**
	 * Returns the size of the z-dimension of the gradient field depending on the
	 * {@link DistanceFieldGenerator} used to produce the distance field given to the generateGradientField
	 * method.
	 * 
	 * @param dfg
	 * @return
	 */
	public int getResz(DistanceFieldGenerator dfg);

}