背景介紹
需求背景
屏幕共享是視頻會議場景使用最廣泛的功能之一,在共享一個 PPT 或者文檔的情況下,人們對畫面清晰度有著極高的要求,“看不清” 是最容易被用戶吐槽的事情;而在共享一個視頻素材的情況下,大家又對流暢度有著極高的要求,“卡頓” 也是最容易被用戶吐槽的點。
為了更好地同時滿足用戶對清晰度和流暢度的要求,視頻會議軟件通常會設計兩種模式:
- 清晰模式:主打清晰度,盡量保持高分辨率(如:最高 4K 原畫質),帶寬或性能不足的時候,只降低幀率(如:從 30fps -> 5fps),不降低分辨率。
- 流暢模式:主打流暢度,盡量提升幀率(如:最高 30fps),帶寬或性能不足的時候,優先降低分辨率(如:從 4K -> 720p),最后才考慮降幀率。通常情況下,默認選擇“清晰模式”,當用戶要共享視頻的時候,需要自己 “手動” 點擊勾選上 “流暢度優先”按鈕。
一般的做法是,讓用戶在共享屏幕時手動來勾選“清晰模式”還是“流暢模式”。但在實際的產品場景中,用戶對這兩種模式的感知并不是很強烈,不太可能要求用戶在共享屏幕的過程中手動來回切換當前的共享模式,對用戶體驗影響比較大。
一種簡單的方案是根據用戶共享內容的文件后綴名來決定是“清晰度優先”還是“流暢度優先”,比如共享 PPT 時自動切換為“清晰模式”,共享視頻時自動切換為“流暢模式”,但是這樣設計會遇到一些問題:比如用戶的 PPT 里嵌入了一段視頻,在播放這段視頻時理應追求“流暢度優先”;而如果用戶視頻其實是一段 PPT 的教學錄屏,里面有大量的時間在播放靜止的文字和畫面,這時候“流暢模式”則會導致這些關鍵內容顯得模糊。
RTC 要如何幫助用戶及時調整最佳的共享模式呢?
需求分析
需求功能分析
痛點:
用戶分享視頻內容需要高幀率,而文字/ppt 需要高清晰度,這兩種場景的需求是互相矛盾的,如果需要用戶手動勾選相應的共享模式,不僅操作繁瑣,也容易漏選、錯選。
如何解決:
需要研發一個算法自動識別共享內容,進而確定當前是需要高幀率還是需要高清晰度。這樣,在用戶想要清晰畫面的時候,產品就提供清晰的畫面,用戶想要流暢的視頻體驗時,產品就盡可能地保障屏幕畫面的流暢性,用戶在無感知的情況下就能獲得當前場景的最佳體驗。
屏幕共享場景定義
清晰度優先的場景
以文字為主,用戶更需要看清楚畫面的邊緣特征,而較少關注其運動特征。
流暢度優先的場景
以視頻內容為主,用戶更需要流暢連貫的動態畫面,而較少關注于單幀的清晰度。
技術實現
算法原理
學界相關成果概述
目前我們參考了以下兩篇參考文獻。第一篇是 Jing, Wang & Xuetao, Guan & Yang, Zhang. (2013). An Adaptive Encoding Application Sharing System Based on Remote Display. 266-269. 10.1109/ISDEA.2012.66.
該論文主要假定視頻區域的均會以 24-30FPS 的頻率發生變化,用 N*N 的 patch 的形式進行檢測,從而發現視頻區域。
第二篇參考文獻是,侯文慧, 王俊峰. 面向云桌面協議的視頻區域偵測算法[J]. 計算機應用, 2018, 038(005):1463-1469,1487.
這篇論文主要通過高變化區域偵測,并利用傳統 sobel 算子+膨脹算法的邊緣檢測發現可能的矩形區域,通過顏色直方圖的顏色數量判定文本區域從而確定視頻內容區域。
相關算法的介紹
- 光流
光流(Optical flow or optic flow)是空間運動物體在成像平面上的像素運動的瞬時速度,是分析像素運動的一種方法。光流法在模式識別、計算機視覺以及其他圖像處理領域中用處廣泛,可用于運動檢測、圖像分割、運動補償編碼和立體視差測量等領域。
光流法實際是通過檢測圖像像素點隨時間的變化進而推斷出物體移動速度及方向的方法。假設該移動很小,那么可以根據泰勒級數得出:
因此可以推出
最終可得出光流方程:
這個方程有兩個未知數,不能直接進行求解,這被稱為光流算法的孔徑問題。為了求解光流方程,還需要另一組方程,這個方程由附加的約束給出。(以上內容引用自 wikipedia)
孔徑問題
(孔徑問題示意,引用自:https://zhuanlan.zhihu.com/p/74460341)
假設:
- 相鄰幀之間的亮度恒定;
- 相鄰視頻幀的取幀時間連續,或者,相鄰幀之間物體的運動比較“微小”;
- 決策樹
決策樹是一種邏輯簡單的機器學習算法,它是一種樹形結構,所以叫決策樹。這是一種基于 if-then-else 規則的有監督學習算法,決策樹的這些規則通過訓練得到,而不是人工制定的。
- 決策樹易于理解和解釋,可以可視化分析,容易提取出規則;
- 可以同時處理標稱型和數值型數據;
- 比較適合處理有缺失屬性的樣本;
- 能夠處理不相關的特征;
- 測試數據集時,運行速度比較快;
- 在相對短的時間內能夠對大型數據源做出可行且效果良好的結果。(引用自 wikipedia)
- 顏色直方圖
顏色直方圖是許多圖像檢索系統中被廣泛采用的顏色特征。它所描述的是不同色彩在整幅圖像中所占的比例,而并不關心每種色彩所處的空間位置,即無法描述圖像中的對象或物體。(引用自 wikipedia)
- 方向統計(Directional Statistics)
Directional statistics (also circular statistics or spherical statistics) is the subdiscipline of statistics that deals with directions (unit vectors in R(n)), axes (lines through the origin in R(n)) or rotations in R(n). More generally, directional statistics deals with observations on compact Riemannian manifolds including the Stiefel manifold. The fact that 0 degrees and 360 degrees are identical angles, so that for example 180 degrees is not a sensible mean of 2 degrees and 358 degrees, provides one illustration that special statistical methods are required for the analysis of some types of data (in this case, angular data). Other examples of data that may be regarded as directional include statistics involving temporal periods (e.g. time of day, week, month, year, etc.), compass directions, dihedral angles in molecules, orientations, rotations and so on. (引用自 wikipedia)
利用方向統計方法,能夠準確地統計出向量樣本的方向均值,以及方向的離散程度,也避免了傳統統計方法在角度值統計計算上的誤差。
舉個簡單的例子,如下圖所示,7/4π 和 1/4π 統計均值,以傳統方法計算為 π,而利用方向統計就可以得到出均值為 0 的結果。
算法總流程設計
視頻的定義就是運動的畫面,但在屏幕共享當中,并不能夠將運動的畫面都當作視頻內容來處理。實際使用中,需要將部分運動的畫面識別為需要高清優先、流暢度其次的屏幕內容,保證用戶在此時獲得清晰的觀看體驗。
- 探索性數據分析(EDA)
在正式進行算法開發之前,先進行了探索性數據分析,分析發現屏幕的運動特征具有較高的區分度,從而大致判定利用光流法來完成該任務的特征提取是可行的。
- 算法流程圖
該檢測算法分成三個模塊,五個步驟。
三個模塊分別是:
- 運動幅度分析:主要進行運動幅度相關特征的提取,能夠統計運動畫面比例,去除一些噪音。
- 運動角度分析:主要進行運動角度相關特征的提取,能夠統計畫面運動的方向,以及運動方向的分散程度等
- 紋理特征分析:主要提取一些紋理相關的特征,判定當前區域是否為文字區域。
具體分為五個步驟:
- 采樣:光流算法需要前后兩幀數據進行計算,需要對視頻流進行采樣,得到兩幀數據
- 光流計算:計算出全圖的稠密光流
- 特征提?。禾崛∵\動和紋理特征
- 狀態轉移:通過一系列模式和規則進行狀態轉移
- 輸出結果:根據內部狀態信息輸出檢測結果
-
視頻會議
+關注
關注
4文章
158瀏覽量
30167 -
RTC
+關注
關注
2文章
538瀏覽量
66463
發布評論請先 登錄
相關推薦
評論