dwing吧 关注:5,690贴子:89,323
  • 19回复贴,共1

请问是否有区分画面复杂度(complexity)的mask

只看楼主收藏回复

在看Taro大在2012年写的MaskTools入門教程https://www.nmm-hd.org/newbbs/viewtopic.php?f=7&t=770
时看到这样一段话:
“畫面複雜度(complexity)是圖像處理裡非常重要的一個屬性,高複雜度的區域與低複雜度的區域往往需要不同的處理,譬如由於最後一次壓制過程導致的banding,往往只出現在畫面的低複雜度區域,而不出現在高複雜度區域,因此用一個mask來限定deband的範圍不包括高複雜度區域可以較好地保護這種區域的細節。Complexity mask的實現算法相對來說比較複雜,通常配合DCT計算AC/DC variance得到的結果比較好,而靠masktools做的話效果可能並不算理想。而且因為這個實現過程需要有較大的鄰域範圍,而masktools當鄰域範圍增大時處理速度會下降地比較厲害,而不用較大的範圍得到的結果可能不夠理想。不管怎樣,我們先來用一個試驗:[syntax lang="avisynth"]
dif_med = mt_makediff(mt_luts(last, "med", pixels=mt_circle(3), expr="y"))
c_mask = mt_lutsx(dif_med, dif_med, dif_med, "std", pixels=mt_circle(3), expr="y 2 ^")
\ .mt_expand.mt_inflate(chroma="128") # 為了後面截圖用了chroma="128",實際使用可以去掉[/syntax]
這是一個很簡單的模擬方式,先取鄰域內的中值,然後用mt_makediff來求得像素與鄰域中值之差。在複雜度較高、細節豐富的區域鄰域中值和中心像素點間的差值在鄰域內的標準差較高(好拗口…),因此衡量這個標準差可以模擬出一個複雜度mask”
在处理老DVD时也遇到了前文提到的这种问题,就是低复杂度暗场有大范围严重的banding,希望能够有一个mask把这部分区域分离出来,在vs里的fuction里没有找到luts对应的滤镜,而调用avs运行又非常慢,在mmd搜索了很多次没有再找到类似的讨论话题,把avs和vs官网的滤镜都寻找了一遍,也没有找到具有这样功能的滤镜,然后就放弃了尝试。
后来无意中又看到2014年的一个讨论帖有写到:
“mask高頻對低頻時域降噪試試,aq稍微高一點呢? ”
“mask配合mdegrain开土炮的话,frequency-based不行,很多情况是烂噪点仅在黑衣,而背景如墙壁等同为低频。
luma-bias也不行,人物面部阴影处(如眼眶、鼻翼)的噪点轻易被抹,面相失了立体感。
vaq有调试。haq同。”
又一次激起了我的希望,所以想请教一下这个“mask高頻”是如何做到的?
由于帖子年代久远,里面的大神都神隐许久了,没有办法得到回复,所以来这里请教一下大家。


IP属地:山东1楼2018-12-05 20:52回复
    所以你要建立这样的mask是想做什么样的处理


    IP属地:江苏来自Android客户端2楼2018-12-05 21:15
    回复(5)
      2025-08-12 08:37:18
      广告
      不感兴趣
      开通SVIP免广告
      另外,vs是可以加载avs的masktools用的


      IP属地:江苏来自Android客户端3楼2018-12-05 21:18
      回复(2)
        如果想分离出暗场的话,可以自己设定一个亮度,然后该亮度以下的标黑,该亮度以上的标白。


        4楼2018-12-05 21:44
        回复(2)
          按方差的思路写了个试试(你可以试一下,说不定再处理处理能用
          Y = xvs.getY(src).fmtc.bitdepth(bits=16)
          avg = core.std.Convolution(Y,[1]*7, mode='h').std.Convolution([1]*7, mode='v')
          e_x2=core.std.Convolution(avg.std.Expr("x x *",vs.GRAYS),[1]*9)
          ex_2=core.std.Convolution(avg,[1]*9).std.Expr("x x *",vs.GRAYS)
          last = core.std.Expr([e_x2,ex_2],"x y - 2 /",vs.GRAY16)


          IP属地:江苏5楼2018-12-05 22:33
          回复(5)
            如果仅是为了检测复杂度,在deband上通常为区分高频信息和低频信息
            应该选择各种edge检测滤镜,比如TCanny,这比用卷积、Expr、Lut慢慢糊要方便得多
            然后deband的时候请用non-noise clip……先轰个降噪把噪点抠出来,deband完之后再把噪点打回去,这样能避免deband破坏噪点


            IP属地:广西6楼2018-12-20 23:01
            回复