在科学计算中,像机器视觉、医学3D图像处理(如CT图像重建)都是常见的话题,Images库正是为此而设计,而且目前这个领域也是相对而言比较成熟的。
温馨提示: 在 Julia 的 REPL 环境下,可以使用 查看当前的工作目录,并可以使用 切换到新的工作目录。
安装相应的包
依赖可能比较复杂,大家看到 哪个包,请在 REPL 输入 ,自行 和构建。
以下代码用到的测试图片:
测试一下
效果如下:
这样,就可以开始愉快的玩耍了。
除了从本地加载图片,也可以通过网络获取图片。
预祝,圣诞节快乐!
测试图像集
计算机视觉有一些经典的测试图片。可以通过 包获取。
这样,在工作目录下,应该可以看到这张经典的山魈(xiao)的图片。
基本图像处理
调整图片大小
获取图片大小:
重新调整图片大小到 100 × 250。(悄悄告诉你,× 是在 REPL 下输入 获取的):
效果如下:
按比例缩放图片: 假如需要把图片放缩到原来图片的 60%,可以计算出新的图片尺寸,然后再进行放缩。因为 返回的是两个元素的元组,因此需要使用 。 则是找到和计算出来值最接近的整数。
类似的原理,可以对某一个维度进行单独的放缩。
在 Images 包中还提供了 ,可以将图像的大小沿着指定的维度减少两倍。换句话说,它将图片缩放 50%。
如果第二个参数填的是2,则缩放的是宽度。
旋转图片
图片旋转也是非常常见的操作。这个操作可以在 中找到。
裁剪图片
灰度图像
计算机视觉的操作中,最常见的操作就是把图像转化成灰度图。在 Julia 中,可以使用 函数完成该操作。
不过需要记住, 返回单个维度,而不是 RGB 图像的三维。可以使用 将单通道灰度图像转换为三通道灰度 RGB 图像:
图像二值化
对于图片数据集,预处理的时候通常会将图片进行二值化,这在识别和处理文本时非常常见(准确地说,是轮廓与线条)。在 Julia 中,只需使用一行代码:
这一行包含了三个操作,第一,将图片转换成灰度图像( )。第二,超过 0.5 设置为 true,低于 0.5 的设置为 。第三,通过乘以1,将布尔值转换为 0 和 1。
模糊图像
图像处理中,高斯模糊被广泛地应用于减少图像细节和获取模糊效果。要在 Julia 中使用高斯模糊,可以使用 和 函数。
这样就得到这样一张图片:
锐化图像
图像锐化用来补偿图像的轮廓,增强图像的边缘,可以使得图像变得更加清晰。下面代码采用的是高斯低通滤波对图像进行锐化处理。简单的说,原始的图像 + 原始图像 - 高斯低通滤波后的图像 = 锐化的图像。
通过调整 和 参数可以得到不同程度的锐化效果。 推荐设置在 1 到 4 之间,而 推荐设置在 0.1 到 0.5。
最后
Julia 目前慢慢地稳定下来,常用的包也逐渐支持1.0了。计算机视觉还有很多可以写的,有机会接着写咯。这篇文章相对而言比较简单,Julia 基础设施非常完善,像图像这种矩阵型数据其实特别适合用 Julia 来处理。我们也可以看到,Julia 非常轻松地驾驭了这一领域。最后,我也和大家一样,期待 Julia 在更多领域得到应用。
领取专属 10元无门槛券
私享最新 技术干货