#
VAE Image Processor

The `VaeImageProcessor` provides a unified API for StableDiffusionPipelines to prepare image inputs for VAE encoding and post-processing outputs once they’re decoded. This includes transformations such as resizing, normalization, and conversion between PIL Image, PyTorch, and NumPy arrays.

All pipelines with `VaeImageProcessor` accept PIL Image, PyTorch tensor, or NumPy arrays as image inputs and return outputs based on the `output_type` argument by the user. You can pass encoded image latents directly to the pipeline and return latents from the pipeline as a specific output with the `output_type` argument (for example `output_type="latent"`). This allows you to take the generated latents from one pipeline and pass it to another pipeline as input without leaving the latent space. It also makes it much easier to use multiple pipelines together by passing PyTorch tensors directly between different pipelines.

##
VaeImageProcessor

###
class diffusers.image_processor.VaeImageProcessor

< source >

( do_resize: bool = True vae_scale_factor: int = 8 resample: str = 'lanczos' do_normalize: bool = True do_binarize: bool = False do_convert_rgb: bool = False do_convert_grayscale: bool = False )

Parameters

- do_resize (`bool`, optional, defaults to `True`) — Whether to downscale the image’s (height, width) dimensions to multiples of `vae_scale_factor`. Can accept `height` and `width` arguments from image_processor.VaeImageProcessor.preprocess() method.
- vae_scale_factor (`int`, optional, defaults to `8`) — VAE scale factor. If `do_resize` is `True`, the image is automatically resized to multiples of this factor.
- resample (`str`, optional, defaults to `lanczos`) — Resampling filter to use when resizing the image.
- do_normalize (`bool`, optional, defaults to `True`) — Whether to normalize the image to [-1,1].
- do_binarize (`bool`, optional, defaults to `False`) — Whether to binarize the image to 0/1.
- do_convert_rgb (`bool`, optional, defaults to be `False`) — Whether to convert the images to RGB format.
- do_convert_grayscale (`bool`, optional, defaults to be `False`) — Whether to convert the images to grayscale format.

Image processor for VAE.

####
apply_overlay

< source >

( mask: Image init_image: Image image: Image crop_coords: typing.Union[typing.Tuple[int, int, int, int], NoneType] = None )

overlay the inpaint output to the original image

####
binarize

< source >

( image: Image ) →
`PIL.Image.Image`

Parameters

- image (`PIL.Image.Image`) — The image input, should be a PIL image.

Returns

`PIL.Image.Image`

The binarized image. Values less than 0.5 are set to 0, values greater than 0.5 are set to 1.

Create a mask.

####
blur

< source >

( image: Image blur_factor: int = 4 )

Applies Gaussian blur to an image.

####
convert_to_grayscale

< source >

( image: Image )

Converts a PIL image to grayscale format.

####
convert_to_rgb

< source >

( image: Image )

Converts a PIL image to RGB format.

####
denormalize

< source >

( images: typing.Union[numpy.ndarray, torch.Tensor] )

Denormalize an image array to [0,1].

####
get_crop_region

< source >

( mask_image: Image width: int height: int pad = 0 ) →
tuple

Parameters

- mask_image (PIL.Image.Image) — Mask image.
- width (int) — Width of the image to be processed.
- height (int) — Height of the image to be processed.
- pad (int, optional) — Padding to be added to the crop region. Defaults to 0.

Returns

tuple

(x1, y1, x2, y2) represent a rectangular region that contains all masked ares in an image and matches the original aspect ratio.

Finds a rectangular region that contains all masked ares in an image, and expands region to match the aspect ratio of the original image; for example, if user drew mask in a 128x32 region, and the dimensions for processing are 512x512, the region will be expanded to 128x128.

####
get_default_height_width

< source >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] height: typing.Optional[int] = None width: typing.Optional[int] = None )

Parameters

