计算机视觉 (七) -- Canny

Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:
好的检测- 算法能够尽可能多地标识出图像中的实际边缘。
好的定位- 标识出的边缘要尽可能与实际图像中的实际边缘尽可能接近。
最小响应- 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。
为了满足这些要求 Canny 使用了变分法,这是一种寻找满足特定功能的函数的方法。最优检测使用四个指数函数项的和表示,但是它非常近似于高斯函数的一阶导数
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import cv2
import numpy as np

image = cv2.imread("./imgs/2.jpg")

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

wide = cv2.Canny(gray,30,100)
tight = cv2.Canny(gray,180,240)

f,(a1,a2) = plt.subplots(1,2,figsize=(200,200))
a1.set_title("wide")
a1.imshow(wide,cmap='gray')
a2.set_title("tight")
a2.imshow(tight,cmap='gray')
plt.show()

计算机视觉 (七) -- Canny