画像をスムージングするために、特定の中央のピクセルの周りのすべてのピクセルを要約してから、平均を作成する必要があります。これは、基本的には新しいピクセルです。現在、2つの問題があります。
1)それらを要約する良い方法は何ですか?と
2)コーナーピクセルを回避するにはどうすればよいですか?
これは私がこれまでにしたことですが、それは良いことではないと思います。
for(i = 0; i < image1->nx; i++)
{
for(j = 0; j < image1->ny; j++)
{
if(i == 0 || j == 0 || i == image1->nx - 1 || j == image1->ny - 1)
{
image2->image[i][j] = image1->image[i][j];
}
else
{
int average = 0;
average += image1->image[i][j];
average += image1->image[i+1][j];
average += image1->image[i][j+1];
average += image1->image[i+1][j+1];
average += image1->image[i-1][j];
average += image1->image[i-1][j+1];
average += image1->image[i-1][j-1];
average += image1->image[i][j-1];
average += image1->image[i+1][j-1];
average /= 9;
image2->image[i][j] = average;
}
}
}
Cの構造体は次のようなものです。
struct pgm_image
{
int nx; // row number
int ny; // cell number
unsigned char image[N1][N2]; // image information
};