算法题每日一练 --- 第 4 天:图像模糊问题
一、问题描述
小蓝有一张黑白图像,由 n×m 个像素组成,其中从上到下共 n 行,每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。
现在,小蓝准备对图像进行模糊操作,操作的方法为:
对于每个像素,将以它为中心 3×3 区域内的所有像素(可能是 9 个像素或少于 9 个像素)求和后除以这个范围内的像素个数(取下整),得到的值就是模糊后的结果。
请注意每个像素都要用原图中的灰度值计算求和。
二、题目要求
考察
复制代码
三、问题分析
使用二维数组存储要输入的像素,对于每一个像素而言,将它 3×3 区域内的所有像素值全部相加再除以总数。
这里有一个问题,寻找的时候可能会越界。比如一个第一行的像素值,上面没有值,第一列的像素值,左边没有值。只有中间的才满足 3×3。所以,在判断条件的时候要加一个是否超出范围。
复制代码
像素值/像素个数的数值,题目要求向下取整,直接定义 int 型相除就行。
对于平常的取整问题,可以调用 #include<math.h>里面的 floor(向下取整)和 ceil(向上取整)。
四、编码实现
复制代码
五、输出结果
测试用例:给定一个三行四列的数组,输出正确的结果
版权声明: 本文为 InfoQ 作者【知心宝贝】的原创文章。
原文链接:【http://xie.infoq.cn/article/479bcb8b0d8444044ba28521c】。文章转载请联系作者。
评论