module CrImage::MapImpl(T)
Overview
A collection of implementations of NumericMap(T), intended to be included in base classes.
See IntMap, FloatMap, and ComplexMap.
Included Modules
Direct including types
Defined in:
cr-image/map.crConstructors
- .new(width : Int32, height : Int32, initial : T)
- .new(width : Int32, raw : Array(T))
- .new(other : Array(Array(T)))
- .new(width : Int32, height : Int32, &)
Instance Method Summary
-
#*(num : Int | Float) : self
Multiply each point in this
Mapbynum -
#+(num : Int | Float) : self
Add each point in this
Mapbynum -
#+(other : self) : self
Add each point of this
Mapwith each point inother - #-(other : NumericMap(T)) : self
-
#-(num : Int) : self
Subtract each point in this
Mapbynum -
#-(num : Float) : FloatMap
Subtract each point in this
Mapbynum -
#/(num : Int | Float) : FloatMap
Divides each point in this
Mapbynum -
#<(num : Int | Float) : Mask
Construct a
Maskidentifying all pixels smaller thannum. -
#<=(num : Int | Float) : Mask
Construct a
Maskidentifying all pixels smaller than or equal tonum. -
#==(num : Int | Float) : Mask
Construct a
Maskidentifying all pixels equal tonum -
#==(other : self) : Bool
Check if this
Mapis equal toother -
#>(num : Int | Float) : Mask
Construct a
Maskidentifying all pixels larger thannum. -
#>=(num : Int | Float) : Mask
Construct a
Maskidentify all pixels larger than or equal tonum. -
#[](xstart : Int32, xcount : Int32, ystart : Int32, ycount : Int32) : self
Crop the map to the values contained from
xstartout byxcount, andystartout byycount -
#[](x : Int32, y : Int32) : T
Get element at coordinates
xandy -
#[](xrange : Range, ystart : Int32) : self
Crop the map, returning only the values in row at
ystart -
#[](xstart : Int32, yrange : Range) : self
Crop the map, returning only the values in column at
xstart -
#[](xrange : Range, yrange : Range) : self
Crop the map to the values contained in
xrangeandyrange -
#[](index : Int32) : T
Get element at
indexfrom underlying#rawArray. -
#[]?(x : Int32, y : Int32) : T | Nil
Get lement at coordinates
xandy, ornilif coordinates are out of bounds -
#[]?(index : Int32) : T | Nil
Get element at
index, ornilif out of bounds -
#column(x : Int32) : self
Get a single dimensional
Maprepresenting teh column atx -
#cross_correlate(template : Map, *, edge_policy : EdgePolicy = EdgePolicy::Repeat) : FloatMap
Perform a brute force cross correlation calculation with provided
template. -
#cross_correlate_fft(template : Map, *, edge_policy : EdgePolicy = EdgePolicy::Black) : FloatMap
Perform a Fast Fourier Transform cross correlation (convolution?) with provided
template. -
#fft : ComplexMap
Performe a Fast Fourier Transform, padding out this
Mapso dimensions are a power of 2. - #height : Int32
-
#mask_from(&block : T, Int32, Int32 -> Bool) : Mask
Construct a
Maskfrom thisGrayscaleImageusing the passed in block to determine if a given pixel should be true or not -
#max : T
Return the maximum value in this
Map -
#mean : Float64
Return the average of the elements in this
Map -
#min : T
Return the minimum value in this
Map -
#pad(all : Int32 = 0, *, top : Int32 = 0, bottom : Int32 = 0, left : Int32 = 0, right : Int32 = 0, pad_type : EdgePolicy = EdgePolicy::Black, pad_black_value : T = T.zero) : self
Pad the borders of this
Mapcorresponding topad_type. -
#raw : Array(T)
Return the raw array underlying the map
-
#row(y : Int32) : self
Get a single dimensional
Maprepresenting the row aty -
#shape : Tuple(Int32, Int32)
Return the shape of the map -
{width, height} -
#size : Int32
Size of the map -
width * height -
#sum : T
Return the sum of all values in this
Map -
#to_a : Array(T)
Receive a copy of the underlying
#rawarray. -
#to_c : ComplexMap
Convert this
Mapto aComplexMap -
#to_gray(*, scale : Bool = false) : GrayscaleImage
Convert this
Mapto aGrayscaleImage. - #width : Int32
Instance methods inherited from module CrImage::NumericMap(T)
+(other : NumericMap(T)) : NumericMap(T)
+,
-(other : NumericMap(T)) : NumericMap(T)
-,
max : T
max,
min : T
min,
sum : T
sum,
to_c : NumericMap(Complex)
to_c,
to_f : NumericMap(Float64)
to_f,
to_i : NumericMap(Int32)
to_i
Instance methods inherited from module CrImage::Map(T)
[](x : Int32, y : Int32) : T[](index : Int32) : T [], []?(x : Int32, y : Int32) : T | Nil
[]?(index : Int32) : T | Nil []?, height : Int32 height, shape : Tuple(Int32, Int32) shape, size : Int32 size, width : Int32 width
Constructor Detail
Instance Method Detail
Divides each point in this Map by num
TODO ComplexMap shouldn't return a FloatMap
Construct a Mask identifying all pixels smaller than num.
gray = image.to_gray # Convert color image to grayscale
mask = gray < 128 # Generate a threshold mask
mask.to_gray.save("greater_than_example.jpg") # Convert and save the mask as a black and white image
Construct a Mask identifying all pixels smaller than or equal to num. See #< for example.
Construct a Mask identifying all pixels equal to num
Construct a Mask identifying all pixels larger than num.
gray = image.to_gray # Convert color image to grayscale
mask = gray > 128 # Generate a threshold mask
mask.to_gray.save("greater_than_example.jpg") # Convert and save the mask as a black and white image
Construct a Mask identify all pixels larger than or equal to num. See #> for near example.
Crop the map to the values contained from xstart out by xcount, and ystart out by ycount
Crop the map, returning only the values in row at ystart
Crop the map, returning only the values in column at xstart
Crop the map to the values contained in xrange and yrange
Get lement at coordinates x and y, or nil if coordinates are out of bounds
Perform a brute force cross correlation calculation with provided template.
Perform a Fast Fourier Transform cross correlation (convolution?) with provided template. See FftUtil
Construct a Mask from this GrayscaleImage using the passed in block to determine if a given pixel should be true or not
# Construct a mask identifying the bright pixels in the bottom left corner of image
image.to_gray.mask_from do |pixel, x, y|
x < image.width // 2 && # left half of image
y > (image.height // 2) && # bottom half of image
pixel > 128 # only "bright" pixels
end
->
Pad the borders of this Map corresponding to pad_type.
Convert this Map to a GrayscaleImage.
Set scale: true so that all of the values will scale, such that #max will become 255u8, and #min will become 0u8. All other values will be
linearly scaled between those values.