?

改進的車載全息透明影像方法①

2022-11-07 09:07王焱焱梁樹宇李達明
計算機系統應用 2022年10期
關鍵詞:魚眼畸變示意圖

王焱焱,胡 貴,梁樹宇,李達明

1(北京工業大學 信息學部,北京 100124)

2(阿波羅智能技術(北京)有限公司,北京 100193)

1 引言

1.1 研究背景

近年來,隨著國家經濟與科學技術的不斷發展,人們物質生活水平不斷提升的同時,我國的汽車相關行業也在蓬勃發展.汽車普及給人們帶來便利的同時,也產生了交通安全問題.根據國家統計局最近數據顯示,截至2020年末,共計發生24.47 萬起交通事故,造成6.17 萬人死亡和25.07 萬人受傷,經濟損失達到13.136 1億元[1].很多交通事故的發生,并不是因為駕駛員駕駛技術不過關.汽車盲區使得駕駛員無法準確了解到汽車周圍環境.汽車視野盲區示意圖[2],如圖1 所示.有調查顯示,由汽車視野盲區造成的事故占比高達32%[3].因此,汽車廠商紛紛使用各類手段解決此痛點,車載環視影像應運而生.隨著環視影像系統技術的成熟與成本的下降,越來越多的汽車廠商愿意在新款車型中裝載環視影像系統.針對9 個自主品牌代表企業旗下車型的駕駛輔助系統應用情況進行分析,產品布局數量占比已經超過50%[4].

圖1 汽車視野盲區示意圖

1.2 研究現狀

全景環視最早由Kato 等人在2006年提出[5].該概念的提出立即得到了各方的關注.次年日產公司發布首個商用產品[6],環景監視系統AVM (around view monitor).后續本田、福爾德、奔馳以及邁隆等公司也推出了相似產品.該系統也由圖像直接堆疊過渡到圖像融合拼接.2013年富士通公司提出三維全景環視[7,8],從此環視影像由只有鳥瞰圖的二維過渡到三維.

車載環視影像,在增加透明底盤功能后,消除了汽車周圍的所有盲區,發展為車載全息透明影像.近幾年來,高級輔助駕駛前裝載量逐漸上升,環視影像作為高級輔助駕駛的主要功能之一,也迎來了快速發展.松下[9]、現代汽車[10]、LG 電子[11]、華為[12]、百度[13]、廣汽[14]等企業; 北京交通大學[15]、同濟大學[16,17]、普渡大學[18,19]等國內外高校以及研究機構都開始從理論方面入手,結合實踐進行深入研究.

圖像拼接技術中圖像配準是核心技術,根據大量學者的研究,將圖像配準算法分為兩類,包括基于特征的圖像配準算法、基于區域的圖像配準算法[20-22].由于基于特征的圖像配準算法具有計算量小、速度快等優勢,該方式在車載環視影像中應用最廣泛[23-25],例如SIFT、SURF 等算法.

首先,車載全息透明影像使用的是視角很大的魚眼鏡頭,得到的圖像存在明顯的畸變,特征值計算比較困難.傳統的解決方案先對原圖去畸變,然后再對圖像裁剪,最后計算特征值.這些操作極大地增加了后續渲染的復雜度.其次,在渲染過程中,每一幀圖像都需要有矩陣乘運算,運算量大.再次,相鄰兩路攝像頭的中心軸夾角接近90°,通過特征值求得的仿射變換矩陣存在很大誤差,導致車載環視影像在圖像拼接處,存在拼接縫的問題,尤其是相對于汽車距離較近的4 個車角處.

針對傳統解決方案存在的缺陷和問題,提出了基于距離的Alpha 圖像拼接算法,該算法只需在程序啟動時計算一次,極大地減小了計算量.并且根據該拼接算法的特性,重新設計了三維模型.對透明底盤功能做了如下3 方面優化: 改進自行車模型算法,達到了減小計算復雜度,提高計算效率的目的; 利用查表法,解決透明底盤與周圍拼接錯位問題; 采用分層渲染的方法,優化透明底盤功能拼接縫問題.

2 軟硬件系統結構與全息透明影像基本原理

2.1 硬件系統結構

全息透明影像的硬件系統,主要包括四路魚眼攝像頭、自動駕駛計算平臺、車載視頻顯示器、整車動力底盤、車身及關鍵零部件等幾部分.自動駕駛計算平臺與汽車電子器件的連接結構,如圖2 所示.

