• 《国家人文历史》往期杂志汇总 2019-04-22
  • 一师一团土地确权登记颁证工作全面展开 2019-04-14
  • 德州扑克赌场披“俱乐部”外衣 打竞技旗号难掩赌博实质 2019-04-12
  • 自治区党委召开常委(扩大)会议 陈全国主持 2019-04-12
  • 17年来首次!塔利班组织宣布停火3天 与阿富汗民众自拍 2019-04-04
  • 2022年冬奥会筹备进行时 2019-04-03
  • 人家80年前就造航母,我们现在才造航母,基础不一样。 2019-04-03
  • 葡萄牙首都上演城市节狂欢 2019-04-01
  • RED EARTH红地球展现自我丝绒唇膏全新发布 2019-03-24
  • 龙船礼 有讲究 百岁龙 抖精神 2019-03-17
  • 新加坡航空将开通 全球最长商业航线 2019-03-17
  • 传说中的自由飞“翔” 当厕所被狂风吹上天 2019-03-12
  • 导游强迫交易获刑 曾辱骂威胁强迫游客消费上万元--旅游频道 2019-03-09
  • 北京正式推出租赁型职工集体宿舍 每间居住人数不超8人 2019-03-09
  • 美元短线拉升 随后回吐涨幅 2019-03-07
  • Welcome to

    Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

     

    Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage

    Reply
     
    Thread Tools Search this Thread Display Modes
    Old 15th March 2019, 22:55   #1  |  Link
    Registered User
     
    Join Date: Feb 2013
    Posts: 161
    Gamma settings - in YUV with preservation of saturation

    How to set gamma correctly in YUV, without convert to RGB (less rounding errors, without banding)

    Code:
    levels(0,1.32,255,0,255)
    tweak(sat...)
    dark parts are desaturated, light ones are oversaturated...


    The right way but converting to RGB:

    Code:
    converttorgb32
    levels(0,1.32,255,0,255)
    converttoyv12
    or the same:

    Code:
    converttorgb32
    RGBAdjust(rg=...,gg =...,bg=...)
    converttoyv12

    There are 2 ways:

    1) convert to "deeper bit" (or float) RGB -> change gamma -> convert back to YUV (slow)


    2) make it all "in one step" = stay in YUV:

    a) change gamma in luma
    b) change "saturation" of chroma "adaptively", in relation to each pixel value of luma (lower luma means higher saturation lost by gamma change)

    something like this (but it's still not ok):

    Code:
    y = converttoy8()
    u = utoy8()
    v = vtoy8()
    
    y_adjusted = mt_lut("x 16 - 219 / 1 1.32 / ^ 219 * 16 +", chroma="copy")
    y_scaled   = y.bilinearresize(width(u),height(u))
    u_adjusted = mt_lutxy(u,y_scaled,"x 128 - y 16 - 219 / 1 1.32 / ^ 219 * 16 + y / * 128 +")
    v_adjusted = mt_lutxy(v,y_scaled,"x 128 - y 16 - 219 / 1 1.32 / ^ 219 * 16 + y / * 128 +")
    
    ytouv(u_adjusted,v_adjusted,y_adjusted)

    In a nutshell:

    We take the gamma adjusted luma value of each pixel and divide it by the original luma value of each pixel.
    This gives a coefficient for each pixel to multiply the saturation adjustment according to the gamma change.
    The greater the luma change, the greater the saturation lost.

    Last edited by Stormborec; 17th March 2019 at 14:01.
    Stormborec is offline   Reply With Quote
    Old 16th March 2019, 02:22   #2  |  Link
    Registered User
     
    Join Date: Jul 2011
    Location: Tennessee, USA
    Posts: 257
    Quote:
    Originally Posted by Stormborec View Post
    Code:
    converttorgb32
    RGBAdjust(rg=...,gg =...,bg=...)
    converttoyv12
    Above is the only example that affects chroma's gamma. The others affect only luma's gamma. gamma_u and gamma_v have no effect -- which is clearly stated in the system documentation for ColorYUV:
    Quote:
    gamma adjusts gamma of the specified channel. A value of 0 is the same as gamma 1.0. When the value is set to 256 it is the same as gamma 2.0. The value is valid down to -256, where it is the same as gamma 0.0. Note: gamma for chroma is not implemented (gamma_u and gamma_v are dummy parameters).
    So, which gamma are you trying to work with? luma in YUV or chroma in RGB? In YUV, luma and chroma are stored separately. In RGB, "color" and "brightness" are integral.
    LemMotlow is offline   Reply With Quote
    Old 16th March 2019, 08:47   #3  |  Link
    Registered User
     
    Join Date: Feb 2013
    Posts: 161
    Quote:
    So, which gamma are you trying to work with? luma in YUV or chroma in RGB?
    In YUV (thus without color space conversion) but with the same result like in RGB...
    Stormborec is offline   Reply With Quote
    Old 16th March 2019, 10:38   #4  |  Link
    HeartlessS Usurer
     
    StainlessS's Avatar
     
    Join Date: Dec 2009
    Location: Over the rainbow
    Posts: 6,487
    Well I know that you are familiar with ColorYUV2 (as you have posted about it before), but here anyways in case you forgot:- //www.zs-x.com/showthread.p...ight=colorYUV2

    Groucho also has 64 bit build of it, in his stuff.



    Also RgbAdapt has RPow/SPow stuff. //www.zs-x.com/showthread.p...light=RgbAdapt




    EDIT: And demo of the iMin, iMax, OMin, OMax stuff (mask creation or whatever) [EDIT: Grid turned off].


    EDIT: Also, VirtualDub2 has some kind of 6 axis RGB adjustment function thingy.

    EDIT:
    Quote:
    In YUV (thus without color space conversion) but with the same result like in RGB...
    Nobody knows how to do it properley in YUV, Gamma is an RGB concept.
    __________________
    I sometimes post sober.
    [email protected] ::: AND/OR ::: [email protected]

    "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

    Last edited by StainlessS; 16th March 2019 at 21:33.
    StainlessS is offline   Reply With Quote
    Old 16th March 2019, 11:13   #5  |  Link
    Registered User
     
    Join Date: Feb 2013
    Posts: 161
    These tools can calculate proper values e.g. from RGBAdjust to ColorYUV ?
    Stormborec is offline   Reply With Quote
    Old 16th March 2019, 11:20   #6  |  Link
    HeartlessS Usurer
     
    StainlessS's Avatar
     
    Join Date: Dec 2009
    Location: Over the rainbow
    Posts: 6,487
    Nobody knows how to do it properley in YUV, Gamma is an RGB concept.
    __________________
    I sometimes post sober.
    [email protected] ::: AND/OR ::: [email protected]

    "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
    StainlessS is offline   Reply With Quote
    Reply

    Tags
    gamma correction


    Posting Rules
    You may not post new threads
    You may not post replies
    You may not post attachments
    You may not edit your posts

    BB code is On
    Smilies are On
    [IMG] code is On
    HTML code is Off

    Forum Jump


    All times are GMT +1. The time now is 09:28.


    Powered by vBulletin® Version 3.8.11
    Copyright ©2000 - 2019, vBulletin Solutions Inc.
  • 《国家人文历史》往期杂志汇总 2019-04-22
  • 一师一团土地确权登记颁证工作全面展开 2019-04-14
  • 德州扑克赌场披“俱乐部”外衣 打竞技旗号难掩赌博实质 2019-04-12
  • 自治区党委召开常委(扩大)会议 陈全国主持 2019-04-12
  • 17年来首次!塔利班组织宣布停火3天 与阿富汗民众自拍 2019-04-04
  • 2022年冬奥会筹备进行时 2019-04-03
  • 人家80年前就造航母,我们现在才造航母,基础不一样。 2019-04-03
  • 葡萄牙首都上演城市节狂欢 2019-04-01
  • RED EARTH红地球展现自我丝绒唇膏全新发布 2019-03-24
  • 龙船礼 有讲究 百岁龙 抖精神 2019-03-17
  • 新加坡航空将开通 全球最长商业航线 2019-03-17
  • 传说中的自由飞“翔” 当厕所被狂风吹上天 2019-03-12
  • 导游强迫交易获刑 曾辱骂威胁强迫游客消费上万元--旅游频道 2019-03-09
  • 北京正式推出租赁型职工集体宿舍 每间居住人数不超8人 2019-03-09
  • 美元短线拉升 随后回吐涨幅 2019-03-07
  • 高频彩技巧论坛 京东彩票提现 下载彩票软件 排列三开奖 北京赛车下注软件 6场半全场胜负游戏 北京快乐8猜大小 福彩3d字谜图谜 香港六合彩开奖记录 排列五开奖号码 网上北京赛车预测软件 重庆幸运农场开奖历史开奖 北京单场奖金封顶么 幸运农场推荐号 pk10赛车定位技巧 极速时时彩有猫腻吗