VL_IMREADJPEG - Load and transform images asynchronously
IMAGES = VL_IMREADJPEG(FILES) reads the specified cell array FILES of JPEG files and returns at cell array of images IMAGES.
IMAGES = VL_IMREADJPEG(FILES, 'NumThreads', T) uses T parallel threads to accelerate the operation. Note that this is independent of the number of computational threads used by MATLAB.
VL_IMREADJPEG(FILES, 'Prefetch') starts reading the specified images but returns immediately to MATLAB. Reading happens concurrently with MATLAB in one or more separated threads. A subsequent call IMAGES=VL_IMREADJPEG(FILES) specifying exactly the same files in the same order will then return the loaded images. This can be sued to quickly load a batch of JPEG images as MATLAB is busy doing something else.
The function can transforms the images on the fly in various ways. Transformations are applied as follows:
1) An (H,W) image is loaded from disk.
2) A rectangular subset of the image is cropped and resized. The
geometry of the crop is determined as follows: 1) First, the shape (Ho,Wo) of the output image (i.e. the resized crop) is determined. This, as determined by the `Resize` option, can be either the same as the input image (H,W) or one or both of height and width can be set to an arbitrary value. 2) Given the output shape (Ho,Wo) of the crop, the shape (Hi,Wi) and location of the crop in the input image is determined. First, an anisotropy ratio (change in aspect ratio) is selected according to `CropAnisotropy`. Given that, the input crop rectangle is scaled to fill a certain percentage of the input image according to `CropSize`. Finally, the crop is extracted either from the middle of the input image or at a random location according to `CropLocation`.
3) The cropped and resized image undergoes color post
post-processing, including mean subtraction (`SubtractAverage`), random color shift (`Brightness`), and random changes in saturation (`Saturation`), and contrast (`Contrast`).
The function takes the following options:
If specified, run without blocking (see above).
If specified, increase the verbosity level.
If specified, pack all K images in a single H x W x 3 x K array. This requires using the option
'Resize',[H W]in order to set the output size to be the same for all images. Note furthermore that gray-scale images are automatically extended to three color channels.
If specified, return GPU arrays instead of standard arrays. Note that, using the
Prefetchoption, the data is copied to the GPU in parallel with computations.
Specify the number of threads used to read images. This number must be at least 1. Note that it does not make sense to specify a number larger than the number of available CPU cores, and often fewer threads are sufficient as reading images is memory access bound rather than CPU bound.
If specified, turn on image resizing. The argument can either specify the desired height and width
[H, W]or be simply a scalar
S. In the latter case, the image is resized isotropically so that the shorter side is equal to
Resizing uses bilinear interpolation. When shrinking, a simple form of antialiasing is used by stretching the bilinear filter over several input pixels to average them. The method is the same as MATLAB
imresizefunction (the two functions are numerically equivalent).
Specify the minimum and maximum value of the anisotropy ratio for the selected crops. The default value [1 1] means that the crops are extracted isotropically, i.e. with the same amount of stretch along horizontal and vertical directions. A value of
[0 0]stretches the crop to fit the input image. A value
[A1 A2]means that an anisotropy ratio A = Wcrop/Hcrop is sampled uniformly at random for each image from the specified interval.
Specifies the maximum and minimum size of a crop, as a percentage of the maximum size it can take to fill the input image (the latter is determined after fixing the anisotropy). Using
[1 1]means that the crop is always sized to fill up as much area as possible.
If set to
'random', the crop location in the input image is sampled uniformly at random among all possible shifts such that the crop is fully contained in the image.
If specified, randomly flips a crop horizontally with 50% probability.
[0 0 0]]
Subtract the specified RGB triplet from each pixel.
Bof the brightness shift. Each image is modified by adding the color shift
wis a 3D vector sampled from the standard Normal distribution.
Cof the contrast shift. It must be between 0 and 1. A value of 0 amounts to no contrast shift. Otherwise, a contrast shift is sampled at random, using
Cas an upper bound.
The same as
Contrast, but for saturation.
The interpolation method; one of
lanczos3. The function uses interpolators equivalent to MATLAB's
Further details on the processing performed by the function can be found in the PDF manual.