圖2 自動駕駛計算平臺與汽車電子器件的連接結構

(1)傳感器接入四路魚眼攝像頭通過GMSL 接入、12 路超聲波雷達采用12 路硬線的方式接入.

(2)HMI 顯示交互: 視頻數據通過一路LVDS 輸出給中控車機,交互類軟開關等信息通過網關路由的CANFD 總線傳輸.

(3)整車交互: 整車動力底盤、車身等關鍵零部件通過網關路由的CANFD 總線實現控制和狀態報文的實時交互.

四路魚眼攝像頭的視場角為190°-200°; 安裝角度為20°-35°; 有效覆蓋范圍為3-6 m; 前魚眼攝像頭安裝在車頭前部中央(前格柵附近); 左魚眼攝像頭安裝在左后視鏡下方; 右魚眼攝像頭安裝在右后視鏡下方;后魚眼攝像頭安裝在車尾后部中央(后備箱把手附近).自動駕駛計算平臺的安裝位置示意圖,如圖3 所示.

圖3 計算平臺安裝位置示意圖

2.2 軟件系統結構

軟件系統結構主要分為3 層,依次為硬件層、中間件層和應用層.軟件系統結構示意圖,如圖4 所示.

圖4 軟件系統結構示意圖

全息透明影像位于應用層,它通過消息中間件獲得攝像頭圖像、車速、方向盤轉角以及檔位等信息.消息中間件屏蔽硬件差異,向上提供統一接口,提供一致化的服務能力.ABS、EPS 以及TCU 分別將車速、方向盤轉角、檔位等車身信息通過CANFD 總線傳遞到消息中間件.顯示器通過消息中間件獲得需要顯示的圖像.

2.3 全息透明影像基本原理

全息透明影像使用OpenGL 進行圖形渲染.OpenGL是一個包含了一系列可以操作圖形、圖像的API[26].OpenGL 做渲染時自身是一個巨大的狀態機,首先需要給狀態機設置繪畫的屬性,其次使用當前屬性進行渲染.

OpenGL 的基本屬性分別為: 坐標點、紋理和紋理坐標.當用OpenGL 渲染簡單三角形時,需要3 個頂點坐標、一張紋理和每個頂點坐標點對應的紋理坐標.頂點確定三角形的形狀,紋理確定三角形的顏色,紋理坐標則確定使用紋理什么位置的顏色.渲染三角形的數據格式為{X,Y,Z,U,V},其中(X,Y,Z)為頂點坐標;(U,V)為頂點坐標對應的紋理坐標.三角形渲染流程圖如圖5 所示.

圖5 三角形渲染流程圖

全息透明影像渲染使用的三維模型是由很多小三角形組成的.全息透明影像渲染使用的紋理是四路魚眼攝像頭的圖像.利用基于距離的Alpha 圖像拼接算法,可以求得三維模型中每個坐標點對應的紋理坐標.全息透明影像的渲染示意圖如圖6 所示.

圖6 全息透明影像渲染示意圖

3 基于距離的Alpha 融合算法與三維模型

3.1 世界坐標系到紋理坐標系的計算方法

無論使用什么方法做圖像拼接,圖像配準的主要任務是找到圖像中具有相同特征的物體.也就是在世界坐標系下,同一點體在兩張圖象上的位置.如果通過計算可以求得世界坐標下的一點,在兩張圖像上的位置,那么將這兩個位置上的像素做融合即可.

相機的成像過程是三維坐標點在世界坐標系、相機坐標系、圖像坐標系和像素坐標系中的轉換[27].世界坐標系以汽車正中心的地面投影點為原點建立,車頭方向為X 軸的正方向,垂直于X 軸向汽車左側為Y 軸正方向,向上為Z 軸正方向.為了不同車型相機標定的準確,增加了汽車坐標系.汽車坐標系是以后軸中點在地面上的投影點作為原點建立的.

下面將介紹世界坐標系下的點(x,y,z)到對應相機圖像紋理坐標(u,v)的計算過程.該過程需要用到相機的內外參數[28].相機的內外標定參數,如表1 所示.

表1 四路魚眼攝像頭內外標定參數

首先,需要將頂點坐標從世界坐標系轉換到對應相機坐標系.然而相機坐標系是以汽車坐標系為基礎建立的,所以首先需要將頂點坐標轉到汽車坐標系下.計算公式如下:

