快跟上 ,和我一起入门计算机视觉

👈👈👈 欢迎点赞收藏关注哟

首先分享之前的所有文章 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164...
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca...

前言

最近在研究 Python 的一些东西 ,也在逐步深入的过程中,接触到了计算机视觉的一些概念。

在此期间陆陆续续也学了一些东西,总结下来分享给大家,或多或少对入门者有些帮助。

在之前我们从应用的角度学习了基础的使用 :

# 五分钟,零基础也能入门 Python 图像文字识别

那么 ,图像处理到底涉及到哪些概念呢?

一. 宏观图

起初只是想简单的做一下图像去重这些小功能 ,没想到在逐步的了解中,发现图像处理是一个很庞大的领域。

从基础的(绿色)的图像技术 ,到高级的应用(紫色),再到未来可能深度的发展(红色)。用上面一张图来说是远远不够的。

但是隐隐有种感觉,这些前沿的技术,让我感觉到太陌生了,像被时代抛弃了似的。

也许是时候了解一下这些东西了 ,免得以后变成被科技抛弃的老爹爹。

二. 阶梯入门

2.1 图像操作

图像操作有很多工具 ,例如 scikit-image 的, SimpleCV ,OpenCV 等 ,包括 Matlab 这种商业数学软件也能实现图像处理。

但是从资料和使用难度来说 ,OpenCV 是入门的推荐选择

上图 图像技术 的绿色方块的技术 ,在 OpenCV 里面都能找到对应的接口。一般使用流程是 :

  • 选择对应的语言 (Python / Java / C++)
  • 基于操作系统安装 OpenCV
  • 通过客户端调用 OpenCV 的相关功能
python 复制代码
// 以 Python 为例
import cv2

image = cv2.imread(image_path)

# 灰度化图片
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 对图片进行缩放
image_big = cv2.resize(gray_image, dsize=(None, None), fx=3, fy=3, interpolation=cv2.INTER_CUBIC)

# 降噪图片
denoised_image = cv2.GaussianBlur(image_big, (5, 5), 0)

有关 OpenCV 的其他功能,会在另外一篇单独说。

2.2 操作语言的选择

以 OpenCV 为例 ,使用比较多的语言就是 Python ,C++ , Java.

C++ 和 Java 主要是作为服务端和桌面端的语言,C++ 体现的是性能高 ,比较 OpenCV 本质上是 C++ 实现的。

Java 就体现在稳定,如果简单的功能,又恰好服务端是Java ,确实可以选择使用。

以上两种都是基于不同的业务场景可以适当的选择,但是如果想要深入更高级的用法,就得了解 Python了。

上述 3 种语言都有深度学习的能力 但是从生态和上手难度来说 ,Python 应该是最轻松的

2.3 高级用法

基础的图像处理

  • 👉 掩模 : 用选定的图像、图形或物体遮挡待处理的图像(全部或局部),从而控制图像处理的区域
    • 用法ROI的提取 , 屏蔽 , 结构特征提取
  • 👉 色彩处理 : 通常是针对色彩空间进行处理
    • 色彩空间 :用来描述颜色的数学模型。它定义了如何用一组数值来表示一个颜色
    • 常见的包括 : RGB(红蓝绿) , HSV(色相、饱和度和明度) , CMYK等
    • 用法色彩空间转换将人从图像背景中分离
  • 👉 滤波处理 : 尽量保留图像原有信息的情况下,过滤掉图像内部的噪声的过程
    • 用法 : 均值滤波 ,高斯滤波 ,中值滤波
  • 👉 形态学 : 从图像内提取分量信息,该分量信息通常是图像理解时所使用的最本质的形状特征
    • 腐蚀 : 能够消除图像的边界点,使图像沿着边界向内收缩
    • 膨胀 : 对图像的边界进行扩张

一些商业性质操作的实现方案 :

  • ❓ 车牌识别 : 车牌识别主要包括3个模块
    • 提取车牌 : 首先从一个复杂的图片里面把车牌读取出来
      • S1 : 通过滤波去除图像的噪声信息 ,在通过灰度去除多余的色彩
      • S2 : 提取图片的边缘 ,主要是提取到车牌中字符的边缘
      • S3 : 二值化 + 闭运算 + 开运算 + 多次滤波 让复杂的图形变得更加抽象
      • S4 : 轮廓处理让这些简单的图形分割成一个个单元
      • S5 : 定位到车牌也就是先对图片处理后,更好的知道车牌在哪
    • 分割车牌 :将车牌中的各字符提取出来,以便进行后续识别
      • 流程大概一致 ,都是通过去噪 ,灰度等方式让车牌数字被分割成一个个整体
    • 识别车牌 : 图生字的用法,这一块组件很多 ,各有不同

图片来源 @ 计算机视觉40例:从入门到深度学习


  • ❓ 指纹识别 :特性工程的主要体现
    • 流程步骤 :
      • S1 : 拿到指纹的特征 ,然后存储在模板库中
      • S2 : 当读取到新指纹的时候,拿到新指纹的特征和模板库 信息进行比对
    • 实现关键 :
      • 首先需要对图形进行增强 ,细化等
      • 然后提取其中的关键点 ,例如分叉 ,向量 ,终点等

2.4 阶段总结

在这一阶段还停留在图片信息采集后的商业用法, 并没有涉及到机器学习等场景。

这些案例也不需要太大的投入,都可以应用在生产中,至于卖不卖的出去就看实现的方案了。

但是整体来说,技术门槛不会太高。

三. 高级场景了解

高级场景我本身也没有涉及,单看案例也难以说出其中的技术方法。

就像上面宏观图里面的 ,像自动驾驶 ,虚拟现实往往不是一个技术域能实现的,这些通常都是多个领域共同作用的成果

而组成这些的 ,其底层还是一些相对简单的实现 ,例如行人检测 ,机器学习,深度学习这种。

不过好在生态能帮助我们解决大部分问题 ,大部分我们需要的功能都已经有完善的算法和组件,可以直接使用。

这里列举一些场景的算法 ,虽然我并不是十分了解他们 :

  • 卷积神经网络 (CNN):CNN 是用于图像分类的标准方法。它们使用称为卷积层的特殊层来提取图像中的特征
  • 变分自编码器 (VAE):VAE 是一种可以用于图像分类的生成模型 ,可以用来训练数据相似的图形
  • 区域建议网络 (RPN):RPN 用于生成候选目标框,然后由其他算法进一步分类和定位对象
  • 生成对抗网络 (GAN):GAN 由两个神经网络组成:生成器和判别器。生成器尝试生成逼真的图像,而判别器尝试区分真实图像和生成的图像

当然这些东西不是一蹴而就的,后续有机会再深入。

结语

我只是一个蹒跚学步的新人 ,这段时间了解这一块陆陆续续看了一些东西,整个记了下来。

有些资料里面很细节的东西在文中并没有呈现,文章的目的还是围绕对这个领域有个初步的了解。

参考文档

计算机视觉40例:从入门到深度学习

相关推荐
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
红尘散仙2 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记3 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆3 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
Cosolar3 小时前
从零写一个 Attention Is All You Need
人工智能·面试·架构
喵个咪4 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball6164 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_2518364574 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao4 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒6 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端