gpt4 book ai didi

c - 总结一个中心点周围的所有点?

转载 作者:行者123 更新时间:2023-11-30 15:53:02 26 4
gpt4 key购买 nike

为了平滑图像,我需要总结给定中心像素周围的所有像素,然后构建平均值,这基本上就是我的新像素。现在有两个问题:

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
};

最佳答案

这看起来是对的。为了缩短它,我想你可以使用 for 循环。

int min = -1;
int max = 1;
int average = 0;
int amount = 0;
for(int k = min; k <= max; k++){
for(int l = min; l <= max; l++){
amount++;
average += image1->image[i+k][j+l];
}
}
average /= amount;
image2->image[i][j] = average;

它看起来仍然很困惑,但这样你就可以通过改变最小和最大变量来改变平滑的“半径”。

关于c - 总结一个中心点周围的所有点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13905033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com