View Single Post
Old 13th May 2021, 22:00   #16  |  Link
StvG
Registered User
 
Join Date: Jul 2018
Posts: 450
Quote:
Originally Posted by Dogway View Post
I don't think so. RGB isn't space agnostic. When you convert from Rec601 YUV to RGB format you do it with Rec601 coefficients and end with RGB in Rec601 color space.
Assuming the RGB is in Rec709 as in RGBToYCbCr(RGBToYCbCr_mat("709")) is therefore wrong without a prior gamut conversion between 601 and 709.
Actually that way you're converting only matrix from 601(470bg) to 709 keeping transfer and primaries the same.
Here:
Code:
ColorBars(pixel_type="yuv444p16")
z_ConvertFormat(colorspace_op="601:709:709:l=>709:709:709:l",resample_filter="spline36",  dither_type="none")
Subtitle(""" z_ConvertFormat(colorspace_op="601:709:709:l=>709:709:709:l",\nresample_filter="spline36",  dither_type="none") """, lsp=1)
Code:
ColorBars(pixel_type="yuv444p16")
ConvertToRGB()
ConvertToYUV444(matrix="Rec709")
Subtitle(""" ConvertToRGB()\nConvertToYUV444(matrix="Rec709") """, lsp=1)
Code:
ColorBars(pixel_type="yuv444p16")
ConvertYUVToLinearRGB(Color=3, outputmode=2)
ConvertLinearRGBToYUV()
Subtitle(""" ConvertYUVToLinearRGB(Color=3, outputmode=2)\nConvertLinearRGBToYUV() """, lsp=1)
Code:
ColorBars(pixel_type="yuv444p16")
Import("TransformsPack.v1.0.RC1.avsi")
YCbCrToRGB(YCbCrToRGB_mat("601")).RGBToYCbCr(RGBToYCbCr_mat("709"))
Subtitle(""" YCbCrToRGB(YCbCrToRGB_mat("601")) \n RGBToYCbCr(RGBToYCbCr_mat("709")) """, lsp=1)
Code:
ColorBars(pixel_type="yuv444p16")
ConvertToStacked()
Dither_convert_yuv_to_rgb(matrix="601")
Dither_convert_rgb_to_yuv(matrix="709", output="YV24",lsb=true)
DitherPost(mode=-1)
ConvertFromStacked()
Subtitle("""Dither_convert_yuv_to_rgb(matrix="601")\nDither_convert_rgb_to_yuv(matrix="709", output="YV24",lsb=true)\nDitherPost(mode=-1) """, lsp=1)
Results: https://imgbox.com/g/nyDydHExob (z.lib, dither and internal functions have visible identical results)

So from the first post:
Code:
ConvertBits(16)
z_ConvertFormat(pixel_type="YUV420P16",colorspace_op="601:601:709:l=>709:709:709:l", dither_type="none")
Above is not equivalent of:

Code:
ConvertBits(16)
ColorSpace("601","709","bicubic","bicubic",true,false)
The last code doesn't do only matrix conversion but primaries and transfer too:
Code:
ColorBars(pixel_type="yuv444p16")
z_ConvertFormat(colorspace_op="601:470bg:470bg:l=>709:709:709:l",resample_filter="spline36",  dither_type="none")
Subtitle(""" z_ConvertFormat(colorspace_op="601:470bg:470bg:l=>709:709:709:l",\nresample_filter="spline36",  dither_type="none") """, lsp=1)
Code:
ColorBars(pixel_type="yuv444p16")
ConvertYUVtoXYZ(Color=3, outputmode=2).ConvertXYZtoYUV(Color=2, pColor=3)
Subtitle("""ConvertYUVtoXYZ(Color=3, outputmode=2).ConvertXYZtoYUV(Color=2, pColor=3) """, lsp=1)
Code:
ColorBars(pixel_type="yuv444p16")
Import("TransformsPack.v1.0.RC1.avsi")
ColorSpace("601","709","spline36","spline36",true,false)
Subtitle("""ColorSpace("601","709","spline36","spline36",true,false) """, lsp=1)
Results: https://imgbox.com/g/sTti4whkcx
StvG is offline   Reply With Quote