分页: 1 / 4

logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2012-03-23 2:25
06_taro
大蝦的這個教程裡用了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)"。

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2012-03-23 7:25
Shir1yn
一大早就看到taro大放出的好東東

有空玩玩

{:cat_16}

上班去...........囧

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2012-03-23 12:28
4h4h270
好物~拜谢收下~

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2012-04-14 13:19
julseven9920
擷取.JPG
遇到錯誤 {:cat_15}
另一個ts 沒這錯誤...

代码: 全选

dlg = src.EraseLOGO("D:\CTC 1440x1080.lgd")
Import("D:\logoNR_v0.1.avsi")
logoNR(dlg, src, chroma=true, GPU=true, l=1275, t=60, r=100, b=80)

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2012-04-14 13:50
06_taro
翻譯一下:
Crop: YUV圖像切邊必須用2的倍數(左邊)

logoNR(dlg, src, chroma=true, GPU=true, l=1275, t=60, r=100, b=80)

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2012-04-14 13:59
julseven9920
原來要用2的倍數...
謝大神

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2013-06-23 0:01
南宫恨
2.jpg
2.jpg (25.57 KiB) 查看 34662 次
出现这个问题。。

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2013-06-23 10:55
msg7086
南宫恨 写了:出现这个问题。。
你的代码有错

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2013-06-23 16:59
Billy Herrington
keep your cropped clip larger than 64x64

Re: logoNR v0.1 - EraseLOGO的後處理NR腳本

发表于 : 2013-06-24 21:39
南宫恨
msg7086 写了:
南宫恨 写了:出现这个问题。。
你的代码有错
恩,新上手所以笨笨的,连提问都没问好,惭愧啊 {:cat_12}

不过我想问问
我想给一个mv视频去标,有没有办法扫出来的logo类似于png这种纯无背景格式呢? {:cat_18} 否则总会在视频上留下矩形框框

另外,我处理的这个视频有的地方看不出来,有的地方却会又冒出来?难道是因为这个标在不同的地方浓度不一样么? {:cat_8} 那是不是就得分段去标,生成两种浓度的标?(扫标的时候最麻烦的就是那些无效的帧= =可怜啊,好像去不干净的就是那些无效扫描的区域)
1.jpg
2.jpg
3.jpg
图三感觉logo倒是去了,logo外又不和谐了……是自动处理了么?

代码: 全选

logoNR(dlg, src,chroma = True, GPU=true,nr="RemoveGrain(30,30)")