SP16018 MCU20E - Edge Detection
题目描述
IONU 卫星成像公司通过游程编码(RLE)来记录和存储超大图像。你的任务是编写一个程序,读取这些已经压缩的图像,进行边缘检测,并输出一个新的压缩图像,其中只显示检测到的边缘。
一种简单的边缘检测方法是:对每个输出像素,计算它与输入图像中所有相邻像素差值的绝对值,并取其中最大值作为该像素的值。例如,考虑下图中的输入图像:

在输出图像中,左上角像素的值是 |15-15|, |15-100| 和 |15-100| 之间的最大值,即 85。而第 4 行,第 2 列的像素值是 |175-100|, |175-100|, |175-100|, |175-175|, |175-25|, |175-175|, |175-175| 和 |175-25| 中的最大值,即 150。
图像中像素总数在 2 到 $10^9$ 之间。所有图像都通过游程编码来表示,也即是一系列由像素值(0-255)和对应长度(1-$10^9$)组成的对。输入图像最多有 1,000 对这样的值对,并且相邻的值对不会有相同的像素值。图像每行的像素数量是固定的。
输入数据包含一个或多个图像的信息。每幅图像的信息以它每行的像素宽度作为开始,接着是一系列 RLE 对,每行一个。在读到 "0 0" 时,表示该图像数据结束。当图像的宽度为 0 时,表示没有更多的图像需要处理。示例输入中的第一个图像描述了一个 5x7 的输入图像。
输出是对每幅图像进行边缘检测后的结果,格式和输入相同,只是结果可能包含超过 1,000 个 RLE 对。
**注意:** 尝试对每一个像素逐一进行输出计算的简单粗暴方法,可能会因为时间或空间限制而失败。
### 样例输入
```
7
15 4
100 15
25 2
175 2
25 5
175 2
25 5
0 0
10
35 500000000
200 500000000
0 0
3
255 1
10 1
255 2
10 1
255 2
10 1
255 1
0 0
0
```
### 样例输出
```
7
85 5
0 2
85 5
75 10
150 2
75 3
0 2
150 2
0 4
0 0
10
0 499999990
165 20
0 499999990
0 0
3
245 9
0 0
0
```
输入格式
- 每幅图像首先给出一行,表示每行的像素宽度。
- 接下来是若干行,每行包含两个整数,分别为像素值和连续像素的长度。
- 用 "0 0" 结束一幅图像的数据。
- 当图像宽度为 0 时,表示输入结束。
输出格式
对于每幅输入图像,输出经过边缘检测处理后的图像。输出格式与输入格式一致,但结果可能包含超过 1,000 个 RLE 对。
说明/提示
- 每行像素宽度:2 ≤ W ≤ $10^9$
- 图像中像素总数:2 ≤ N ≤ $10^9$
- 每幅图像最多包含 1,000 个 RLE 对
- 像素值:0 ≤ V ≤ 255
- 像素连续长度:1 ≤ L ≤ $10^9$
**本翻译由 AI 自动生成**