0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MATLAB 图像处理与深度学习的作用分析和介绍

MATLAB 来源:djl 2019-09-11 14:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文将展示如何通过图像处理和深度学习来自动解算数独谜题:

图中的红色数字均由算法生成。接下来我们将介绍如何创建该算法,并说明为何深度学习和图像处理对于对象检测和图像分类同样十分有用。

图像处理与深度学习

我们重点介绍两种技术:

图像处理

按像素级别变换或者修改图像。比如,过滤、模糊、去模糊和边缘检测等;

深度学习

通过学习样本图像自动识别图像特点。近几年,深度学习已经彻底改变了图像处理领域。

我们来探讨下这两种技术之间的关联性。这里有两种常见的观点:

“深度学习已经淘汰了‘传统’的图像处理方式。”

“深度学习需要数以百万的学习样本,而且只能用于猫咪图片识别这类任务。”

但事实是:

深度学习和图像处理都是非常有效的工具,可以解决各种难题,这些任务通常非常复杂,只有使用正确的工具才能解决问题。

数独解谜

解算数独(如下图所示)的规则是:需确保每一行、每一列,以及所有 3x3 宫格都只包含 1 到 9 这九个数字,并且不能有任何重复,只有这样才算完成。

关于MATLAB 图像处理与深度学习的作用分析和介绍

数独在开始时会提供一些数字。填入数字的大小和数量将决定解谜的难度。

我们希望算法能够识别出宫格,并填入答案。但如果只是这样,未免太简单了点。我们还希望无论数独位于图片中的哪个位置,算法都能给出答案。这里有张照片,形象地展示了算法在解谜时可能需识别何种图像:

为此,我们需要设计相应的步骤来处理任务。这就意味着我们可以把解谜分成若干步骤:

关于MATLAB 图像处理与深度学习的作用分析和介绍

找到数独——在图像中定位数独

找到宫格——在 9x9 的盘面中确定所有宫格

识别数字——必须能够识别手写或打印数字

解算数独

以上所有步骤均可用深度学习或图像处理中的一种方法来实现。那么,哪些步骤应该用深度学习实现,哪些步骤应该用图像处理来实现呢?

步骤1. 找到数独

我们无法预计图像、图像背景和对象大小的情况。不同图像的拍摄角度也可能大不相同。更不用说光照、相机拍摄条件等其它因素。可变因素实在是太多了。

适用方法:深度学习

让我们试试能否用语义分割为数独图片中的像素分类。为此,我们需要标记训练数据。在 MATLAB 中使用 Image Labeler 标记需要的数据。这是标记完成后的最终输入数据:

https://www.mathworks.cn/help/vision/examples/semantic-segmentation-using-deep-learning.html

有一点值得注意,那就是数据集非常小——只有一百幅左右的图像。让我们试着训练语义分割网络,看看数据是否充分。

设置图像数据仓库,以便储存用于语义分割网络的像素信息。

关于MATLAB 图像处理与深度学习的作用分析和介绍

然后我们要设置网络层。这里要注意,我们创建了一个能够借助分类权重使各个分类抵消的函数。

设置网络:

关于MATLAB 图像处理与深度学习的作用分析和介绍

这是训练选项:

关于MATLAB 图像处理与深度学习的作用分析和介绍

最后训练网络:

net = trainNetwork(train, layers, opts);

在这个阶段中,大约需要 20 分钟才能跑完 40 次样本训练。具体耗时可能因电脑硬件/GPU 性能不同而有所差异。网络经过训练后,我们又换了一幅测试图像,得出下述的结果:

结果很不错!尽管图片中的其它格状图形对算法产生了干扰,但影响十分有限。可在下个步骤去除这些小范围噪点。

步骤2. 找到宫格

现在,我们需要在数独盘面中识别出所有小宫格。这些宫格有着很明确的界定:笔直的边线、总是深色的墨迹,以及大小一致的方形网格。在此提醒,我们在步骤 1 中已经确定了数独盘面的大致区域。我们可以将该区域以外的图像全部涂黑,确保算法集中处理该区域。

适用方法:图像处理

