JuliaImages
Juliaで画像処理をする場合、有用なパッケージのひとつにJuliaImagesがある。ここでは、Julia 1.0に導入されたJuliaImagesによる基本的な画像の操作方法についてまとめておく。OSはUbuntu 16.04である。pythonで画像処理を行ったことがあるならば、ここの対応表が参考になる。
JuliaImagesパッケージの読み込み
# import packages
using Images, ImageView, TestImages
画像を読み込みたい
# load your own image
img = load("path_to_image")
# load an image from TestImages package
imgg = testimage("lena_gray_256")
imgc = testimage("lena_color_256")
画像を表示したい
# imshow in ImageView package
imshow(imgc)
カラー画像をレイヤーごとに表示したい
# imshow in ImageView package
imshow(permutedims(channelview(imgc), [2,3,1]))
画像のサイズを知りたい
# return (height, width)
size(img)
空の画像を生成したい
# gray image: zeros(format, height, width)
imgg = zeros(Gray, 5, 5)
# color image
imgc = zeros(RGB{N0f8}, 5, 5)
ランダムな画像を生成したい
# gray image: rand(format, height, width)
imgg = rand(Gray, 5, 5)
# color image
imgc = rand(RGB{N0f8}, 5, 5)
cropしたい
# gray image
imgg_crop = imgg[90:200, 70:210]
# color image
imgc_crop = imgc[90:200, 70:210]
resizeしたい
# gray image
imgg_resize = imresize(imgg, (64, 128))
# color image
imgc_resize = imresize(imgc, (64, 128))
配列(1次元)を画像に変換したい
# convert 1d array -> gray image
array_1d = collect(range(0,stop=1, length=25))
imgg = colorview(Gray, reshape(array_1d, 5, 5))
配列を画像に変換したい
# convert 2d array -> gray image
array_2d = rand(5, 5)
imgg = colorview(Gray, array_2d)
# convert 3d array -> color image
array_3d = rand(3, 5, 5)
imgc = colorview(RGB, array_3d)
画像を配列に変換したい
# gray image -> convert 2d array
imgg = testimage("lena_gray_256")
array_2d = channelview(imgg)
# color image -> convert 3d array
imgc = testimage("lena_color_256")
array_3d = channelview(imgc)
カラー画像をグレー画像に変換したい
# convert color image -> gray image
imgg = Gray.(imgc)
2値化したい
# binarize a gray image by thresholds 0.5
imgg_bin = imgg .> 0.5
filterをかけたい
# gaussian filter
img_filter_gau = imfilter(imgc, Kernel.gaussian(5))
# lapracian filter
img_filter_lap = imfilter(imgc, Kernel.Laplacian())
paddingしたい
# mirroring
imgc_pad_refl = padarray(imgc, Pad(:reflect, 25, 50))
imgg_pad_refl = padarray(imgg, Pad(:reflect, 25, 50))
# copy
imgc_pad_repl = padarray(imgc, Pad(:replicate, 25, 50))
imgg_pad_repl = padarray(imgg, Pad(:replicate, 25, 50))
# periodic bound
imgc_pad_circ = padarray(imgc, Pad(:circular, 25, 50))
imgg_pad_circ = padarray(imgg, Pad(:circular, 25, 50))
# filled by constants
t = 100; b = 0; l = 10; r = 40
pad_color = RGB4{N0f8}(.5,0.5,0.) # color
imgc_pad_fill = padarray(imgc, Fill(pad_color, (t, l), (b, r)))
imgg_pad_fill = padarray(imgg, Fill(pad_color, (t, l), (b, r)))
一旦ここまで。これでかなりの処理ができる。今後、有用な関数を追加する予定である。お疲れ様でした。