Your ad could be here - Reach CV/ML engineers
Contact for advertisingContactInterested in advertising?
Contact usStay updated
News & Insightsalbumentations.augmentations.other.type_transform
Transforms for type conversion between float and other data types. This module provides transform classes for converting image data types, primarily for converting between floating point and integer representations. These transforms are useful for preprocessing before neural network input (ToFloat) and for converting network outputs back to standard image formats (FromFloat).
FromFloatclass
Convert an image from floating point representation to the specified data type. This transform is designed to convert images from a normalized floating-point representation (typically with values in the range [0, 1]) to other data types, scaling the values appropriately.
Parameters
Name | Type | Default | Description |
---|---|---|---|
dtype | One of:
| uint8 | The desired output data type. Supported types include 'uint8', 'uint16', 'uint32'. Default: 'uint8'. |
max_value | One of:
| None | The maximum value for the output dtype. If None, the transform will attempt to infer the maximum value based on the dtype. Default: None. |
p | float | 1.0 | Probability of applying the transform. Default: 1.0. |
Examples
>>> import numpy as np
>>> import albumentations as A
>>> transform = A.FromFloat(dtype='uint8', max_value=None, p=1.0)
>>> image = np.random.rand(100, 100, 3).astype(np.float32) # Float image in [0, 1] range
>>> result = transform(image=image)
>>> uint8_image = result['image']
>>> assert uint8_image.dtype == np.uint8
>>> assert uint8_image.min() >= 0 and uint8_image.max() <= 255
Notes
- This is the inverse transform for ToFloat. - Input images are expected to be in floating point format with values in the range [0, 1]. - For integer output types (uint8, uint16, uint32), the function will scale the values to the appropriate range (e.g., 0-255 for uint8). - For float output types (float32, float64), the values will remain in the [0, 1] range. - The transform uses the `from_float` function internally, which ensures output values are within the valid range for the specified dtype.
ToFloatclass
Convert the input image to a floating-point representation. This transform divides pixel values by `max_value` to get a float32 output array where all values lie in the range [0, 1.0]. It's useful for normalizing image data before feeding it into neural networks or other algorithms that expect float input.
Parameters
Name | Type | Default | Description |
---|---|---|---|
max_value | One of:
| None | The maximum possible input value. If None, the transform will try to infer the maximum value by inspecting the data type of the input image: - uint8: 255 - uint16: 65535 - uint32: 4294967295 - float32: 1.0 Default: None. |
p | float | 1.0 | Probability of applying the transform. Default: 1.0. |
Returns
- np.ndarray: Image in floating point representation, with values in range [0, 1.0].
Examples
>>> import numpy as np
>>> import albumentations as A
>>>
# Convert uint8 image to float
>>> image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)
>>> transform = A.ToFloat(max_value=None)
>>> float_image = transform(image=image)['image']
>>> assert float_image.dtype == np.float32
>>> assert 0 <= float_image.min() <= float_image.max() <= 1.0
>>>
# Convert uint16 image to float with custom max_value
>>> image = np.random.randint(0, 4096, (100, 100, 3), dtype=np.uint16)
>>> transform = A.ToFloat(max_value=4095)
>>> float_image = transform(image=image)['image']
>>> assert float_image.dtype == np.float32
>>> assert 0 <= float_image.min() <= float_image.max() <= 1.0
Notes
- If the input image is already float32 with values in [0, 1], it will be returned unchanged. - For integer types (uint8, uint16, uint32), the function will scale the values to [0, 1] range. - The output will always be float32, regardless of the input type. - This transform is often used as a preprocessing step before applying other transformations or feeding the image into a neural network.