Latest version of my source.
Code:
void filter()
{
int rsum = 0;
int gsum = 0;
int bsum = 0;
int ksum = 0;
Pixel p;
bmp = new Bitmap(bitmap.getHeight(), bitmap.getWidth()); // Dynamically createas an empty Bitmap
int filter[3][3] = {{0,-1,0}, {-1,5,-1}, {0,-1,0}}; // The sharpen filter
for (int x = 0; x < bitmap.getHeight(); x++)
{
for (int y = 0; y < bitmap.getWidth(); y++)
{
for (int row = -1; row < 1; row++)
{
for (int col = -1; col < 1; col++)
{
if ((x + row) >= 0 && (x + row) < bmp->getHeight())
{
if ((y + col) >= 0 && (y + col) < bmp->getWidth())
{
p = bitmap.getCopyOfPixel(x, y);
rsum += filter[row + 1][col + 1] * p.r; // Red
gsum += filter[row + 1][col + 1] * p.g; // Green
bsum += filter[row + 1][col + 1] * p.b; // Blue
ksum += filter[row + 1][col + 1];
}
}
}
}
// To avoid devision by zero
if (ksum == 0)
{
p.r = rsum;
p.g = gsum;
p.b = bsum;
}
else
{
p.r = rsum / ksum;
p.g = gsum / ksum;
p.b = bsum / ksum;
}
// Resets the value
rsum = 0;
gsum = 0;
bsum = 0;
ksum = 0;
bmp->setPixel(x, y, p); // Inserts the pixel
}
}
}
It doesn't matter where I reset the sum values it either goes rubbish or just black. Even tried with different numbers in the matrix filter but still nothing.