- image(`PIL.Image.Image`, `np.ndarray` or `torch.Tensor`) — The image input, can be a PIL image, numpy array or pytorch tensor. if it is a numpy array, should have shape `[batch, height, width]` or `[batch, height, width, channel]` if it is a pytorch tensor, should have shape `[batch, channel, height, width]`.
- height (`int`, optional, defaults to `None`) — The height in preprocessed image. If `None`, will use the height of `image` input.
- width (`int`, optional`, defaults to` None`) -- The width in preprocessed. If` None`, will use the width of the` image` input.

This function return the height and width that are downscaled to the next integer multiple of `vae_scale_factor`.

####
normalize

< source >

( images: typing.Union[numpy.ndarray, torch.Tensor] )

Normalize an image array to [-1,1].

####
numpy_to_pil

< source >

( images: ndarray )

Convert a numpy image or a batch of images to a PIL image.

####
numpy_to_pt

< source >

( images: ndarray )

Convert a NumPy image to a PyTorch tensor.

####
pil_to_numpy

< source >

( images: typing.Union[typing.List[PIL.Image.Image], PIL.Image.Image] )

Convert a PIL image or a list of PIL images to NumPy arrays.

####
postprocess

< source >

( image: FloatTensor output_type: str = 'pil' do_denormalize: typing.Optional[typing.List[bool]] = None ) →
`PIL.Image.Image`, `np.ndarray` or `torch.FloatTensor`

Parameters

- image (`torch.FloatTensor`) — The image input, should be a pytorch tensor with shape `B x C x H x W`.
- output_type (`str`, optional, defaults to `pil`) — The output type of the image, can be one of `pil`, `np`, `pt`, `latent`.
- do_denormalize (`List[bool]`, optional, defaults to `None`) — Whether to denormalize the image to [0,1]. If `None`, will use the value of `do_normalize` in the `VaeImageProcessor` config.

Returns

`PIL.Image.Image`, `np.ndarray` or `torch.FloatTensor`

The postprocessed image.

Postprocess the image output from tensor to `output_type`.

####
preprocess

< source >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.FloatTensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.FloatTensor]] height: typing.Optional[int] = None width: typing.Optional[int] = None resize_mode: str = 'default' crops_coords: typing.Union[typing.Tuple[int, int, int, int], NoneType] = None )

Parameters

- image (`pipeline_image_input`) — The image input, accepted formats are PIL images, NumPy arrays, PyTorch tensors; Also accept list of supported formats.
- height (`int`, optional, defaults to `None`) — The height in preprocessed image. If `None`, will use the `get_default_height_width()` to get default height.
- width (`int`, optional`, defaults to` None`) -- The width in preprocessed. If` None`, will use get_default_height_width()` to get the default width.
- resize_mode (`str`, optional, defaults to `default`) — The resize mode, can be one of `default` or `fill`. If `default`, will resize the image to fit within the specified width and height, and it may not maintaining the original aspect ratio. If `fill`, will resize the image to fit within the specified width and height, maintaining the aspect ratio, and then center the image within the dimensions, filling empty with data from image. If `crop`, will resize the image to fit within the specified width and height, maintaining the aspect ratio, and then center the image within the dimensions, cropping the excess. Note that resize_mode `fill` and `crop` are only supported for PIL image input.
- crops_coords (`List[Tuple[int, int, int, int]]`, optional, defaults to `None`) — The crop coordinates for each image in the batch. If `None`, will not crop the image.

Preprocess the image input.

####
pt_to_numpy

< source >

( images: FloatTensor )

Convert a PyTorch tensor to a NumPy image.

####
resize

< source >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] height: int width: int resize_mode: str = 'default' ) →
`PIL.Image.Image`, `np.ndarray` or `torch.Tensor`

Parameters

- image (`PIL.Image.Image`, `np.ndarray` or `torch.Tensor`) — The image input, can be a PIL image, numpy array or pytorch tensor.
- height (`int`) — The height to resize to.
- width (`int`) — The width to resize to.
- resize_mode (`str`, optional, defaults to `default`) — The resize mode to use, can be one of `default` or `fill`. If `default`, will resize the image to fit within the specified width and height, and it may not maintaining the original aspect ratio. If `fill`, will resize the image to fit within the specified width and height, maintaining the aspect ratio, and then center the image within the dimensions, filling empty with data from image. If `crop`, will resize the image to fit within the specified width and height, maintaining the aspect ratio, and then center the image within the dimensions, cropping the excess. Note that resize_mode `fill` and `crop` are only supported for PIL image input.

Returns

`PIL.Image.Image`, `np.ndarray` or `torch.Tensor`

The resized image.

Resize image.

##
VaeImageProcessorLDM3D

The `VaeImageProcessorLDM3D` accepts RGB and depth inputs and returns RGB and depth outputs.

###
class diffusers.image_processor.VaeImageProcessorLDM3D

< source >

( do_resize: bool = True vae_scale_factor: int = 8 resample: str = 'lanczos' do_normalize: bool = True )

Parameters

- do_resize (`bool`, optional, defaults to `True`) — Whether to downscale the image’s (height, width) dimensions to multiples of `vae_scale_factor`.
- vae_scale_factor (`int`, optional, defaults to `8`) — VAE scale factor. If `do_resize` is `True`, the image is automatically resized to multiples of this factor.
- resample (`str`, optional, defaults to `lanczos`) — Resampling filter to use when resizing the image.
- do_normalize (`bool`, optional, defaults to `True`) — Whether to normalize the image to [-1,1].

Image processor for VAE LDM3D.

####
depth_pil_to_numpy

< source >

( images: typing.Union[typing.List[PIL.Image.Image], PIL.Image.Image] )

Convert a PIL image or a list of PIL images to NumPy arrays.

####
numpy_to_depth

< source >

( images: ndarray )

Convert a NumPy depth image or a batch of images to a PIL image.

####
numpy_to_pil

< source >

( images: ndarray )

Convert a NumPy image or a batch of images to a PIL image.

####
preprocess

< source >

( rgb: typing.Union[torch.FloatTensor, PIL.Image.Image, numpy.ndarray] depth: typing.Union[torch.FloatTensor, PIL.Image.Image, numpy.ndarray] height: typing.Optional[int] = None width: typing.Optional[int] = None target_res: typing.Optional[int] = None )

Preprocess the image input. Accepted formats are PIL images, NumPy arrays or PyTorch tensors.

####
rgblike_to_depthmap

< source >

( image: typing.Union[numpy.ndarray, torch.Tensor] )

Returns: depth map