POJ1009 Edge Detection 解题报告

这篇博客主要介绍了如何解决POJ1009问题,涉及图像的RLE编码存储、边缘像素值计算以及解题过程中的速度优化技巧。通过将RLE编码转换为index分界值简化查找,利用邻域标志位计算边缘值,并针对多行、多列像素相同的场景进行优化,提高算法效率。
摘要由CSDN通过智能技术生成

http://poj.org/problem?id=1009

主要解决三问题

1. 图像的存储

输入采用的是RLE编码,存储也采用类似的方式,但要做点变换。比如输入

7
15 4
100 15
25 2
175 2
25 5
175 2
25 5
0 0

经过变换,得到

7

15 4

100 19

25 21

175 23

25 28

175 30

25 35

其实就是把run length修改成了index分界值。这样做的好处是:要知道第n个像素的值,直接跟其中index分界值进行比较即可,简化了查找过程。

2. 每个像素edge值的计算

按照题目的要求,每个像素edge值是该像素与8邻域的最大差值。可以采用这样的处理方法:为8领域设置标志位,初始化均为true,表示邻域存在,然后根据像素的index判断它是否在图像的边界上,比如左上角的像素,其左边和上边的领域都不存在,根据不同的情况,对邻域的标志位进行更新。最后,只考虑标志位为true的领域,取它的值与当前像素值求差值,进而确定edge值。

3. 提速的技巧

逐像素进行处理一定会超时的,这里至少有两个提速的技巧。一是多行像素相同的情况,这时将有一连串值为0的edge;二是多列像素布局相同的情况,这时将有一连串相同edge值。下面是上述两种情况的例子

2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值