一文带你读懂图像处理工作原理

简介: 我发现的最令人惊奇的是如何使用微积分巧妙地计算图像边缘。
TB1GIMlq3TqK1RjSZPhXXXfOFXa.jpg

本文为 AI 研习社编译的技术博客,原标题 :

An Amazing Insight of How Image Processing Works

作者 | Bhanu Parashar

翻译 | 老赵    校对 | 酱番梨

整理 | 菠萝妹

原文链接:

https://medium.com/@bhanuparashar23/an-amazing-insight-of-how-image-processing-works-9b7a17aa42a4

对图像处理如何工作的理解

我发现的最令人惊奇的是如何使用微积分巧妙地计算图像边缘。

考虑一个黑白图像

TB1iwkfq6DpK1RjSZFrXXa78VXa.jpg

在这里,我放大了一个小区域。

如你所见,它包含许多像素。

它可以表示为具有以下约束的2D矩阵:

 在AijAij中,i表示像素的x坐标,j表示y坐标

左上角是坐标(0,0)

x,即向右移动时增加,而y,j在向下移动时增加

 AijAij的值范围为0到255,0表示黑色255表示白色

所以这个小区域的矩阵将是

TB1tQEmqVzqK1RjSZSgXXcpAVXa.jpg

现在只考虑矩阵的一行。

即:像这样的东西

TB1NjMmqZbpK1RjSZFyXXX_qFXa.png

表示为:

TB157EmqVzqK1RjSZSgXXcpAVXa.png

如果我们在图表上绘制它:

它会像

TB1LsErq3HqK1RjSZFkXXX.WFXa.png TB1bjojq6TpK1RjSZKPXXa3UpXa.png

记住高值意味着更多的白色,低值意味着更多的黑色,范围从0到255。

  第1部分:现在有趣的开始

如果我们将这个图表区分开来,考虑到函数y = f(x),该怎么办?

这里y是值AijAij,x是矩阵的i(这里y是不同的)

那么让我们绘制它的衍生物

正如你可以看到,从白色到黑色的图像变化点,衍生物的值突然增加

如果我们进一步区分,即双重差异,该怎么办?

TB1YhUpqVzqK1RjSZFCXXbbxVXa.png

所以你可以看到变化区域的突然爆发。

让我们在图像行中标记点:

TB1pQInqVzqK1RjSZFvXXcB7VXa.png

现在,如果我们将这个东西应用于所有行并标记双重导数的高值。

它沿着图像的边缘

同样也可以将它用于所有列,你将获得图像中的完整边缘。

  第2部分:数学实施(比上面更令人惊讶)

如何通过计算机将这种差异应用于图像:

一些数学家发现了一种叫做卷积的现象让我先解释一下:

考虑一个大的NxN矩阵和一个小的3x3矩阵:

TB1mhQjq9zqK1RjSZFLXXcn2XXa.png

这里,如果小矩阵的点积与大矩阵的所有3x3大小的部分完成。 点积表示每个元素乘以其各自的元素,例如。 131 *( - 1),162 * 0,232 * 1等。

结果保存在另一个矩阵中。

这个过程称为卷积,这里3x3矩阵是内核,它可以更大,但最常用的是3x3。

这种现象是,如果一个大矩阵与一个类似于核的核心区域进行卷积,则在结果矩阵中突出显示(值增加),而非相似区域变暗。

代表双重差异的内核是:

TB1B4ZpqVzqK1RjSZFCXXbbxVXa.png

以上这些也称为Sobel Kernel

  第3部分:基于C ++的OpenCV实现

TB1Hysoq7voK1RjSZFNXXcxMVXa.png

输出

TB1Mq7hq9zqK1RjSZPxXXc4tVXa.jpg

通过使用高斯导数,Canny边缘检测去除噪声可以实现许多进步,这些可以在线轻松研究。

图像:除了提供链接的图像之外的所有图像都是由我捕获和编辑的。

它如何扩展到彩色图像

颜色通常表示为RGB值(这里是OpenCV,它是BGR)

B->蓝色,G->绿色,R->红色边缘检测通常在将彩色图像转换为黑白之后进行。

但是还有一种方法,Image可以转换为HSV色空间这里 H 代表 Hue,S 代表饱和度,V 代表值,即 H 代表颜色,S 代表强度,V 代表亮度。

因此,如果我们只采用H或Hue,我们可以找到边缘而不受阴影或光线的影响。

还有其他方法。雷锋网(公众号:雷锋网)雷锋网雷锋网

想要继续查看该篇文章相关链接和参考文献?

长按链接点击打开或点击【一文带你读懂图像处理工作原理】:

http://ai.yanxishe.com/page/TextTranslation/1248

AI研习社每日更新精彩内容,观看更多精彩内容:

神经网络如何完成表征?

进入 kaggle 竞赛前 2% 的秘诀

如何极大效率地提高你训练模型的速度?

这 25 个开源机器学习项目,一般人我不告诉 Ta

等你来译:

五个很厉害的 CNN 架构 

这5种计算机视觉技术,刷新你的世界观 

神经网络和3D程序化生成的未来

使用TensorSpace.js来做神经网络的的3D可视化

AI研习社资料推荐:

TB1zm3lqVzqK1RjSZFoXXbfcXXa.jpg
目录
相关文章
|
Web App开发
一文读懂锁相环基本原理
一文读懂锁相环基本原理
1350 0
一文读懂锁相环基本原理
|
2月前
|
算法 Linux API
.NET图像处理的艺术 — 从加载到添加文本,一步步领略图像处理的奇妙世界
.NET图像处理的艺术 — 从加载到添加文本,一步步领略图像处理的奇妙世界
37 2
|
5月前
|
存储 机器学习/深度学习 人工智能
一文读懂ChatGPT的工作原理
【7月更文挑战第24天】.一文读懂ChatGPT的工作原理
160 2
|
编解码 JSON 达摩院
实验:计算机视觉技术简单实现
实验:计算机视觉技术简单实现
249 0
|
7月前
|
机器学习/深度学习 人工智能 算法
机器视觉:原理、应用与编程实践
机器视觉:原理、应用与编程实践
111 3
|
7月前
|
计算机视觉 Python
如何利用Python实现简单的图像处理功能
本文介绍了如何使用Python编程语言和相关库实现简单的图像处理功能。通过学习本文,读者将了解如何读取图像文件、调整图像大小、修改图像亮度和对比度、应用滤镜效果以及保存处理后的图像。这些技术将帮助读者快速入门图像处理领域,并为他们进一步探索更高级的图像处理技术打下基础。
|
7月前
|
数据采集 存储 前端开发
Python爬虫的基本原理#2
摘要:爬虫基本原理、会话和Cookie详解【2月更文挑战第8天】
67 1
Python爬虫的基本原理#2
|
机器学习/深度学习 算法 决策智能
计算机视觉实战(十五)背景建模 (附完整代码)
计算机视觉实战(十五)背景建模 (附完整代码)
278 0
|
数据采集 存储 网络协议
python爬虫的基本原理
python爬虫的基本原理
182 0
|
传感器 编解码 算法
LabVIEW图像分割算法(基础篇—6)
LabVIEW图像分割算法(基础篇—6)
LabVIEW图像分割算法(基础篇—6)