代码: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输出: 显示处理后的图像

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