-->
当前位置:首页 > 题库 > 正文内容

编程题:平滑滤镜(image_blur)

Luz3年前 (2022-04-08)题库940
图片如果噪点较多、或对比过于强烈、或细节锐利,可以尝试用平滑滤镜把图片变得更柔和。

方法是把图片中的每个像素,替换成该像素的正方形邻域内像素的平均值。设滤镜的半径为F,那么正方形邻域的边长就是2F+1。这里的挑战在于:边长一千的图片就像素多达百万。当滤镜半径较大比如100时,每个像素约有一万个邻点要考虑。直接计算需要数百亿次计算,会TLE的。所以要想法减少重复计算。

- 目的:练习二维数组、多重循环、滑动窗口的思路。
- 图片为灰度图像,像素值的范围是[0, 65535],可用uint16_t保存。
- 对邻域内像素值时用整数除法即可。
- 需要估算邻域内像素和的最大可能值,选择计算过程中的数据类型。

#### 输入规格

- 有多组数据输入,处理到EOF为止。
- 每组开头是参数行,格式为NAME R C F,表示*名称、宽度、高度、滤镜半径*。
- 之后有R行、每行有C个像素值。
- R、C的范围[0, 1024]。F的范围:[0, 128]。

#### 输出规格

- 对每组数据:
- 原样输出参数行:NAME R C F。
- 之后有R行、每行有C个像素值(十进制整数)。

#### 样例输入

in
demo1 3 4 1
0 1 2 3
4 5 6 7
8 9 10 11


#### 样例输出

out
demo1 3 4 1
2 3 4 4
4 5 6 6
6 7 8 8


#### 样例解释

- 像素[0][0]:(0 + 1 + 4 + 5) / 4 = 2,边缘像素的邻域不完整。
- 像素[0][1]:(0 + 1 + 2 + 4 + 5 + 6) / 6 = 3






答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。