日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

视频智能去水印:从数学建模到工程实现

發(fā)布時(shí)間:2025/3/8 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 视频智能去水印:从数学建模到工程实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

羅偉

網(wǎng)易資深研發(fā)工程師

先后參與KMS流媒體服務(wù)器及NTS分布式任務(wù)處理系統(tǒng)的開發(fā)

作者簡介

大部分時(shí)候,為了表明作品來源,我們需要對(duì)拍攝制作的圖片或者視頻加上水印logo。不過,我們有時(shí)候也需要對(duì)視頻已經(jīng)加上的水印進(jìn)行移除處理,然后加上新的水印。加水印的自動(dòng)處理是很容易實(shí)現(xiàn)的,而檢測并去除水印的自動(dòng)處理就有相當(dāng)?shù)奶魬?zhàn)性了。

?

問題已經(jīng)拋出,網(wǎng)易云信的分布式視頻處理系統(tǒng),于近期發(fā)布了支持視頻自動(dòng)去水印的轉(zhuǎn)碼功能,我們是怎么自動(dòng)化、智能化地解決這一問題的呢?

?

其實(shí)很簡單,它總共分三步:

  • 分析并檢測出視頻所有水印的區(qū)域;

  • 根據(jù)區(qū)域?qū)@些水印進(jìn)行移除處理;

  • 加上新的水印。

  • ?

    細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn),這事情"簡單"地好比如何把大象放進(jìn)冰箱,那我們就來試試把大象放進(jìn)冰箱。

    ?

    本文分三個(gè)部分來描述:數(shù)學(xué)建模、工程實(shí)現(xiàn)、實(shí)際效果。

    數(shù)學(xué)建模

    因?yàn)橐曨l是由一幀一幀的圖像組成,所以視頻去水印其實(shí)就是一組圖像的去水印。這部分內(nèi)容比較偏學(xué)術(shù),筆者爭取描述得通俗易懂。

    1-1 image matting問題

    視頻去水印的本質(zhì)是multi-image matting問題,圖像處理中的image matting問題最早由Alvy Ray Smith在其SIGGRAPH論文《Blue screen matting》中提出和定義,中文意思就是摳圖。

    ?

    AlvyRay Smith認(rèn)為一張圖片I,應(yīng)該由前景F和背景B合成,合成方式就是通過透明度α來操作。在不同的區(qū)域兩者的比例不一樣,對(duì)于只有背景的地方,前景的參與比例為0%,對(duì)于只有前景的地方,背景的參與比例為0%。具體公式如下:

    ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    可以看出來,matting問題研究的是,如何通過左邊的I,推測出右邊的三個(gè)變量α、F和B,方程數(shù)量嚴(yán)重少于未知數(shù)數(shù)量,理論上是無精確解的,實(shí)際工程上根據(jù)不同場景或者一些先驗(yàn)前提,我們是可以一定程度上求出近似解的,不過其難度仍然巨大。

    ?

    這項(xiàng)技術(shù)主要被用在電影工業(yè)中,比如你在觀看一些電影花絮視頻時(shí),有時(shí)會(huì)看到拍攝現(xiàn)場有綠色背景和一群穿著綠色衣服的工作人員,這些都會(huì)在后期的摳圖技術(shù)下被摳掉換上“真正的”背景。這種Blue Screen Matting 技術(shù),使用純色背景可以確保前景被準(zhǔn)確摳出。

    ?

    在2001年的CVPR會(huì)議上,貝葉斯公式被引入解決matting問題,在04年的SIGGRAPH上,MSRA的Jian Sun等人發(fā)表了基于泊松方程的Poisson Matting這篇文章,其實(shí)際上是將透明度作為圖像的一種內(nèi)在屬性—“場”,變向地尋求其最優(yōu)解。后來同在MSRA工作的KaiMing He,在圖像去霧算法中發(fā)現(xiàn)了暗通道先驗(yàn),并獲得2009年的CVPR最佳論文。

    ?

    1-2 水印估計(jì)與去除算法

    今年,Google在CVPR2017會(huì)議上發(fā)表了一篇去水印的論文《On the Effectiveness of Visible Watermarks》,其幾近完美地解決了具有共同水印的一組圖像去水印問題,研究人員提出了廣義的multi-image matting模型。

    ?

    對(duì)于水印圖像 J ,我們認(rèn)為其通過將水印 W 疊加到自然圖像 I 來獲得,類似于上面的公式,可以有下面的公式:

    ?

    其中p =(x,y)是像素位置,α(p)是空間變化的不透明度,最常用的水印是半透明的,以保持底層的圖像內(nèi)容部分可見。

    ?

    給定W和α,可以對(duì)每個(gè)像素進(jìn)行計(jì)算操作來獲取原圖像:

    ?

    如果沒有先驗(yàn)信息,單獨(dú)給予J來恢復(fù)I的問題是非常困難的,因?yàn)槊總€(gè)像素點(diǎn)都有三個(gè)未知的(W,α,I)變量和一個(gè)約束方程。

    ?

    但是,大部分場景下,水印是以一致的方式添加到一組圖像中,所以,對(duì)于圖像集合{Ik},由相同的W和α標(biāo)記,我們有(為了簡潔省略像素索引p):

    ?

    換句話說,我們的目標(biāo)是,給定{Jk} k = 1…K,恢復(fù)W,α和{Ik} k = 1..K。大致算法如下:

    ?

    A、估計(jì)檢測水印

    ?

    廣義上來說,在一組圖像中將所有圖像中屬于水印的圖像結(jié)構(gòu)檢測還原出來,這是一個(gè)先有雞還是先有蛋的問題,因?yàn)樗D像內(nèi)容的檢測估計(jì)和水印的區(qū)域位置是相互依賴的關(guān)系。對(duì)于有共同水印的一組圖像來說(視頻),即W(p)相同,這將不是問題。

    ?

    B、多圖像匹配和重建

    ?

    有了所有圖像中水印的檢測位置信息,我們可以真正解決 multi-image matting problem,即由J 得到 W 、α、原始圖像 I,這一部分是核心步驟,在后文的工程實(shí)現(xiàn)中我們會(huì)詳細(xì)描述我們的實(shí)現(xiàn)。

    ?

    C、刪除新圖像中的水印

    ?

    有了W和α,根據(jù)公式我們就可以輕松地將任意新圖像中的水印去除,當(dāng)然前提是使用了相同的 W和α。

    工程實(shí)現(xiàn)

    2-1 模塊框架

    引擎的整體框架模塊如下:

    ?

    如上圖所示,左側(cè)是視頻的水印檢測,與谷歌的算法不盡一致,但是核心思路是一致的,仍然是對(duì)所有圖像幀進(jìn)行迭代處理,最終收斂出水印圖像的結(jié)構(gòu)。為提升運(yùn)行效率,我們未必需要將所有的視頻幀提取出來,當(dāng)視頻幀數(shù)量較多時(shí),我們會(huì)進(jìn)行跨幀的提取,丟棄一些GOP,避免不必要的解碼運(yùn)算。

    ?

    右側(cè)則是對(duì)視頻中所有的圖像進(jìn)行水印去除操作,其依賴左側(cè)模塊所計(jì)算得出的水印信息。

    2-2 算法實(shí)現(xiàn)

    我們選擇了一個(gè)示例視頻,展示這個(gè)過程。

    ?

    (1)記錄圖片序列每個(gè)位置最大值和最小值,并確定每個(gè)位置的像素值范圍。由于在添加水印時(shí)的算法通常如下:

    因此水印添加區(qū)的像素范圍為:

    當(dāng)α值小于0.5時(shí),水印添加區(qū)的像素范圍低于127,因此標(biāo)記像素范圍小于127的區(qū)域?yàn)橛行^(qū)域

    ?

    (2)對(duì)圖片逐幀水平垂直方向梯度進(jìn)行疊加,無水印區(qū)域是動(dòng)態(tài)區(qū)域,在空間域上梯度期望為0,即:

    在水印與邊界交界處,梯度期望不為0,例如在邊界(????0,????0) ,有:

    (3)針對(duì)有效區(qū)域內(nèi)的梯度圖使用Canny算子進(jìn)行運(yùn)算,初步標(biāo)記的區(qū)域如下圖所示:

    ?

    ?

    (4)可以看出有部分靜態(tài)區(qū)域也被識(shí)別出紋理,由于水印區(qū)域邊界的梯度值并不穩(wěn)定,因此水印區(qū)域的邊緣梯度線呈現(xiàn)出非連續(xù)狀態(tài),可通過去除長線段的方式去除非水印靜態(tài)區(qū)域邊緣梯度線段,處理后的效果如下:

    ?

    ?

    (5)此時(shí)可發(fā)現(xiàn)水印區(qū)域紋理密度要遠(yuǎn)高于其它區(qū)域,對(duì)圖像進(jìn)行均值濾波,然后通過大津閾值法對(duì)圖像進(jìn)行二值化,處理后的效果如下所示:

    ?

    (6)最后通過連通域算法和聚類算法,過濾掉不符合規(guī)定的區(qū)域,從而確定水印區(qū)域,結(jié)果如下所示:

    ?

    ?

    效果展示

    ?

    我們重新選取一個(gè)視頻,經(jīng)過我們的去水印引擎,可以自動(dòng)檢測出水印位置,并進(jìn)行去除操作,效果圖見下面的圖和視頻。

    ?

    去除水印之后的視頻,如下:

    ?


    【推薦閱讀】Android短視頻中如何實(shí)現(xiàn)720P磨皮美顏錄制

    總結(jié)

    以上是生活随笔為你收集整理的视频智能去水印:从数学建模到工程实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。