其中,(x_car,y_car,z_car)為頂點坐標在汽車坐標系下的位置;length為汽車中心到后軸的距離.

利用相機外參中繞Z 軸旋轉角度、繞Y 軸旋轉角度、繞X 軸旋轉角度和位移向量,可以求得3 個旋轉矩陣和1 個位移矩陣.通過仿射變換就可以求得頂點坐標在相機坐標系下的位置.計算公式如下:

其中,(xc,yc,zc)為頂點在相機坐標系下的位置;rota_x為繞X 軸旋轉矩陣;rota_y為繞Y 軸旋轉矩陣;rota_z為繞Z 軸旋轉矩陣;trans為位移矩陣;k為常量.

此時已經轉換到相機坐標系.頂點由相機坐標系通過計算轉換到像素坐標系,此時需要用到相機的內參.魚眼攝像頭是一種特殊的攝像頭,首先闡述小孔成像模型的求解過程.在小孔成像模型下,首先需要將攝像機坐標系下的點(xc,yc,zc)轉換為歸一化平面上的點.如式(3)所示:

其中,(x′,y′)為歸一化平面上的點.

其次將歸一化平面上的點轉換為像素坐標系下的紋理坐標:

其中,(u,v)為紋理坐標;fx,fy為uv方向焦距.cx,cy為光軸中心像素坐標.相機坐標系到像素坐標系計算過程原理圖,如圖7 所示.

圖7 相機坐標系到像素坐標系計算過程原理圖

魚眼攝像頭圖像存在明顯的畸變.因此需要在公式中增加去畸變處理和Z 軸光心偏移系數.具有超大視場角的魚眼相機,由于其球狀鏡頭結構,以及制造工藝的問題,小孔成像的經典模型不適用于魚眼相機的成像模型,因此需要增加新的參數[29].魚眼相機成像模型,如圖8 所示.

圖8 魚眼相機成像模型

魚眼相機歸一化平面的計算方法如式(5)所示:

其中,xi為光心Z 軸偏移系數.

魚眼鏡頭成像存在的幾何失真稱為畸變.根據Brown 畸變模型,畸變主要分為徑向畸變和切向畸變[30].徑向畸變是從圖像中心向外發散分布的畸變,產生原因是光線在魚眼透鏡邊緣光線的折射角比靠近中心的地方更大.畸變的數學模型可以用主點周圍的泰勒級數展開式的前幾項進行描述,通常使用前兩項,即k1和k2.切向畸變是由于透鏡本身與相機傳感器平面(成像平面)或圖像平面不平行而產生的,畸變模型可以用兩個額外的參數p1和p2來描述.去畸變公式如下:

其中,k1為徑向畸變系數1;k2為徑向畸變系數2;p1為切向畸變系數1;p2為切向畸變系數2.

魚眼鏡頭紋理坐標的計算公式如下:

其中,u,v為紋理坐標;fx,fy為uv方向的焦距.cx,cy為光軸中心像素坐標.

通過上述公式可以求得頂點(x,y,z),由世界坐標系到像素坐標系(u,v)的變換.

3.2 三維模型的設計與優化

渲染車載全息透明影像就是在渲染一個3D 物體.三維模型相當于是車載環視影像的一個“墻壁”,將四路魚眼圖像按照一定的規則貼合到這個墻壁上,就形成了具有立體效果的影像.三維模型功能示意圖,如圖9 所示.

圖9 三維碗狀模型功能示意圖

根據基于距離的Alpha 融合算法特性,我們對三維模型的需求有如下3 點:

(1)可以快速得找到拼接線,并且可以簡單地在拼接線附近找到圖像融合區域.

(2)減少點的數量.以TDA4 為核心的開發板,索引的數據類型為unsigned short,占2 個字節,數值范圍為[0,65 535].在同一個索引緩沖對象中,最多可以索引65 536 個頂點,21 845 個三角形.因此三維碗狀模型點的數量很多時,需要對頂點數據進行分塊,再將數據拷貝進頂點緩沖對象中,這樣會生成多個內存ID.在渲染時就需分開渲染,浪費資源.

(3)三維碗狀模型渲染結果需要平滑柔順,不能產生黑邊、拼接縫明顯等問題.在汽車的4 個角落處,很容易由于三維碗狀模型,導致在相鄰的兩張紋理上不能采樣到正確的顏色,最終在做圖像融合時產生明顯的黑線.

