View Source Image.Math (image v0.54.4)
Implements math operators for images,
delegating to the Kernel
functions in the
cases where the parameters do not include
Vix.Vips.Image.t/0
.
To override the standard operations in a
function or module, add use Image.Math
.
To maximise readability and clarity it
is recommended that use Image.Math
be added
to only those functions that require it.
Example
defmodule MyModule do
# Not recommended
use Image.Math
def my_function(%Vix.Vips.Image{} = image) do
# Recommended
use Image.Math
# Increase the all bands by 20%
brigher = image * 1.2
# Or adjust only green by 20%
bright_green = image * [1, 1.2, 1]
end
end
Summary
Functions
Matrix bitwise 'and' of two images.
Matrix exponent of two images or one image and a constant or vector.
Matrix multiplation of two images or one image and a constant or vector.
Matrix addition of two images or one image and a constant or vector.
Matrix unary minues of an image or a number.
Matrix subtraction of two images or one image and a constant or vector.
Matrix division of two images or one image and a constant or vector.
Matrix inequality of two images or one image and a constant or vector.
Matrix less than of two images or one image and a constant or vector.
Matrix bitwise 'left shift' of two images.
Matrix less than or equal of two images or one image and a constant or vector.
Matrix equality of two images or one image and a constant or vector.
Matrix greater than of two images or one image and a constant or vector.
Matrix greater than or equal of two images or one image and a constant or vector.
Matrix bitwise 'right shift' of two images.
Guards if a given value might be reasonably interpreted as a pixel.
Return the image maximum.
Return the image minimum.
Matrix bitwise 'or' of two images.
Functions
Matrix bitwise 'and' of two images.
Matrix exponent of two images or one image and a constant or vector.
Delegates to Kernel.**/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix multiplation of two images or one image and a constant or vector.
Delegates to Kernel.*/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix addition of two images or one image and a constant or vector.
Delegates to Kernel.+/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix unary minues of an image or a number.
Matrix subtraction of two images or one image and a constant or vector.
Delegates to Kernel.-/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix division of two images or one image and a constant or vector.
Delegates to Kernel.//2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix inequality of two images or one image and a constant or vector.
Delegates to Kernel.!=/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix less than of two images or one image and a constant or vector.
Delegates to Kernel.</2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix bitwise 'left shift' of two images.
Matrix less than or equal of two images or one image and a constant or vector.
Delegates to Kernel.<=/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix equality of two images or one image and a constant or vector.
Delegates to Kernel.==/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix greater than of two images or one image and a constant or vector.
Delegates to Kernel.>/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix greater than or equal of two images or one image and a constant or vector.
Delegates to Kernel.>=/2
if none of
the parameters is a Vix.Vips.Image.t/0
.
Matrix bitwise 'right shift' of two images.
@spec add(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec add(Vix.Vips.Image.t(), number()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec add(Vix.Vips.Image.t(), [number(), ...]) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec add(number(), number()) :: {:ok, number()}
@spec add!(Vix.Vips.Image.t(), Image.pixel() | number()) :: Vix.Vips.Image.t() | no_return()
@spec add!(Image.pixel() | number(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec add!(number(), number()) :: number() | no_return()
@spec boolean_and(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec boolean_and!(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec boolean_lshift(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec boolean_lshift!(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec boolean_or(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec boolean_or!(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec boolean_rshift(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec boolean_rshift!(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec boolean_xor(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec boolean_xor!(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec cos(Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()}
@spec cos(number()) :: {:ok, number()}
@spec cos!(Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec divide(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec divide(Vix.Vips.Image.t(), number()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec divide(number(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec divide(Vix.Vips.Image.t(), [number()]) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec divide(number(), number()) :: {:ok, number()}
@spec divide!(Vix.Vips.Image.t(), Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec divide!(Image.pixel(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec divide!(number(), number()) :: number() | no_return()
@spec equal(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec equal(Vix.Vips.Image.t(), Image.pixel()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec equal!(Vix.Vips.Image.t(), Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec equal!(number(), number()) :: number() | no_return()
@spec exp(Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec exp!(Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec greater_than(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec greater_than(Vix.Vips.Image.t(), Image.pixel()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec greater_than!(Vix.Vips.Image.t(), Vix.Vips.Image.t() | Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec greater_than!(number(), number()) :: number() | no_return()
@spec greater_than_or_equal(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec greater_than_or_equal(Vix.Vips.Image.t(), Image.pixel()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec greater_than_or_equal!(Vix.Vips.Image.t(), Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec greater_than_or_equal!(number(), number()) :: number() | no_return()
Guards if a given value might be reasonably interpreted as a pixel.
@spec less_than(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec less_than(Vix.Vips.Image.t(), Image.pixel()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec less_than!(Vix.Vips.Image.t(), Vix.Vips.Image.t() | Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec less_than!(number(), number()) :: number() | no_return()
@spec less_than_or_equal(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec less_than_or_equal(Vix.Vips.Image.t(), Image.pixel()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec less_than_or_equal!(Vix.Vips.Image.t(), Vix.Vips.Image.t() | Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec less_than_or_equal!(number(), number()) :: number() | no_return()
@spec maxpos(Vix.Vips.Image.t(), Keyword.t()) :: {maximum :: float(), x_positiom :: integer(), y_position :: integer()}
Return the image maximum.
Arguments
image
is anyVix.Vips.Image.t/0
.options
is a keyword list of options.
Options
:size
is the number of maximums to find. The default is10
.
Returns
{:ok, maximum, x_position, y_position}
@spec minpos(Vix.Vips.Image.t(), Keyword.t()) :: {minimum :: float(), x_positiom :: integer(), y_position :: integer()}
Return the image minimum.
Arguments
image
is anyVix.Vips.Image.t/0
.options
is a keyword list of options.
Options
:size
is the number of minimums to find. The default is10
.
Returns
{:ok, minimum, x_position, y_position}
@spec multiply(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec multiply(Vix.Vips.Image.t(), number()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec multiply(number(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec multiply(Vix.Vips.Image.t(), list()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec multiply(number(), number()) :: {:ok, number()}
@spec multiply!(Vix.Vips.Image.t(), Image.pixel() | number()) :: Vix.Vips.Image.t() | no_return()
@spec multiply!(Image.pixel() | number(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec multiply!(number(), number()) :: number() | no_return()
@spec not_equal(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec not_equal(Vix.Vips.Image.t(), Image.pixel()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec not_equal!(Vix.Vips.Image.t(), Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec not_equal!(number(), number()) :: number() | no_return()
@spec pow(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec pow(Vix.Vips.Image.t(), number()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec pow(number(), number()) :: {:ok, number()}
@spec pow!(Vix.Vips.Image.t(), number()) :: Vix.Vips.Image.t() | no_return()
@spec pow!(number(), number()) :: number() | no_return()
@spec sin(Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()}
@spec sin(number()) :: {:ok, number()}
@spec sin!(Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec subtract(Vix.Vips.Image.t(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec subtract(Vix.Vips.Image.t(), number()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec subtract(Vix.Vips.Image.t(), [number()]) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec subtract(number(), Vix.Vips.Image.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec subtract(number(), number()) :: {:ok, number()}
@spec subtract!(Vix.Vips.Image.t(), Image.pixel()) :: Vix.Vips.Image.t() | no_return()
@spec subtract!(Image.pixel(), Vix.Vips.Image.t()) :: Vix.Vips.Image.t() | no_return()
@spec subtract!(number(), number()) :: number() | no_return()
Matrix bitwise 'or' of two images.