西电计算机视觉实验1--实现Sobel、Canny算子滤波

代码:experiments/CV/1 at main · ShutongLinn/experiments (github.com)

Sobel算子滤波

一、x、y方向上不同的卷积核

二、构建卷积函数convonlution(img, kernel)

1存储在my_convolveFunction.py文件

2功能:实现卷积操作
3输入:图片img,卷积核kernel
4输出:卷积后的图片output

1、实现翻转

Sobel算子卷积核对称,翻转后不变

2、进行边缘填充(采用复制填充)

Kernel_h为卷积核的高

3、在图像矩阵中,依次移动卷积核,取与卷积核相同大小的box与卷积核进行点乘并求和

三、Sobel滤波函数Sobel_filter(img)

1存储在my_sobelFunction.py文件中
2功能:自定义sobel滤波
3输入:图片img

4输出:output = [x方向梯度, y方向梯度, 梯度幅度, 梯度角度]

1、求x、y方向上的梯度

2、图像梯度幅度

3、图像角

 

四、输出结果

Canny算子滤波

1存储在my_cannyFunction.py文件

2功能:自定义函数实现高斯滤波
3输入:图片img
4输出:高斯滤波结果矩阵output

  1. 构建高斯滤波核

构建3*3的高斯滤波核

  1. 利用卷积操作进行高斯滤波

1存储在my_cannyFunction.py文件

2功能:自定义函数实现高斯滤波
3输入:图片img
4输出: output = [梯度幅度, 梯度角度]

将角度转变为0度、45度、90度、135度四个方向,我们认为引起图片变化主要在这四个方向上

1存储在my_cannyFunction.py文件

2功能:自定义函数实现非极大值抑制
3输入:图片梯度grad和梯度角度theta
4输出: 新的梯度grad_new

我们认为图像在0度、45度、90度、135度中的某一个方向上变化,如果(x,y)梯度角度是0度,则比较此处的左右两边的像素值大小,如果此处值大于两边的值,则认为这里的图像变化主要由(x, y)引起的,(x, y)点像素值保留。其他方向也同理

1存储在my_cannyFunction.py文件

2功能:自定义函数实现非极大值抑制
3输入:图片矩阵img,阈值范围high和low
4输出: 处理后的图像矩阵

1存储在my_cannyFunction.py文件

2功能:自定义函数实现边缘弱化和孤立点检测
3输入:图片矩阵img

4输出: 处理后的图像矩阵

       (x, y)点附近的八连通图内,如果有四个或者四个以上的强边缘(大于255),则认为(x, y)也为强边缘

       (x, y)点为强边缘,其附近的八连通图中,只有一个或者没有强边缘,则认为(x, y)为孤立点,(x,y)像素值为0

  • Canny滤波函数Canny_fliter(im)

1存储在my_cannyFunction.py文件

2功能:自定义函数实现Canny滤波
3输入:图片矩阵im

4输出: 显示处理后的图像

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值