图像模糊处理

描述:

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

  1. 四周最外侧的像素点灰度值不变;

  2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入

第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。

样例输入:

4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100

样例输出:

100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100

C语言

#include <stdio.h>

int main(void)
{
    int n, m;
    scanf("%d %d", &n, &m);
    double new_arr[n][m];
    int old_arr[n][m];
    int i, j;
    for (i=0; i<n; i++){
        for (j=0; j<m; j++){
            scanf("%d", &old_arr[i][j]);
        }
    }
    
    int sum;
    for (i=0; i<n; i++){
        for (j=0; j<m; j++){
            // 最边缘的灰度不处理
            if (i==0 || i==n-1 || j==0 || j==m-1){
                new_arr[i][j] = old_arr[i][j];
            } else {
                sum = old_arr[i-1][j] + old_arr[i+1][j] + old_arr[i][j-1] + old_arr[i][j+1] + old_arr[i][j];
                new_arr[i][j] = sum/5.0;
            }
        }
    }
    
    for (i=0; i<n; i++){
        for (j=0; j<m; j++){
            printf("%.0f%c", new_arr[i][j], j==m-1?'\n':' ');   // 浮点数会自动的四舍五入
        }
    }
    
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Dali Dali 是一个Android端提供图像模糊的开源库,内部是使用RenderScript实现,内置了多种...
    CoderMiner阅读 5,016评论 0 10
  • 耳边现在依然会想起8岁那年最常听到的一句话:阿菊,你想你妈妈吗?想。怎么会不想。就这么一个母亲,怎能不想,...
    一只家雀阅读 3,751评论 0 3
  • 凌晨12:30,对于我的生物钟而言,离睡觉还有将近一个小时。夜班未眠,正好瞎想。 很久没有认真的去写一些东西,心里...
    七月秋讲故事阅读 2,498评论 0 0
  • 四个收获 一是学会如何去制造“段子” 二是学会给孩子最好的自己 三是确定备学情中学生分层的原因,板书设计的重要性 ...
    文轩雨蔚阅读 1,535评论 4 0

友情链接更多精彩内容