Sobel算子的Python范例程序
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('lena.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_sobel_x = cv2.Sobel(img, -1, 1, 0, ksize=3)
img_sobel_y = cv2.Sobel(img, -1, 0, 1, ksize=3)
img_sobel_xy = cv2.Sobel(img, -1, 1, 1, ksize=3)
titles = ['Original', 'Sobel X','Sobel Y', 'Sobel XY']
images = [img, img_sobel_x, img_sobel_y, img_sobel_xy]
for i in range(4):
plt.subplot(2, 2, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
运行结果
算子与CNN中的卷积核:
CNN中的卷积核即是与之相对应的概念。不同是,前者需要算法开发者手动设计(例如:Sobel算子由Irwin Sobel设计),而后者通过在大数据中训练自动选取,而且通常情况下CNN网络中的卷积核数量远超过手动设计的卷积核,又称滤波器核。
CNN中的卷积计算,可以理解为:算子(卷积核、滤波器核)在图像上沿指定维度滑动,同时将矢量点积值作为对应输出矩阵元素的值。
由上可见:传统视觉中的算子、滤波器、滤波器核与深度学习卷积神经网络中的卷积、卷积核就对应同一起来了。
网友评论