Cropping, Resizing and Rescaling
This demonstration shows how to use cropping, resizing and rescaling operations on an image in Julia using ImageTransformations.jl
using Images, TestImages, OffsetArrays
# ImageTransformations is reexported by Images
# load an example image
img_source = testimage("lighthouse")
Cropping Operation
Cropping is one of the most basic photo manipulation processes, and it is carried out to remove an unwanted object or irrelevant noise from the periphery of a photograph, to change its aspect ratio, or to improve the overall composition.
Let's first check the size of the image
img_size = size(img_source)
(512, 768)
Output is (512,768)
which stands means img_source
is 512
in height and 768
in width. In Julia, images as multidimensional arrays are stored in column-major order, which means that this first index corresponds to the vertical axis (column) and the second to the horizontal axis (row).
An related issue about the memory order is the indexing performance, see Performance Tips for more details.
Let's crop the image from sides by 1/8
of img_source
each side and leave it as it is from top to bottom.
Easiest way to do this is indexing: img_source[y1:y2, x1:x2]
Region of Interest: [y1, y2] sets the range for y-axis and [x1, x2] sets the range for x-axis of source image.
img_cropped = @view img_source[ :,floor(Int, 1/8*img_size[2]) : floor(Int, 7/8*img_size[2])]