文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【计算机视觉】不来试试图片轮廓提取?

2023-09-04 15:33

关注

文章目录


最近学到了深度学习的卷积操作,在卷积神经网络出现之前,就已经有使用卷积核 (也叫滤波器),但那时的卷积核依靠人工的经验和知识来进行设计,而不能像卷积神经网络中那样让机器自己学习出合适的卷积核参数。

下面就介绍通过卷积来获取图像轮廓图的操作。


卷积

首先,图片是由像素点构成的。卷积的一个基本操作就是对应元素相乘然后再求和的操作,然后卷积核窗口在图片上不断滑动,就会得到一张新的“特征图”。 (我这里解释得比较草率,可以自行仔细了解一下卷积的过程)

用特殊的卷积核进行轮廓提取

这里使用一维的卷积核 [-1, 0, 1],可以提取图片的垂直边界。实际就是图片中邻近的像素点进行相减操作,边缘处两个像素点的差别很大,于是相减之后得到的值的绝对值就大,这就是我们提取出来的边缘

在这里插入图片描述
效果展示
在这里插入图片描述

通过改变卷积核的大小,可以改变提取出来的边缘的宽度,例如将卷积核改为:[-1, 0, 0, 1],得到的黑色边缘就更宽了。

在这里插入图片描述


这里使用下图中的卷积核,原理和之前的垂直边缘检测相似。前面的卷积核只能得到垂直边缘,而下图的卷积核则能得到完整的轮廓

在这里插入图片描述
效果展示
在这里插入图片描述

代码

我这里卷积是通过 paddle 的库实现的,因此需要先安装 paddle。安装教程参加:paddle安装教程
如果觉得安装太麻烦也没关系,可以试试 AI Studio 的在线环境,已经内置了 paddle 库:AI Studio。点击项目->创建项目,就可以开始使用啦!

导入依赖:

import matplotlib.pyplot as pltfrom PIL import Imageimport numpy as npimport paddlefrom paddle.nn import Conv2Dfrom paddle.nn.initializer import Assign

通过调整代码img = img.resize((200, 200), Image.ANTIALIAS)括号中的数值,你将得到不同的轮廓提取效果!(数值控制图片的尺寸)
卷积核不变时,图片尺寸越大,提取的轮廓也就相对显得越细,就越不明显。而图片尺寸小时又会显得模糊,像打了马赛克。

运行代码:

# 输入图片img = Image.open('喵喵头像.jpg')  # 图片放在py文件相同目录下img = img.resize((200, 200), Image.ANTIALIAS)  # 采样,以得到指定大小的图片# 设置卷积核参数w = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], dtype='float32')/8w = w.reshape([1, 1, 3, 3])w = np.repeat(w, 3, axis=1)  # 在通道上复制,得到[1,3,3,3]# 创建卷积算子conv = Conv2D(in_channels=3, out_channels=1, kernel_size=[3, 3],              weight_attr=paddle.ParamAttr(                  initializer=Assign(value=w)              ))# 转换图片格式x = np.array(img).astype('float32')  # 读入shape[H,W,C]x = np.transpose(x, (2, 0, 1))  # 交换维度x = x.reshape((1, x.shape[-3], x.shape[-2], x.shape[-1]))  # Conv2D的输入需为四维张量x = paddle.to_tensor(x)# 卷积运算y = conv(x)out = y.numpy()# 画图plt.figure(figsize=(20, 10))f = plt.subplot(121)f.set_title('input image', fontsize=15)plt.imshow(img)f = plt.subplot(122)f.set_title('output image', fontsize=15)plt.imshow(out.squeeze(), cmap='gray')plt.show()

14天学习训练营导师课程:
杨鑫《Python 自学编程基础》
杨鑫《 Python 网络爬虫基础》
杨鑫《 Scrapy 爬虫框架实战和项目管理》

来源地址:https://blog.csdn.net/m0_63238256/article/details/127930142

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