我们曾多次探讨图像处理,如果你不是图像处理领域的专家,你只要记住——这并不会妨碍你!MATLAB提供了各种应用,能让处理过程十分轻松。试试 Image Segmenter (https://www.mathworks.cn/help/images/ref/imagesegmenter-app.html),尝试用它来检测图像中的宫格。下面这段代码由该应用自动生成,可用于检测图像中的所有宫格。

首先需清理图像,确保消除所有噪点。

BW_out = bwpropfilt(networkMask, 'Area', [100000 + eps(100000), Inf]);

然后要缩放遮罩,确保它覆盖住整个盘面。

maskDilated = imdilate(BW_out, strel('disk', 120));

由于只需注意盘面所在区域,所以将其它区域全部涂黑。

grayIm = rgb2gray(im); grayIm(~maskDilated) = 0;

关于MATLAB 图像处理与深度学习的作用分析和介绍

然后在图像中精准抠取盘面。

关于MATLAB 图像处理与深度学习的作用分析和介绍

可以看到执行的结果非常准确,而且能够经受住各种干扰!

步骤3. 识别数字

有很多种方法可以识别手写数字和打印数字。这个问题的难点在于,我们必须考虑到各种字号和字体。好在办法也不少:

光学字符识别(OCR)是一种常见方法

结合了机器学习分类器的方向梯度直方图(HOG)是另一种方法点击此处查看MATLAB示例

好在手写识别同样是一个被广泛研究的机器学习分类问题(请查看本示例,了解如何使用常见的MINST数据集来解决该问题;我写过一篇类似文章,请点击此处阅读)。

适用方法:深度学习

该环节旨在识别打印数字或手写数字,然后通过深度学习将其数字化(如下图所示)。

关于MATLAB 图像处理与深度学习的作用分析和介绍

为此,我们需要海量训练数据来帮助算法理解字符之间的差异。考虑到训练数据的海量程度,我们不可能手写出所有训练样本,这太费时间了。

这时即可借助 MATLAB 生成合成数据。就手写数字而言,这一步很简单——只需从MNIST数据集中提取现成数据,然后与下图中的背景图像合成。在合成各类打印数字时,我们希望数字看上去尽可能不同,以便确保它们无论采用何种字体(新罗马、维丹娜等),都能被算法识别。

关于MATLAB 图像处理与深度学习的作用分析和介绍

在合成以上两类数字时,我们会尽可能确保数字的大小和位置每次都不尽相同。因为这样我们就能尽可能多地生成数据!

合成图像:手写类型/打印类型

注:宫格的方框厚度同样会随机变厚或变薄,从而确保宫格各不相同。限于篇幅限制,本文对于合成数据的介绍十分有限。今后我会推出更多有关该主题的文章,请持续关注!

现在我们可以训练网络了。设置训练选项,创建层,然后像之前那样训练网络。

关于MATLAB 图像处理与深度学习的作用分析和介绍

结果显示,该网络的准确度约为97.8%。就数独解算而言,这个结果已经足够精确了。

步骤4. 解算数独

我们已经识别了宫格和数字。现在轮到填写答案了。

适用方法:都不需要!这是一个优化问题

整合各个步骤

现在我们已经完成了所有四个步骤,借助深度学习和图像处理创建了一个能够寻找最优解的数独解算器。

关于MATLAB 图像处理与深度学习的作用分析和介绍

关于MATLAB 图像处理与深度学习的作用分析和介绍

当您在处理和图像或视频有关的任务时,请务必牢记以下两点重要提示:

深度学习适合解决某些问题,但并非所有问题都适合用深度学习解决。

图像处理和深度学习都是十分有用的工具,可以将它们组合使用以便寻求最优方案。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    28

    文章

    1340

    浏览量

    59175
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123900
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于学习的外观质量标
    的头像 发表于 11-27 10:19 47次阅读

    【新启航】深度学习在玻璃晶圆 TTV 厚度数据智能分析中的应用

    。随着深度学习在数据处理领域展现出强大能力,将其应用于玻璃晶圆 TTV 厚度数据智能分析,有助于实现高精度、高效率的质量检测与工艺优化,为行业发展提供新动能。
    的头像 发表于 10-11 13:32 242次阅读
    【新启航】<b class='flag-5'>深度</b><b class='flag-5'>学习</b>在玻璃晶圆 TTV 厚度数据智能<b class='flag-5'>分析</b>中的应用

    MATLAB 助力香港中文大学解决生物医学图像处理挑战

    Processing Toolbox™ 加速了生物医学图像处理工作流程。借助 MathWorks 的软件,研究人员高效地对万亿体素级别的图像进行了分割和分析,以往这些任务需要高端计算
    的头像 发表于 08-28 15:07 419次阅读

    深度学习对工业物联网有哪些帮助

    、实施路径三个维度展开分析: 一、深度学习如何突破工业物联网的技术瓶颈? 1. 非结构化数据处理:解锁“沉睡数据”价值 传统困境 :工业物联网中70%以上的数据为非结构化数据(如设备振
    的头像 发表于 08-20 14:56 757次阅读

    普源示波器如何连接MATLAB实现数据采集与分析

    普源示波器(Rigol)作为国内知名的测试测量仪器品牌,广泛应用于电子工程、科研实验、教学等领域。为了进一步扩展其功能,用户常需将示波器与MATLAB等数据分析平台连接,实现自动化测试、实时信号处理
    的头像 发表于 05-29 09:34 702次阅读

    工业相机的作用及未来发展

    工业相机核心作用是通过图像处理分析,为工业自动化提供关键数据支持。
    的头像 发表于 05-21 16:15 802次阅读
    工业相机的<b class='flag-5'>作用</b>及未来发展

    一文读懂!图像采集卡是什么?它在工业/医疗/监控等多领域中的作用

    你有没有想过,在工业检测、医院手术室、安防监控这些高精度影像场景中,图像是怎么被“抓”进电脑里进行分析处理的?单靠摄像头就能搞定吗?其实并没那么简单,真正起到关键作用的,是一种常被忽视
    的头像 发表于 05-13 13:35 1729次阅读
    一文读懂!<b class='flag-5'>图像</b>采集卡是什么?它在工业/医疗/监控等多领域中的<b class='flag-5'>作用</b>

    进群免费领FPGA学习资料!数字信号处理、傅里叶变换与FPGA开发等

    的基础知识,讲述了确定性数字信号处理的知识,包括离散时间信号及系统的介绍、z变换、傅里叶变换、频率分析以及滤波器设计等。介绍了随机数字信号处理
    发表于 04-07 16:41

    【AIBOX 应用案例】单目深度估计

    了关键作用深度估计技术可以分为多目深度估计和单目深度估计。其中单目摄像头具有成本低、设备普及、图像获取方便等优势,使得单目
    的头像 发表于 03-19 16:33 874次阅读
    【AIBOX 应用案例】单目<b class='flag-5'>深度</b>估计

    军事应用中深度学习的挑战与机遇

    ,并广泛介绍深度学习在两个主要军事应用领域的应用:情报行动和自主平台。最后,讨论了相关的威胁、机遇、技术和实际困难。主要发现是,人工智能技术并非无所不能,需要谨慎应用,同时考虑到其局限性、网络安全威胁以及
    的头像 发表于 02-14 11:15 818次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural Network
    的头像 发表于 02-12 15:15 1339次阅读

    温补晶振对医疗内窥镜图像处理与辐射控制的关键作用

    温补晶振对医疗内窥镜图像处理与辐射控制的关键作用
    的头像 发表于 01-14 09:56 617次阅读
    温补晶振对医疗内窥镜<b class='flag-5'>图像</b><b class='flag-5'>处理</b>与辐射控制的关键<b class='flag-5'>作用</b>

    DFT在图像处理中的作用 DFT在音频信号处理中的应用

    处理中的几个主要作用: 频域滤波 :DFT允许我们分析图像的频率成分,从而可以设计滤波器来增强或抑制特定频率的信号,例如低通滤波器可以减少图像
    的头像 发表于 12-20 09:18 1843次阅读

    Simulink与 MATLAB 的结合使用 Simulink中的信号处理方法

    被快速搭建和仿真。 MATLAB 在信号处理中的作用 MATLAB 是一个强大的数学计算工具,它提供了大量的内置函数和工具箱,用于信号的生成、分析
    的头像 发表于 12-12 09:25 2188次阅读