1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| void AreaOperator::compute(Image & out, const Image& in)
{
if(out.getNumComponents() != in.getNumComponents())
throw IllegalArgument("AreaOperator::compute");
LocalAreaOperator& localAreaOp = getLocalAreaOperator();
int leftpadding = getLeftPadding();
int rightpadding = getRightPadding();
int toppadding = getTopPadding();
int bottompadding = getBottomPadding();
int hauteur = in.getHeight();
int largeur = in.getWidth();
out.resize(largeur - (rightpadding + leftpadding), hauteur - (toppadding+bottompadding));
for(int canal=0; canal< in.getNumComponents(); canal++)
for(int j = toppadding; j< hauteur - bottompadding; j++)
{
for(int i = leftpadding; i< largeur - rightpadding; i++)
{
/*localAreaOp n'a pas besoin de faire de test des bornes
car on est assuré par cette méthode que c'est appelé dans les bornes
*/
out.setPixel(i - leftpadding, j - toppadding,
canal, localAreaOp.computeLocalArea(in, i,j, canal));
}
}
} |