通過調研發現,根據幾何模型的不同,可以將三維模型分為經緯度三維模型[31-33]、立方體三維模型[34,35]和柱面三維模型3 類[36,37].

經緯度三維模型及其改進方式模型可以滿足如上需求.通過控制經線,就可以找到拼接線,控制角度找到拼接區域.經緯度三維模型整體與細節,如圖10 所示.該模型的鳥瞰視圖與3D 視圖渲染結果,如圖11 所示.

圖10 經緯度三維模型

圖11 經緯度三維模型渲染結果

通過觀察可以發現,汽車周圍有一圈不規則的黑邊,這是由于在經緯度三維模型中,汽車周圍三角形的邊與汽車底盤不平行,導致有些三角形的部分點在汽車下方.但是魚眼鏡頭無法拍攝到汽車底部,這些點在紋理采樣時就會得到錯誤的RGB 值,就變為黑色.OpenGL 的特性會在三角形中間做線性插值處理,會導致三角形從有顏色逐漸過渡為黑色.解決此問題可以通過增加三維模型中三角形的密度,但這會增加三維模型中點的數量.通過實驗測試發現,將點增加為之前的3 倍,效果依舊不明顯.

根據問題,重新設計三維模型,在原有經緯度三維模型中間,嵌入一個汽車大小的長方形,確保三角形的所有頂點都位于汽車外部.內嵌長方形三維模型整體與細節展示,如圖12 所示.該模型的3D 視圖渲染結果,如圖13 所示.

圖12 內嵌長方形三維模型

圖13 內嵌長方形三維模型渲染結果

通過觀察可以發現,有些地方存在明顯的畸變.這是因為,只有頂點處做了去畸變處理,三角形內部只做了線性插值,并沒有去畸變.內嵌長方形與外接圓之間的三角形過大,這會導致渲染結果存在畸變.

鑒于此,重新優化三維模型.將內嵌長方形更換為正方形網格,并在正方形與外接圓之間插入點,減小三角形的大小.內嵌正方形三維模型整體與細節,如圖14所示.該模型的鳥瞰視圖與3D 視圖渲染結果,如圖15所示.

圖14 內嵌正方形三維模型

圖15 內嵌正方形三維模型渲染結果

通過觀察可以發現,在汽車的4 個角落產生了橫向黑色細線.車頭前的兩條黑線,是由于靠近車角的正方形在前鏡頭的圖像中無采樣到正確的RGB 值,變為黑色.與其他顏色融合后變為一條黑色細線.后側同理.

綜合上述所有問題,結合前幾個模型各自的優點,重新設計三維模型.

(1)經緯度三維模型的優點在于,可以用快速找到拼接線的位置,并且可以方便地在拼接線周圍找到圖像融合區.因此在圖像拼接區域使用經緯度三維模型的方案.

(2)嵌入長方形三維模型的優點在于,可以讓渲染流程簡單結果整齊.因此在正中間使用汽車大小的長方形.

(3)長方形外接圓會產生畸變,因此長方形周邊用直線代替弧線.

按上述方案構建三維模型,首先在模型中間使用汽車大小的長方形.其次在長方形的4 個角落處,以角為圓心畫四分之一圓弧.最后長方形周圍,將相鄰兩個圓弧用直線連接.拼接區三維模型構建過程示意圖,如圖16 所示.該模型的渲染結果如圖17 所示.

圖16 拼接區三維模型構建過程示意圖

圖17 拼接區三維模型渲染結果

3.3 圖像拼接與圖像融合

在相鄰兩個圖像之間做拼接融合,需要找到一條拼接線.首先在三維模型中確定一條拼接線.拼接線示意圖,如圖18 所示.

圖18 拼接線示意圖

魚眼鏡頭的視角很大,這樣會導致任意兩個相鄰的攝像頭圖像,會有很大圖像重合的部分.為了使得渲染結果更加完美,需要在兩幅圖像相接的地方做圖像融合.在拼接縫兩側尋找適量列數的點,作為圖像融合區.在該區域進行圖像的融合.圖像融合區示意圖,如圖19 所示.

圖19 圖像融合區示意圖

