[分享] 攝影機拍攝毛片雜訊處理方法

作者: cbreak (cbreak)   2013-08-05 18:35:23
大家好: 相信大家在拍攝上多少會遇到雜訊的問題,我們總是希望用 "最快速" "最沒有副作用" "最能保留清晰度與色彩" 的方式去除雜訊,但這三點往往無法同時滿足,如著名的N**tVideo / M*g*c Bullet 除雜訊插件雖然效果很不錯,但處理時間卻非常久,且我們的拍攝片段也不一定是很重的雜訊,也許只是一點點色塊的長時間拍攝記錄,我們通常不太可能會去花時間使用耗時的降噪處理‧因此小弟在此分享自己過去處理影片雜訊的方法與經驗,希望對大家有用!
我們先來看看幾張圖片:
http://dl.dropboxusercontent.com/s/fzr6e3k1qgrly6d/NR01.JPG 圖一:原圖
http://dl.dropboxusercontent.com/s/96lviip3cxg85ee/NR02.JPG 圖二:去除色彩雜訊
http://dl.dropboxusercontent.com/s/ghex09bx1529amm/NR03.JPG 圖三:原圖灰階化
http://dl.dropboxusercontent.com/s/hmvx91trw7ey7j2/NR04.JPG 圖四:去除色彩及亮度(時間軸平滑)雜訊
http://dl.dropboxusercontent.com/s/1kqzdli36j6oyom/NR05.JPG 圖五:去除色彩及亮度(空間及時間軸平滑)雜訊
http://dl.dropboxusercontent.com/s/vf14q9uo0ixzefz/NR06.JPG 圖六:黑畫面80分鐘
http://dl.dropboxusercontent.com/s/tk17ibalxuxi8xn/NR07.JPG 圖七
恩恩!看了這幾張圖片,應該有對我們要討論的主題比較有感覺了,接著我們就開始來探討吧!
一、雜訊的種類:
雜訊若依呈現的形式來分,可分為:
1. 色彩雜訊:如原圖,我們可以感覺到有花花綠綠的點或色斑(紅綠藍),這種雜訊在單CCD/CMOS的機子上通常會較明顯,原因是Bayer濾鏡對色彩是有"估算"的成分在,一但感測器提供的SNR(通常是低光環境)開始降低,再用SNR不高的像素群去估算色彩,當然會估算成錯的‧
2. 亮度雜訊:單純的亮度不帶顏色,是以亮點或暗點(灰點)的方式展現,看起來的感覺就是畫面有雜點在閃‧
所以首先呢,要先確定您的拍攝片段裡,雜訊是屬於哪一種的‧不過事實上,這兩種雜訊通常是伴隨一起出現的,只是程度的表現不同而已‧如我們去除圖一的色彩雜訊後,在圖二中我們依然可以看到有雜點,那就是亮度雜訊‧到此我先提四點:
(1)人眼對亮度比對色彩敏感‧
(2)去除色彩雜訊通常不會影響影像清晰度,只會稍微影響色彩(色彩階層)‧
(3)去除亮度雜訊通常就必須適度與清晰度妥協‧
(4)把影像灰階化(如圖三)做測試,若因此看不到任何雜訊了,表示您的影片只有色彩雜訊,沒有亮度雜訊‧恭喜您! 這是最好處理,也最沒有副作用的,色除色彩雜訊後,畫面幾乎就是乾淨的‧(但圖三是有亮度雜訊的)
二、雜訊的處理
依雜訊處理的方式,可分為兩大類:
1.空間(spatial)軸:照片的後製去雜訊處理就是此方式,也應該只有此種方式‧因為單一張照片要去除雜訊,當然只能在此照片裡找尋,例如跟鄰近的像素做平均,或一些較複雜的方式,如Bilateral、NL-Means....等,這是寫論文的在研究的,我們只要知道大概就好‧總之就是想辦法在同一個畫面(Frame)中拿別塊來補(平均)這塊,或單一個點太亮了,所以猜他很可能就是雜訊所以削弱他,來達到減少雜訊的效果‧
2.時間(temporal)軸:
有用過相機"連拍六張合成"吧! 其實原理是一樣的,因為雜訊通常是閃動的,所以連續六個(或N個)Frame雜訊都不太一樣,我們可以將這多個Frame做平均,雜訊就會變小了! 但細節上是要考慮到一些問題,如權重及閥值等,才不會造成移動時有拖影‧時間軸的做法從單純的線性、DCT、FFT都有‧FFT是分析閃動的頻率(要從時間軸去看),然後把高頻去除,達到去除閃動雜訊的效果‧
到此我們再提出幾點:
(1)3D-NR即是空間+時間軸的NR‧
(2)不管空間軸還是時間軸NR,都還是可以色彩與亮度分開(或單純)處理的‧
(3)時間軸處理通常較空間軸處理較不會影響清晰度‧
OK,您可以再回頭看一次上面的圖,應該更了解了吧!
三、開始來雜訊:
首先,您要準備兩種工具,avisynth與virtualdub‧這兩個是影像處理工具,上面都可掛一堆實用的濾鏡,我目前發現最實用的去雜訊濾鏡就是在這兩平台上‧(反而不是在非編軟體上)‧但這兩者的使用方法,煩請問一下Google大神了,恕在此不多做介紹‧
OK,我來說一下我用過的眾多去雜訊濾鏡,我認為最實用的吧!
情況一,畫面只有輕微色斑:建議使用avisynth的Cnr2(),只去除色彩雜訊就好‧速度非常快,完全跟得上撥放速度,幾乎沒感覺‧Cnr2("ooo", 255, 5, 192, 6, 214, 6, 214, false, false)
情況二,比情況一多了些微雜點閃動:多加上avisynth的hqdn3d(0,0,4,0)來平滑亮度雜訊,幾乎不太影響清晰度,處理速度稍微慢一點‧
情況三,色斑嚴重(如圖一),也有亮度雜訊:使用hqdn3d(0,0,6,0)再加上virtualdub的CCD(30,0),速度再慢一些,處理完就如圖四,清晰度還OK‧
情況四,經過上述處理後還是覺得有雜訊:把hqdn3d(0,0,6,0)改成hqdn3d(4,0,6,0)成為圖五,雜訊可降更低,但清晰度有妥協,影像沒層次呆呆的‧
情況五,以上全部都不滿意:也許就只能試試看N**tVideo / M*g*c Bullet這一類的商業軟體,但處理時間會變成5到10倍!
四、結論:
每一種去雜訊濾鏡其實多少都有副作用,會造成一些人工痕跡,如hqdn3d(0,0,10,0)大概就可以感覺到有拖影了! 上面分享給大家的參數是我自己測試過不太感覺出副作用的值,當然大家還是可以再試試看,也許可以找出更適合的參數設置‧:)
五、連結:
Cnr2:
http://avisynth.org.ru/docs/english/externalfilters/cnr2.htm
hqdn3d:
http://akuvian.org/src/avisynth/hqdn3d/
CCD(Camcorder Color Denoise):
http://acobw.narod.ru/
另外有興趣還可以試試:
FFT3DFilter(3D):
http://avisynth.org.ru/fft3dfilter/fft3dfilter.html
DCTFun4b(空間軸):
http://avisynth.org/warpenterprises/files/dctfun4b_25_dll_20060205.zip
您可以將上面hqdn3d(4,0,6,0)改成hqdn3d(0,0,6,0)加上dctfun4b(4,0),也就是將空間去亮度雜訊的任務交給DCTFun4b,處理時間會再更多一些,但是結果會比圖五再銳利一點點(只是一點點),如圖七‧

Links booklink

Contact Us: admin [ a t ] ucptt.com