最近4个小时以来,我一直坚持哈佛大学“计算机科学概论”第4个问题中的模糊功能,而我仍然不知道自己在做什么错。
void blur(int height, int width, RGBTRIPLE image[height][width])
{
RGBTRIPLE copy[height][width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
copy[i][j] = image[i][j];
}
}
int sumRed=0,sumGreen=0,sumBlue=0;
for(int i=0;i<height;i++)
{
for(int j=0;j<width;j++)
{
if(i==0 && j==0)
{
for(int k=i;k<=i+1;k++)
{
for(int l=j;j<=j+1;j++)
{
sumRed+=image[k][l].rgbtRed;
sumGreen+=image[k][l].rgbtGreen;
sumBlue+=image[k][l].rgbtBlue;
}
}
copy[i][j].rgbtRed=sumRed/4;
copy[i][j].rgbtGreen=sumGreen/4;
copy[i][j].rgbtBlue=sumBlue/4;
}
else if(i>0 && j==0)
{
for(int k=i-1;k<=i+1;k++)
{
for(int l=j;j<=j+1;j++)
{
sumRed+=image[k][l].rgbtRed;
sumGreen+=image[k][l].rgbtGreen;
sumBlue+=image[k][l].rgbtBlue;
}
}
copy[i][j].rgbtRed=sumRed/6;
copy[i][j].rgbtGreen=sumGreen/6;
copy[i][j].rgbtBlue=sumBlue/6;
}
else if(i==0 && j>0)
{
for(int k=i;k<=i+1;k++)
{
for(int l=j-1;j<=j+1;j++)
{
sumRed+=image[k][l].rgbtRed;
sumGreen+=image[k][l].rgbtGreen;
sumBlue+=image[k][l].rgbtBlue;
}
}
copy[i][j].rgbtRed=sumRed/6;
copy[i][j].rgbtGreen=sumGreen/6;
copy[i][j].rgbtBlue=sumBlue/6;
}
else if(i>0 && j>0)
{
for(int k=i-1;k<=i+1;k++)
{
for(int l=j-1;j<=j+1;j++)
{
sumRed+=image[k][l].rgbtRed;
sumGreen+=image[k][l].rgbtGreen;
sumBlue+=image[k][l].rgbtBlue;
}
}
copy[i][j].rgbtRed=sumRed/9;
copy[i][j].rgbtGreen=sumGreen/9;
copy[i][j].rgbtBlue=sumBlue/9;
}
}
}
for(int i=0;i<height;i++)
{
for(int j=0;j<width;j++)
{
image[i][j].rgbtRed=copy[i][j].rgbtRed;
image[i][j].rgbtGreen=copy[i][j].rgbtGreen;
image[i][j].rgbtBlue=copy[i][j].rgbtBlue;
}
}
return;
}