图像处理中的去除离群点算法(半径滤波、邻域滤波)

算法思想

假设有如下图片,如何去除其中的离群点呢?
1,遍历集合{W}中的所有点,以某点p为圆心,以 r 为半径画圆,统计圆内有多少个点(不包含点p自身),假设有N个。
2,若N小于某个阈值T,则将该点p从集合{W}中剔除;若若N大于等于阈值T,则保留该点p。
3,重复执行步骤1、2。
时间复杂度为O(N^2)
图像处理中的去除离群点算法(半径滤波、邻域滤波)_第1张图片

显然,比如若取半径 r 为3倍的BC点间距,取阈值T=1时,A点作为离群点被剔除;取阈值T=2时,BC两点也被剔除;取阈值T=3时,DEF三点也被剔除;

点与点之间的间距一般采用欧氏距离即可,也可以根据实际需要灵活变通,比如曼哈顿城市距离等等。

代码实现

	/*
		* @作用:根据最近邻思想。若某点在指定半径内的邻点数量大于某阈值,则认为此点正常,否则作为离群点剔除.
		* @ allPts:所有的点(候选点,可能

你可能感兴趣的:(OpenCV,离散点,去除离群点,去除离散点)