logoNR v0.1 - EraseLOGO的後處理NR腳本
发表于 : 2012-03-23 2:25
大蝦的這個教程裡用了EPSlice來處理EraseLOGO的事後菊。不過如果全片裡沒有顯示logo的畫面比較多的話,這些畫面的logo區域會有比較明顯的blur副作用。即使是有logo的畫面,因為是在一個矩形內做的nr,有時候也能比較明顯地看出來這個與其他部分不同的矩形框。於是搞了這個logoNR來替代EPSlice的處理,始終只處理logo部分,即使是在設定的矩形框內也不會對其中的背景有過大影響(其實最主要用處還是前者。無logo的畫面不會有副作用什麼的可以省下ConditionalFilter的心思……)
Download:logoNR_v0.1.avsi
OR
[syntax lang="avisynth" lines="f" filename="logoNR_v0.1.avsi"]#################################################
### ###
### logoNR ###
### ###
### by 06_taro - astrataro@gmail.com ###
### ###
### v0.1 - 22 March 2012 ###
### ###
#################################################
###
### Post-denoise filter of EraseLogo.
### Only process logo areas in logo frames, even if l/t/r/b are not set. Non-logo areas are left untouched.
###
###
### +---------+
### | USAGE |
### +---------+
###
### src = AviSource("input.avi")
### dlg = src.EraseLOGO("logo.lgd")
### logoNR(dlg, src, chroma=true, GPU=true, l=1280, t=40, r=-40, b=-960)
###
### dlg [clip]
### ------------------
### Clip after delogo.
###
### src [clip]
### ------------------
### Clip before delogo.
###
### chroma [bool, default: True]
### ------------------
### Process chroma plane or not.
###
### GPU [bool, default: True]
### ------------------
### Use FFT3DGPU instead of FFT3DFilter, will be ignored when "nr" is set.
###
### l/t/r/b [int, default: 0]
### ------------------
### left/top/right/bottom pixels to be cropped for logo area.
### Have the same restriction as Crop, e.g., no odd value for YV12.
### logoNR only filters the logo areas in logo frames, no matter l/t/r/b are set or not.
### So if you have other heavy filters running in a pipeline and don't care much about the speed of logoNR,
### it is safe to left these values unset.
### Setting these values only makes logoNR run faster, with rarely noticeable difference in result,
### unless you set wrong values and the logo is not covered in your cropped target area.
###
### nr [string]
### ------------------
### Set your custom nr filter to process logo areas, e.g., nr="RemoveGrain(4, 4)".
###
### +----------------+
### | REQUIREMENTS |
### +----------------+
###
### -> FFT3DFilter or FFT3DGPU, or your custom nr filter's requirements
### -> MaskTools2
### -> RemoveGrain
###
### +-----------+
### | CHANGELOG |
### +-----------+
###
### v0.1 - 22 Mar 2012
### - First release
###
Function logoNR(clip dlg, clip src, bool "chroma", bool "GPU", int "l", int "t", int "r", int "b", string "nr"){
chroma = Default(chroma, True)
GPU = Default(GPU, True)
l = Default(l, 0)
t = Default(t, 0)
r = Default(r, 0)
b = Default(b, 0)
b_crop = l==0 && t==0 && r==0 && b==0 ? false : true
src = b_crop ? src.Crop(l, t, r, b) : src
last = b_crop ? dlg.Crop(l, t, r, b) : dlg
clp_nr = Defined(nr) ? Eval(nr)
\ : GPU ? FFT3DGPU(sigma=4, plane=chroma?4:0)
\ : FFT3DFilter(sigma=4, plane=chroma?4:0)
logoM = mt_lutxy(src, "x y - Abs 4 <<", U=chroma?3:1, V=chroma?3:1)
\ .mt_expand(mode=mt_diamond(3), U=chroma?3:1, V=chroma?3:1)
\ .RemoveGrain(19, chroma?19:-1)
\ .mt_deflate(U=chroma?3:1, V=chroma?3:1)
clp_nr = mt_merge(clp_nr, logoM, U=chroma?3:2, V=chroma?3:2)
return b_crop ? Overlay(dlg, clp_nr, x=l, y=t) : clp_nr
}
[/syntax]
使用方法:
src = AviSource("input.avi")
dlg = src.EraseLOGO("logo.lgd")
logoNR(dlg, src, chroma=true, GPU=true, l=1280, t=40, r=-40, b=-960)
實際上l/t/r/b是否設置基本不影響結果。logoNR始終都只對logo區域做處理,非logo區域與無logo幀完全不會動。設置了l/t/r/b時處理範圍更小,所以速度會快得多。不設置而直接一個 logoNR(dlg, src) 轟過去也只是速度比較慢而已,不會有諸如非logo區域被blur或者無logo幀也處理之類的任何副作用。如果是用MP_pipeline來加速,譬如delogo專門放在一個slave裡做,而後面又有慢得多的處理的話,此時後面的處理處於瓶頸,CPU完全佔不滿的情況下整體速度可能沒什麼區別。想偷懶不量crop區域還是crop來加速看自己情況吧。如果做七八個不同電視台的TS,台標都在右上角,位置略有不同,或者是電視台台標位置突然變了之類的情況,都可以直接 logoNR(src, l=1000, t=0, r=0, b=-800) 這樣粗略地crop,反正範圍過大也沒有副作用,速度上也相差不大。
參數說明:
dlg [clip]
------------------
delogo之後的clip.
src [clip]
------------------
delogo之前的clip.
chroma [bool, default: True]
------------------
是否處理chroma平面.
GPU [bool, default: True]
------------------
用FFT3DGPU還是FFT3DFilter。當自定義"nr"的時候會被忽略。
l/t/r/b [int, default: 0]
------------------
crop參數。和crop一樣有正負,這點與EPSlice略有不同。
nr [string]
------------------
自定義處理logo區域用的nr濾鏡來代替logoNR的預設,譬如nr="RemoveGrain(4,4)"。
Download:logoNR_v0.1.avsi
OR
[syntax lang="avisynth" lines="f" filename="logoNR_v0.1.avsi"]#################################################
### ###
### logoNR ###
### ###
### by 06_taro - astrataro@gmail.com ###
### ###
### v0.1 - 22 March 2012 ###
### ###
#################################################
###
### Post-denoise filter of EraseLogo.
### Only process logo areas in logo frames, even if l/t/r/b are not set. Non-logo areas are left untouched.
###
###
### +---------+
### | USAGE |
### +---------+
###
### src = AviSource("input.avi")
### dlg = src.EraseLOGO("logo.lgd")
### logoNR(dlg, src, chroma=true, GPU=true, l=1280, t=40, r=-40, b=-960)
###
### dlg [clip]
### ------------------
### Clip after delogo.
###
### src [clip]
### ------------------
### Clip before delogo.
###
### chroma [bool, default: True]
### ------------------
### Process chroma plane or not.
###
### GPU [bool, default: True]
### ------------------
### Use FFT3DGPU instead of FFT3DFilter, will be ignored when "nr" is set.
###
### l/t/r/b [int, default: 0]
### ------------------
### left/top/right/bottom pixels to be cropped for logo area.
### Have the same restriction as Crop, e.g., no odd value for YV12.
### logoNR only filters the logo areas in logo frames, no matter l/t/r/b are set or not.
### So if you have other heavy filters running in a pipeline and don't care much about the speed of logoNR,
### it is safe to left these values unset.
### Setting these values only makes logoNR run faster, with rarely noticeable difference in result,
### unless you set wrong values and the logo is not covered in your cropped target area.
###
### nr [string]
### ------------------
### Set your custom nr filter to process logo areas, e.g., nr="RemoveGrain(4, 4)".
###
### +----------------+
### | REQUIREMENTS |
### +----------------+
###
### -> FFT3DFilter or FFT3DGPU, or your custom nr filter's requirements
### -> MaskTools2
### -> RemoveGrain
###
### +-----------+
### | CHANGELOG |
### +-----------+
###
### v0.1 - 22 Mar 2012
### - First release
###
Function logoNR(clip dlg, clip src, bool "chroma", bool "GPU", int "l", int "t", int "r", int "b", string "nr"){
chroma = Default(chroma, True)
GPU = Default(GPU, True)
l = Default(l, 0)
t = Default(t, 0)
r = Default(r, 0)
b = Default(b, 0)
b_crop = l==0 && t==0 && r==0 && b==0 ? false : true
src = b_crop ? src.Crop(l, t, r, b) : src
last = b_crop ? dlg.Crop(l, t, r, b) : dlg
clp_nr = Defined(nr) ? Eval(nr)
\ : GPU ? FFT3DGPU(sigma=4, plane=chroma?4:0)
\ : FFT3DFilter(sigma=4, plane=chroma?4:0)
logoM = mt_lutxy(src, "x y - Abs 4 <<", U=chroma?3:1, V=chroma?3:1)
\ .mt_expand(mode=mt_diamond(3), U=chroma?3:1, V=chroma?3:1)
\ .RemoveGrain(19, chroma?19:-1)
\ .mt_deflate(U=chroma?3:1, V=chroma?3:1)
clp_nr = mt_merge(clp_nr, logoM, U=chroma?3:2, V=chroma?3:2)
return b_crop ? Overlay(dlg, clp_nr, x=l, y=t) : clp_nr
}
[/syntax]
使用方法:
src = AviSource("input.avi")
dlg = src.EraseLOGO("logo.lgd")
logoNR(dlg, src, chroma=true, GPU=true, l=1280, t=40, r=-40, b=-960)
實際上l/t/r/b是否設置基本不影響結果。logoNR始終都只對logo區域做處理,非logo區域與無logo幀完全不會動。設置了l/t/r/b時處理範圍更小,所以速度會快得多。不設置而直接一個 logoNR(dlg, src) 轟過去也只是速度比較慢而已,不會有諸如非logo區域被blur或者無logo幀也處理之類的任何副作用。如果是用MP_pipeline來加速,譬如delogo專門放在一個slave裡做,而後面又有慢得多的處理的話,此時後面的處理處於瓶頸,CPU完全佔不滿的情況下整體速度可能沒什麼區別。想偷懶不量crop區域還是crop來加速看自己情況吧。如果做七八個不同電視台的TS,台標都在右上角,位置略有不同,或者是電視台台標位置突然變了之類的情況,都可以直接 logoNR(src, l=1000, t=0, r=0, b=-800) 這樣粗略地crop,反正範圍過大也沒有副作用,速度上也相差不大。
參數說明:
dlg [clip]
------------------
delogo之後的clip.
src [clip]
------------------
delogo之前的clip.
chroma [bool, default: True]
------------------
是否處理chroma平面.
GPU [bool, default: True]
------------------
用FFT3DGPU還是FFT3DFilter。當自定義"nr"的時候會被忽略。
l/t/r/b [int, default: 0]
------------------
crop參數。和crop一樣有正負,這點與EPSlice略有不同。
nr [string]
------------------
自定義處理logo區域用的nr濾鏡來代替logoNR的預設,譬如nr="RemoveGrain(4,4)"。