c - 图像的像素化
问题描述
你能告诉我这个像素化图像的功能是否正确吗?图像为 .ppm 格式。
Image* pixelisation_image(Image* I) {
int i, j, x, y;
int h = I->h, w = I->w;
int n;
int moyenne_r = 0;
int moyenne_g = 0;
int moyenne_b = 0;
int tmpi, tmpj;
printf("Enter your size of pixel : ");
scanf("%d", &n);
for(i = 0; i < (h/n)-1; i++){
for(j = 0; j < (w/n)-1; j++){
for(x = 0; x < n; x++){
for(y = 0; y < n; y++){
tmpi = n*i + x;
tmpj = n*j + y;
moyenne_r += I->tab[tmpi][tmpj].r;
moyenne_v += I->tab[tmpi][tmpj].g;
moyenne_b += I->tab[tmpi][tmpj].b;
}
}
for(x = 0; x < n; x++){
for(y = 0; y < n; y++){
tmpi = n*i + x;
tmpj = n*j + y;
I->tab[tmpi][tmpj].r = moyenne_r/9;
I->tab[tmpi][tmpj].v = moyenne_g/9;
I->tab[tmpi][tmpj].b = moyenne_b/9;
}
}
moyenne_r = 0;
moyenne_g = 0;
moyenne_b = 0;
}
}
return I;
}
使用 Image 的这个结构:
typedef struct structPixel {
unsigned char r,g,b;
}Pixel;
typdef struct structImage {
int w, h;
int max;
int magic_number;
Pixel** tab;
} Image;
其中 n 是最终“像素块”的大小。
然后我需要放置一个低通和高通滤波器。我清楚地知道我需要制作 3x3 的蒙版,将其调整为 5x5,然后求和 4 次。但我尝试再尝试,我做不到。你能给我一些反思和行动的途径吗?
Globaly,我不确定这是处理 .ppm 图像的最佳方法,你能给我一些建议吗?
非常感谢你。
解决方案
您正在无缘无故地创建一个额外的循环,您可以这样重写它:
Image* pixelisation_image(Image* I) {
int i, j, x, y;
int h = I->h, w = I->w;
int n;
int tmpi, tmpj;
printf("Enter your size of pixel : ");
scanf("%d", &n);
for(i = 0; i < (h/n)-1; i++){
for(j = 0; j < (w/n)-1; j++){
int moyenne_r = 0;
int moyenne_g = 0;
int moyenne_b = 0;
for(x = 0; x < n; x++){
for(y = 0; y < n; y++){
tmpi = n*i + x;
tmpj = n*j + y;
moyenne_r += I->tab[tmpi][tmpj].r;
moyenne_v += I->tab[tmpi][tmpj].g;
moyenne_b += I->tab[tmpi][tmpj].b;
I->tab[tmpi][tmpj].r = moyenne_r/9;
I->tab[tmpi][tmpj].v = moyenne_g/9;
I->tab[tmpi][tmpj].b = moyenne_b/9;
}
}
}
}
return I;
}
推荐阅读
- angular - Angular 7:无法绑定到“指令”,因为它不是“元素”的已知属性
- asp.net-core-webapi - 无法将类型 dto 转换为类型 Ienumerable
- c++ - 如何使用两个 for 循环执行独特的随机播放
- javascript - 尝试将 html 表下载到具有下拉列表的一列的文本文件中
- ruby-on-rails - 如何缩小 Barby 条码以适合 PDF 页面大小
- oauth - 如何刷新 oauth2client.client 的 id_token?
- python - 尝试打开图像时,Tkinter“无法打开”pyimage1“:没有这样的文件或目录”错误
- postgresql - pgAdmin 找不到记录,而 SQLAlchemy 确实
- r - 试图找到一个向量的最小值
- excel - 如何遍历 Microsoft Project 任务的所有属性?