圖像融合區的頂點,可以在拼接線的左右兩張紋理上分別求得一個紋理坐標(U1,V1)和(U2,V2).利用著色器語言GLSL (OpenGL shading language)中的texture(ourTexture,vec2(U,V))函數可以得到紋理ourTexture中紋理坐標為vec2(U,V)的顏色.由此可得到頂點在兩張圖像上的對應的顏色.公式如式(8):

其中,outColor1rgb為頂點在拼接線左側圖像上對應顏色的RGB 值;outColor2rgb為頂點拼接線右側圖像上對應顏色的RGB 值.將兩個顏色進行疊加則完成圖像融合.圖像融合示意圖,如圖20 所示.

圖20 圖像融合示意圖

不做圖像融合的數據格式為{X,Y,Z,U,V};圖像融合區的數據格式為{X,Y,Z,U1,V1,U2,V2,Alpha}.紋理坐標的計算只需在程序啟動時計算一遍,并將坐標點與紋理坐標按照數據格式組合.將組合好的數據拷貝到GPU 緩存中供渲染時使用.

由于Lens Shading 問題導致圖像中間亮,邊緣逐漸變黑.因此需要為邊緣增加亮度,防止拼接區域出現黑色細線.Lens Shading 問題補償公式如下:

其中,a為常量.

4 透明底盤功能的優化策略

4.1 透明底盤功能概述

透明底盤功能是將車底盲區進行填補,讓駕駛員可以清楚地了解到汽車底部的情況.魚眼鏡頭無法照射到汽車底部的物體,所以傳統的方案就無法實現透明底盤功能.但是,汽車運動起來后,前幾幀魚眼圖像存在當前幀車底圖像信息.所以,透明底盤功能可以利用前一幀部分圖像信息填充當前幀汽車底部盲區.

透明底盤功能實現過程,首先預測汽車的行駛軌跡,計算出汽車底部長方形4 個點在上一幀鳥瞰圖中的紋理坐標.其次,用4 個點作為頂點、上一幀鳥瞰圖作為紋理和求得的紋理坐標進行渲染.透明底盤功能渲染示意圖如圖21 所示.

圖21 透明底盤功能渲染示意圖

4.2 自行車模型優化與透明底盤算法實現

車輛運動學模型與動力學模型的建立是出于車輛運動的規劃與控制考慮的.此模型廣泛應用于自動駕駛汽車軌跡規劃模塊中[38,39].該模型可以精準的推測汽車的行駛軌跡.

自行車模型需做如下假設:

(1)車輛只在二維平面上做運動,即只在XY 水平面的運動.

(2)車的兩側車輪轉角一致.即將車模從兩側壓扁為二維.

(3)車輛行駛速度變化緩慢,忽略前后軸載荷的轉移.

(4)車身及懸架系統是剛性的.

假設結果如圖22 所示.

圖22 自行車模型

其中,O為OA、OB的交點,是車輛的瞬時轉動中心,線段OA、OB分別垂直于兩個滾動輪的方向; β為車輛速度方向和車身朝向兩者間所成的角度,ψ為車身與X 軸的夾角.V為質心速度;R為 轉向半徑; ?r為后懸長度; ?f為前懸長度; δr為后輪偏角; δf為前輪偏角.自行車模型的動力學關系為:

聯立可得:

當速度很慢時,車輛的轉彎半徑幾乎不變,此時可以假設車輛的方向變化率與車輛的角速度相等,則車輛的角速度為:

在慣性坐標系XY 下,可得車輛運動學模型:

其中,有3 個輸入: δf、 δr、V.汽車的轉向有兩種模式[40],分為前輪轉向與后輪轉向兩種類型.當車輛為前輪轉向時,則車輛只有前輪轉角 δf,后輪轉角δr=0.因此可以假設前輪轉向自行車模型如圖23 所示.

圖23 前輪轉向自行車模型

前輪轉向自行車模型總結規律.由正弦法則求得車輛旋轉半徑R,計算公式如下:

前輪轉向自行車模型如下:

此方程,每一幀都需要計算,為了能夠更少計算量,簡化該計算公式.由于單針耗時時長很短、汽車速度很慢并且汽車電器件傳入渲染引擎的數據本身就存在很大誤差,所以采用離散的方法.改進自行車模型公式如下:

式(16)中各參數,如表2 所示.

表2 各參數及意義

利用dx與dy可以求得位移矩陣trans; 利用dθ可以求得Z 軸旋轉矩陣rota_z.當前幀汽車坐標系下的點,在經歷一幀圖像時間后,在上一幀汽車坐標系下位置的計算公式如下:

