Bitmap^ AplicarMascara(Bitmap ^Imagen, Array^ Mascara, int Tamanio){
Bitmap ^ImagenFiltrada=gcnew Bitmap (Imagen->Width, Imagen->Height);
int IncX, IncY, X, Y;
int TamanioNxN=Tamanio*Tamanio;
double Sumatorio;
Color color;
// Aplicamos la máscara para cada uno de los pixels de la imagen
for(int i=0; i<Imagen->Width; i++){
for (int j=0; j<Imagen->Height; j++){
IncY=Tamanio/2;
Sumatorio=0;
// Recorremos los valores de la máscara para aplicarlos a la imagen
for (int k=0; k<Tamanio; k++){
Y=j+IncY;
IncX=Tamanio/2;
for (int q=0; q<Tamanio; q++){
X=i+IncX;
if ((X>=0&&X<Imagen->Width) && (Y>=0&&Y<Imagen->Height))
Sumatorio=Sumatorio + Mascara->GetValue(Tamanio/2+IncX, Tamanio/2+IncY)) * Imagen->GetPixel(X,Y).R;
IncX--;
}
IncY--;
}
// El valor del pixel será el valor del sumatorio obtenido
color=Color::FromArgb(Sumatorio, Sumatorio, Sumatorio);
ImagenFiltrada->SetPixel(i, j, color);
}
}
return ImagenFiltrada;
}