diff --git a/kornia/color/yuv.py b/kornia/color/yuv.py index 1334be10894..bf620c83ed3 100644 --- a/kornia/color/yuv.py +++ b/kornia/color/yuv.py @@ -11,7 +11,13 @@ def rgb_to_yuv(image: Tensor) -> Tensor: .. image:: _static/img/rgb_to_yuv.png - The image data is assumed to be in the range of (0, 1). + The image data is assumed to be in the range of :math:`(0, 1)`. The range of the output is of + :math:`(0, 1)` to luma and the ranges of U and V are :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, + respectively. + + The YUV model adopted here follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Args: image: RGB Image to be converted to YUV with shape :math:`(*, 3, H, W)`. @@ -45,8 +51,14 @@ def rgb_to_yuv(image: Tensor) -> Tensor: def rgb_to_yuv420(image: Tensor) -> Tuple[Tensor, Tensor]: r"""Convert an RGB image to YUV 420 (subsampled). - The image data is assumed to be in the range of (0, 1). Input need to be padded to be evenly divisible by 2 - horizontal and vertical. This function will output chroma siting (0.5,0.5) + Input need to be padded to be evenly divisible by 2 horizontal and vertical. + + The image data is assumed to be in the range of :math:`(0, 1)`. The range of the output is of :math:`(0, 1)` to + luma and the ranges of U and V are :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + The YUV model adopted here follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Args: image: RGB Image to be converted to YUV with shape :math:`(*, 3, H, W)`. @@ -76,8 +88,15 @@ def rgb_to_yuv420(image: Tensor) -> Tuple[Tensor, Tensor]: def rgb_to_yuv422(image: Tensor) -> Tuple[Tensor, Tensor]: r"""Convert an RGB image to YUV 422 (subsampled). - The image data is assumed to be in the range of (0, 1). Input need to be padded to be evenly divisible by 2 - vertical. This function will output chroma siting (0.5) + Input need to be padded to be evenly divisible by 2 vertical. + + The image data is assumed to be in the range of :math:`(0, 1)`. The range of the output is of + :math:`(0, 1)` to luma and the ranges of U and V are :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, + respectively. + + The YUV model adopted here follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Args: image: RGB Image to be converted to YUV with shape :math:`(*, 3, H, W)`. @@ -107,7 +126,12 @@ def rgb_to_yuv422(image: Tensor) -> Tuple[Tensor, Tensor]: def yuv_to_rgb(image: Tensor) -> Tensor: r"""Convert an YUV image to RGB. - The image data is assumed to be in the range of (0, 1) for luma and (-0.5, 0.5) for chroma. + The image data is assumed to be in the range of :math:`(0, 1)` for luma (Y). The ranges of U and V are + :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Args: image: YUV Image to be converted to RGB with shape :math:`(*, 3, H, W)`. @@ -141,9 +165,14 @@ def yuv_to_rgb(image: Tensor) -> Tensor: def yuv420_to_rgb(imagey: Tensor, imageuv: Tensor) -> Tensor: r"""Convert an YUV420 image to RGB. - The image data is assumed to be in the range of (0, 1) for luma and (-0.5, 0.5) for chroma. Input need to be padded to be evenly divisible by 2 horizontal and vertical. - This function assumed chroma siting is (0.5, 0.5) + + The image data is assumed to be in the range of :math:`(0, 1)` for luma (Y). The ranges of U and V are + :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Args: imagey: Y (luma) Image plane to be converted to RGB with shape :math:`(*, 1, H, W)`. @@ -192,8 +221,14 @@ def yuv420_to_rgb(imagey: Tensor, imageuv: Tensor) -> Tensor: def yuv422_to_rgb(imagey: Tensor, imageuv: Tensor) -> Tensor: r"""Convert an YUV422 image to RGB. - The image data is assumed to be in the range of (0, 1) for luma and (-0.5, 0.5) for chroma. - Input need to be padded to be evenly divisible by 2 vertical. This function assumed chroma siting is (0.5) + Input need to be padded to be evenly divisible by 2 vertical. + + The image data is assumed to be in the range of :math:`(0, 1)` for luma (Y). The ranges of U and V are + :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Args: imagey: Y (luma) Image plane to be converted to RGB with shape :math:`(*, 1, H, W)`. @@ -236,7 +271,11 @@ def yuv422_to_rgb(imagey: Tensor, imageuv: Tensor) -> Tensor: class RgbToYuv(Module): r"""Convert an image from RGB to YUV. - The image data is assumed to be in the range of (0, 1). + The image data is assumed to be in the range of :math:`(0, 1)`. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Returns: YUV version of the image. @@ -261,7 +300,13 @@ def forward(self, input: Tensor) -> Tensor: class RgbToYuv420(Module): r"""Convert an image from RGB to YUV420. - The image data is assumed to be in the range of (0, 1). Width and Height evenly divisible by 2. + Width and Height evenly divisible by 2. + + The image data is assumed to be in the range of :math:`(0, 1)`. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Returns: YUV420 version of the image. @@ -286,7 +331,13 @@ def forward(self, yuvinput: Tensor) -> Tuple[Tensor, Tensor]: # skipcq: PYL-R02 class RgbToYuv422(Module): r"""Convert an image from RGB to YUV422. - The image data is assumed to be in the range of (0, 1). Width evenly disvisible by 2. + Width must be evenly disvisible by 2. + + The image data is assumed to be in the range of :math:`(0, 1)`. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Returns: YUV422 version of the image. @@ -311,7 +362,12 @@ def forward(self, yuvinput: Tensor) -> Tuple[Tensor, Tensor]: # skipcq: PYL-R02 class YuvToRgb(Module): r"""Convert an image from YUV to RGB. - The image data is assumed to be in the range of (0, 1) for luma and (-0.5, 0.5) for chroma. + The image data is assumed to be in the range of :math:`(0, 1)` for luma (Y). The ranges of U and V are + :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Returns: RGB version of the image. @@ -333,8 +389,14 @@ def forward(self, input: Tensor) -> Tensor: class Yuv420ToRgb(Module): r"""Convert an image from YUV to RGB. - The image data is assumed to be in the range of (0, 1) for luma and (-0.5, 0.5) for chroma. - Width and Height evenly divisible by 2. + Width and Height must be evenly divisible by 2. + + The image data is assumed to be in the range of :math:`(0, 1)` for luma (Y). The ranges of U and V are + :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Returns: RGB version of the image. @@ -358,8 +420,14 @@ def forward(self, inputy: Tensor, inputuv: Tensor) -> Tensor: # skipcq: PYL-R02 class Yuv422ToRgb(Module): r"""Convert an image from YUV to RGB. - The image data is assumed to be in the range of (0, 1) for luma and (-0.5, 0.5) for chroma. - Width evenly divisible by 2. + Width must be evenly divisible by 2. + + The image data is assumed to be in the range of :math:`(0, 1)` for luma (Y). The ranges of U and V are + :math:`(-0.436, 0.436)` and :math:`(-0.615, 0.615)`, respectively. + + YUV formula follows M/PAL values (see + `BT.470-5 `_, Table 2, + items 2.5 and 2.6). Returns: RGB version of the image.