其中,(X_car,Y_car,Z_car)為當前幀汽車坐標系的坐標點; (X_car1,Y_car1,Z_car1)為坐標點在上一幀汽車坐標系的位置;k為常量.

結合鳥瞰圖的相機矩陣,就可以求得在鳥瞰圖中的紋理坐標(U,V).計算過程如式(18):

4.3 方向盤角度到輪轉角精度問題的優化

消息中間件傳送到渲染引擎的角度是方向盤角度,而計算公式需要的是汽車的輪轉角.所以需要一步方向盤角度轉輪轉角的操作.如果采用正比例關系,當方向盤角度比較小時,不會有明顯問題.但當方向盤角度特別大時,隨著時間的積累,物體預測位置就會存在誤差.為此提出查表法來解決此問題.

經過多次的測試得到方向盤角度與輪轉角的原始數據,并對數據進行處理處理,得到一組很準確的方向盤角度與輪轉角關系對應表,如圖24 所示.

圖24 中可以看出當方向盤角度較小時,方向盤角度與輪轉角,基本呈正比例關系.但當方向盤角度過大時,方向盤角度與輪轉角,不再成正比例關系.這也印證了最初的猜想.通過查表找到方向盤角度所對應的輪轉角.方向盤角度位于兩項數據之間的,將這兩項數據對應的輪轉角,做加權平均,從而次求得更為準確的輪轉角.如圖25 所示.

圖24 方向盤角度與輪轉角關系曲線

圖25 輪轉角優化效果對比圖

4.4 透明底盤功能拼接縫優化策略

通過觀察,發現渲染圖像中汽車周圍與汽車底部拼接縫極其明顯,并且汽車底部像格柵一樣.拼接縫與拼接格柵問題示意圖,如圖26 所示.

圖26 拼接縫與拼接格柵問題示意圖

汽車底部的格柵化,是由于透明底盤功能拼接縫明顯.透明底盤的渲染方案會導致明顯的拼接縫在車底積累,形成格柵.所以,優化掉拼接縫問題,格柵問題也將解決.

世界坐標系位置相同的點,不同幀間亮度可能存在不同,并且車輛動態模型對行駛軌跡的推測存在誤差,導致透明底盤功能拼接縫明顯.

解決此問題,采用分層渲染的方法.將底部長方形周圍區域在上一幀頂視圖的圖像,渲染在當前幀圖像渲染結果的上層.首先找到底部長方形外側適量圈數坐標點.其次利用自行車模型計算出坐標點對應的紋理坐標.最后,Alpha 值由長方形邊緣向外逐漸由1 變為0.輸出像素四通道的計算公式如下:

其中,outrgba為渲染輸出值;L為向外選擇點的圈數;l為當前點所在圈數.透明底盤拼接縫優化效果圖,如圖27所示.

圖27 透明底盤拼接縫優化效果圖

5 結論與展望

(1)為了方便展示,所有三維模型都進行了稀疏化處理.實際工程應用的拼接區三維模型共有36 000 個面和18 848 個點.

(2)四路魚眼鏡頭圖像進入系統后進行了亮度均衡處理.亮度均衡不是本論文的研究內容,不展開討論.實驗所使用的亮度均衡算法主要借鑒于文獻[41].

(3)在TDA4 為核心的開發板,上車進行測試,實驗結果表明,在輸出圖像分辨率為1440×720,左右視圖均為3D 模式時,可以達到30 幀,CPU 占用率低于20%.

本文基于距離的Alpha 圖像拼接算法、優化了三維模型、改進了透明底盤功能.該技術可有效提高渲染效果,減少計算復雜度.該研究技術對于車載全息透明影像有很大意義.該系統仍然存在許多問題,例如近處物體畸變嚴重、在拼接處存在物體消失等問題.相信這些問題日后都會得到解決.

猜你喜歡
魚眼畸變示意圖
《癌變·畸變·突變》中國科技核心期刊收錄證書
粘上塑料假眼睛魚販賣魚“裝鮮嫩”
披著華服的餅
魚眼明目魚頭補腦是真的嗎?
生不逢時的潘金蓮
基于Saber模型的6脈沖整流負載對飛機電源品質仿真分析
貧困戶建檔立卡工作示意圖及參考文本
“三定兩標”作好圖
俄歐天然氣管道示意圖
中緬油氣管道示意圖
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合