Rectangle.java
package ac.essex.ooechs.imaging.commons.texture;
import ac.essex.ooechs.imaging.commons.StatisticsSolver;
import ac.essex.ooechs.imaging.commons.PixelLoader;
import ac.essex.ooechs.imaging.commons.fast.FastStatistics;
/**
*
* <p>
* Gets image intensity statistics about a Rectangular region on an image
* </p>
*
* <p/>
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version,
* provided that any use properly credits the author.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details at http://www.gnu.org
* </p>
*
* @author Olly Oechsle, University of Essex, Date: 07-Dec-2007
* @version 1.0
*/
public class Rectangle implements AbstractShape {
protected int width, height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
public FastStatistics getStatistics(PixelLoader image, int x, int y) {
FastStatistics solver = new FastStatistics();
for (int dy = 0; dy < height; dy++) {
for (int dx = 0; dx < width; dx++) {
try {
solver.addData(image.getGreyValue(x + dx, y + dy));
} catch (ArrayIndexOutOfBoundsException e) {
throw new RuntimeException("Array Index out of bounds: " + (x + dx) + "," + (y + dy));
}
}
}
return solver;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
}