| 关键词:图像识别 人工智能 AI |
对图像处理如何工作的理解 我发现的最令人惊奇的是如何使用微积分巧妙地计算图像边缘。 考虑一个黑白图像 ![]() 在这里,我放大了一个小区域。 如你所见,它包含许多像素。 它可以表示为具有以下约束的2D矩阵:
所以这个小区域的矩阵将是 ![]() 现在只考虑矩阵的一行。 即:像这样的东西 表示为: 如果我们在图表上绘制它: 它会像 ![]() 记住高值意味着更多的白色,低值意味着更多的黑色,范围从0到255。 第1部分:现在有趣的开始 如果我们将这个图表区分开来,考虑到函数y = f(x),该怎么办? 这里y是值AijAij,x是矩阵的i(这里y是不同的) 那么让我们绘制它的衍生物 正如你可以看到,从白色到黑色的图像变化点,衍生物的值突然增加 如果我们进一步区分,即双重差异,该怎么办? ![]() 所以你可以看到变化区域的突然爆发。 让我们在图像行中标记点: ![]() 现在,如果我们将这个东西应用于所有行并标记双重导数的高值。 它沿着图像的边缘 同样也可以将它用于所有列,你将获得图像中的完整边缘。 第2部分:数学实施(比上面更令人惊讶) 如何通过计算机将这种差异应用于图像: 一些数学家发现了一种叫做卷积的现象让我先解释一下: 考虑一个大的NxN矩阵和一个小的3x3矩阵: ![]() 这里,如果小矩阵的点积与大矩阵的所有3x3大小的部分完成。 点积表示每个元素乘以其各自的元素,例如。 131 *( - 1),162 * 0,232 * 1等。 结果保存在另一个矩阵中。 这个过程称为卷积,这里3x3矩阵是内核,它可以更大,但最常用的是3x3。 这种现象是,如果一个大矩阵与一个类似于核的核心区域进行卷积,则在结果矩阵中突出显示(值增加),而非相似区域变暗。 代表双重差异的内核是: ![]() 以上这些也称为Sobel Kernel 第3部分:基于C ++的OpenCV实现 ![]() 输出 ![]() 通过使用高斯导数,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研习社资料推荐: |
| 本文出处: https://www.toutiao.com/a6626511204980359687/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|