Kirsch算子边缘检测
- Kirsch算子原理
类似于Sobel算子,也利用图像中某点的梯度幅值作为像素的灰度值,Sobel算子计算出某点两个方向的梯度值,Gx、Gy;但Kirsch算子 利用8个卷积模板计算出了某点8个方向的梯度幅值和方向,并以最大的卷积值作为该点的灰度值。
对每个像素点都用 这8个模板进行进行卷积(注意,每个卷积值都应取绝对值),在利用 max{ temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7} 求出该点的最大卷积值。
- 算法实现
import cv2
import numpy as np
from matplotlib import pyplot as plt
#计算Kirsch 边沿检测算子
#定义Kirsch 卷积模板
m1 = np.array([[5, 5, 5],[-3,0,-3],[-3,-3,-3]])
m2 = np.array([[-3, 5,5],[-3,0,5],[-3,-3,-3]])
m3 = np.array([[-3,-3,5],[-3,0,5],[-3,-3,5]])
m4 = np.array([[-3,-3,-3],[-3,0,5],[-3,5,5]])
m5 = np.array([[-3, -3, -3],[-3,0,-3],[5,5,5]])
m6 = np.array([[-3, -