没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
创作很累,如果您觉得对您有帮助,请点赞支持,感谢! 一. 总的算法流程: ① 使用高斯滤波器滤波 ② 使用 Sobel 滤波器滤波获得在 x 和 y 方向上的输出,在此基础上求出边缘的强度和边缘的角度 edge 为边缘强度,tan 为边缘角度 ↑ ③ 对边缘角度进行量化处理 对边缘角度进行量化处理算法 ↑ ④ 根据边缘角度对边缘强度进行非极大值抑制(Non-maximum suppression),使图像边缘变得更细 非极大值抑制算法:0°时取(x,y)、(x+1,y)、(x-1,y) 中的最大值,其它角度类似 ↑ ⑤ 使用滞后阈值对图像
资源推荐
资源详情
资源评论
Canny边缘提取算法手动实现边缘提取算法手动实现 python
创作很累,如果您觉得对您有帮助,请点赞支持,感谢!创作很累,如果您觉得对您有帮助,请点赞支持,感谢!
一一. 总的算法流程:总的算法流程:
① 使用高斯滤波器滤波使用高斯滤波器滤波
② 使用使用 Sobel 滤波器滤波获得在滤波器滤波获得在 x 和和 y 方向上的输出,在此基础上求出边缘的强度和边缘的角度方向上的输出,在此基础上求出边缘的强度和边缘的角度
edge 为边缘强度,tan 为边缘角度 ↑
③ 对边缘角度进行量化处理对边缘角度进行量化处理
对边缘角度进行量化处理算法 ↑
④ 根据边缘角度对边缘强度进行非极大值抑制(根据边缘角度对边缘强度进行非极大值抑制(Non-maximum suppression),使图像边缘变得更细),使图像边缘变得更细
非极大值抑制算法:0°时取(x,y)、(x+1,y)、(x-1,y) 中的最大值,其它角度类似 ↑
⑤ 使用滞后阈值对图像进行二值化处理,优化图像显示效果使用滞后阈值对图像进行二值化处理,优化图像显示效果
算法如上所示 ↑
⑥ 输出图像边缘提取效果输出图像边缘提取效果
二二. 使用使用python手动实现手动实现 Canny 算法,完成图像边缘提取算法,完成图像边缘提取
# writer:wojianxinygcl@163.com
# date :2020.3.20
import cv2
import numpy as np
import matplotlib.pyplot as plt
def Canny(img):
# Gray scale
def BGR2GRAY(img):
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# Gray scale
out = 0.2126 * r + 0.7152 * g + 0.0722 * b
out = out.astype(np.uint8)
return out
# Gaussian filter for grayscale
def gaussian_filter(img, K_size=3, sigma=1.4):
if len(img.shape) == 3:
H, W, C = img.shape
gray = False
else:
img = np.expand_dims(img, axis=-1)
H, W, C = img.shape
gray = True
## Zero padding
pad = K_size // 2
out = np.zeros([H + pad * 2, W + pad * 2, C], dtype=np.float)
资源评论
weixin_38536841
- 粉丝: 3
- 资源: 946
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功