前面介绍的三种边界检测算子:Roberts算子、Prewitt算子、Sobel算子,都属于一螗徇吼笊维算子。因此,唁昼囫缍这些算子一般是成对出现的,分别代表互相垂直的方向上的两个算子。不过,还有一些别的一维边界检测算子。用这些一维算子检测图像边界,一般需要经过三个步骤:用Gauss算子对图片进行平滑处理(Gauss算子是二维算子,用来减少噪点的影响);在图片的梯度方向上,对图片进行非极大值抑制处理;对上一步的结果,进行双阈值处理。
工具/原料
电脑
python
方法/步骤
1、给出一张RGB图片,本文要用不同的一维边界检测算子,来检测这张图片。
2、严格按照上面的步骤,用Prewitt算子检测img:img=Prewitt(坡纠课柩img,5)其中,右边的参数5表示用5阶Gauss算子处理图片,参数img是给定的彩色图片。
3、用Sobel算子检测边界:img=Sobel(img,5,5)其中,前面的5表示用5阶Gauss算子,后面的5表示使用5阶Sobel算子。
4、使用7阶Sobel算子。img=Sobel(img,5,7)
5、给出如下算子:k=np.array([[1,-2,1]]*3)那么,使用这个算子检测边界:img=Edge(img,5,k)
6、如果使用算子:k=np.array([[0,0,0],[1,-2,1],[0,0,0]])
7、检测到的边界图如下。