安装模块并使用
图像处理需要下载两个包,即Images和ImageView,按下 ] 进入pkg模式,然后添加包
add Images
add ImageView
静待安装成功,然后按删除键返回交互模式,目前的Julia比较稳定,如果出现问题,可按照提示安装缺失的内容。如果报网络错误,那么可以更改Julia数据源,方法是新建环境变量JULIA_PKG_SERVER,内容任选其一
- 北外开源镜像站: https://mirrors.bfsu.edu.cn/juliaTUNA
- 清华开源铆像站: https://mirrors.tuna.tsinghua.edu.cn/juliaSJTUG
- 上交Linux 用户组: https://mirrors.sjtug.sjtu.edu.cn/julia
然后通过using在Julia中调用。
using Images, ImageView, Plots
接下来对图像进行基本的打开、转灰度、截取以及展示等操作。
基本图像操作
julia通过load函数打开图像,用imshow显示图像,用save保存图像
img =load("E:\\00\\test.jpg")
gray = Gray.(img)
roi = gray[1:400,1:800]
imshow(roi)
save("roi.png",roi)
其中,Gray.用于转灰度;imshow用于显示图像;save用于保存图像。图像以数组的方式存储,并以切片的形式截取。
load函数比较强大,不仅可以读取本地图像,也可以下载网络图像,比如
url = "https://img-blog.csdnimg.cn/f40183b1486040ff887e59506bd32257.png"
img = load(download(url))
imshow(img)
对于学习者来说,可以导入TestImages,来加载测试图片,这些测试图片都在这里测试图片列表。
using TestImages
img = testimage("lena")
其中"lena"就是著名的lena图。
此外,也可以把多维数组转化为图像,下面的代码中,A是3x40x80的随机数组,通过colorview可将其转化为RGB图像。
A = rand(3, 40, 80)
img = colorview(RGB, A)
滤波
Images中封装了一些常用的图像处理算法,最常用的自然是滤波函数imFilter,示例如下
using ImageFiltering, TestImages
img = testimage("lena")
im_Gauss = imfilter(img,Kernel.gaussian(3));
im_Laplace = imfilter(img,Kernel.laplacian2d(3));
im_Sobel = imfilter(img,Kernel.sobel());
im_Median = imfilter(img,ones(3,3)/9); #自定义的均值滤波
imshow([img im_Gauss im_Median])
其中,gaussian为高斯滤波;laplacian2d为拉普拉斯滤波;sobel为sobel滤波。
在上面的代码中,分别通过3阶Gauss滤波、3阶Laplace滤波以及Sobel滤波对lena图进行处理,处理结果如下图所示