我最近写了一个非常基本的边缘检测算法,它适用于一个字符数组。该程序旨在检测数组上单个特定值的 blob 的边缘,并通过简单地查看数组元素的左、右、上和下并检查其中一个值是否与它的值不同来工作目前在看。目标不是产生一条数学线,而是一组有序的点,代表一个描述的闭环边缘。
该算法工作得非常好,除了我的数据包含一点噪音,因此会随机产生不应该有边缘的边缘。这反过来又对我以后的一些其他程序造成了严重破坏。
数据包含两种类型的噪声。第一种类型相当稀疏且有些随机。第二种是 x=y 轴上的半连续直线。我知道第一种噪音的来源,它是数据的一个特征,我对此无能为力。至于第二种类型,我知道这是我的程序的错导致它......虽然我不知道究竟是什么导致了它。
我的问题是:我应该如何完全消除噪音?
我知道正确的数据具有始终相邻的点,并且非常紧凑且有序(没有间隙)并且是闭环或多环。第一类噪声通常是稀疏和随机的,可以通过检查是否有任何边缘紧邻噪声点也被视为边缘来轻松处理。如果不是,那么这个点就是最明显的噪音,应该被删除。
然而,第二种类型的噪声,即我们有一条关于 x=y 的半连续线会带来更多问题。这条线有时对于随机长度是连续的(最长的是它在我的整个数组中连续穿过一半)。它甚至有可能与实际边缘相交。
关于如何做到这一点的任何想法?