陳辰燦,滕國(guó)偉,趙海武,李國(guó)平,王國(guó)中
(上海大學(xué) 通信與信息工程學(xué)院,上?!?00072)
?
一種面向HEVC的并行碼率控制算法
陳辰燦,滕國(guó)偉,趙海武,李國(guó)平,王國(guó)中
(上海大學(xué)通信與信息工程學(xué)院,上海200072)
摘要:視頻通信時(shí)通常帶寬有限,為了能在規(guī)定的目標(biāo)碼率下獲得盡可能高質(zhì)量的解碼圖像,需要在視頻編碼時(shí)進(jìn)行碼率控制。目前針對(duì)HEVC的并行編碼以及對(duì)應(yīng)碼率控制已成為研究熱點(diǎn),現(xiàn)有并行結(jié)構(gòu)下的平均比特率控制算法受到幀間依賴性的約束,待編碼幀無(wú)法及時(shí)獲得與其并行編碼幀的實(shí)際比特?cái)?shù),因此本文算法通過(guò)預(yù)測(cè)并行幀的實(shí)際比特?cái)?shù)來(lái)進(jìn)行碼率控制,并在此基礎(chǔ)提出了自適應(yīng)調(diào)整幀層量化參數(shù)補(bǔ)償值。仿真結(jié)果表明,相比已有算法,前者減少碼率誤差約為3.38%,后者可提高PSNR約為0.204dB同時(shí)減少約0.3%的碼率誤差。
關(guān)鍵詞:視頻編碼;碼率控制;平均比特率;實(shí)際比特?cái)?shù)
隨著視頻采集與顯示設(shè)備的快速升級(jí),HD(HighResolution)與UHD(UltraHD)視頻在人們的日常生活中變得越來(lái)越普遍。隨著視頻分辨率的增加,對(duì)視頻的存儲(chǔ)、傳輸和實(shí)時(shí)處理帶來(lái)了巨大的挑戰(zhàn)?,F(xiàn)有的視頻編碼標(biāo)準(zhǔn)H.264/AVC已經(jīng)難以滿足對(duì)超過(guò)HD的更高分辨率視頻的壓縮需要[1]。因此,ITU-TVCEG和ISO/IECMPEG共同組建JCTVC,聯(lián)合制定新一代視頻編碼標(biāo)準(zhǔn)(HighEfficiencyVideoCoding,HEVC)[2],目前該標(biāo)準(zhǔn)已定稿。
HEVC引入很多新特性,比如基于大尺寸四叉樹塊的分割結(jié)構(gòu)和殘差編碼結(jié)構(gòu)等,同時(shí)采用了并行編碼結(jié)構(gòu),如最新的并行編碼技術(shù)WPP(WavefrontParallelProcessing),其復(fù)雜度成本增長(zhǎng),因此實(shí)時(shí)編解碼技術(shù)成為研究熱點(diǎn),其中碼率控制尤為重要[3],簡(jiǎn)單將傳統(tǒng)的碼率控制方法應(yīng)用到HEVC編碼器中因難以滿足并行處理框架特點(diǎn)而導(dǎo)致其精確度明顯下降,因此研究并行的碼率控制算法具有重要應(yīng)用價(jià)值[4]。
1并行編碼架構(gòu)及碼率控制分析
1.1HEVC并行編碼架構(gòu)
目前通用的編碼器,如X265,通常采用具有參考依賴性的幀間和幀內(nèi)混合并行編碼架構(gòu)。由于運(yùn)動(dòng)物體之間存在連續(xù)性,視頻圖像中的宏塊搜索范圍是有限的,所以只要待編碼幀已經(jīng)獲得所需要的參考信息,則無(wú)需等待當(dāng)前幀完成編碼,待編碼幀就可以并行進(jìn)行編碼[5]。如圖1所示,假設(shè)輸入序列為IBBPBBP,當(dāng)編碼I(0)時(shí),P(3)無(wú)需等待I(0)編碼完成,一旦P(3)獲得了參考信息就能與I(0)并行地進(jìn)行編碼,同理B(1)、B(2)和P(6)也不需要等待I(0)與P(3)完成編碼就能開始并行編碼。同時(shí)每一幀都采用幀內(nèi)的WPP并行編碼方式,即只要當(dāng)前CTU行上邊的兩塊CTU已經(jīng)處理完了,編碼器就可以并行處理這新的一行CTU。
上述并行架構(gòu)對(duì)碼率控制過(guò)程帶來(lái)影響,如圖1所示,P(3)與I(0)并行編碼,因此P(3)的碼率控制在I(0)編碼完成前就已經(jīng)開始。假設(shè)現(xiàn)在X265能并行編碼3幀圖片,對(duì)于圖1中的IBBPBBP序列,I(0)最先進(jìn)行編碼,P(3)則在I(0)第一次的碼率控制參數(shù)更新后獲得所需參考信息并開始編碼,同理B(1)需要等待P(3)的第一次碼率控制參數(shù)更新后才能獲得所需要的參考信息并開始編碼。而對(duì)于B(2),因?yàn)榫幋a器只允許3幀進(jìn)行并行的處理,此時(shí)它需要等待I(0)完成編碼并進(jìn)行其第二次碼率控制參數(shù)更新后才能開始編碼,但I(xiàn)(0)的第二次參數(shù)更新則必須等待與其并行編碼的最后一幀,即B(1)的第一次參數(shù)更新之后才能進(jìn)行,可見碼率控制受到了并行結(jié)構(gòu)依賴性的約束。
1.2并行架構(gòu)下的ABR碼率控制算法分析
碼率控制模式分為單次編碼(single-passcoding)和多次編碼(multi-passcoding)兩類[6]。多次編碼雖然精確但是耗時(shí)較長(zhǎng),不適用于實(shí)時(shí)視頻傳輸系統(tǒng)。單次編碼僅需要借助已編碼的參考幀信息而不需要其他未編碼幀的信息來(lái)進(jìn)行碼率控制,編碼速度快但偏差較大[7]。
平均比特率控制算法(ABR算法)是單次編碼中最常用的算法。在非并行的架構(gòu)下,碼率控制的參數(shù)在每一幀完成編碼后進(jìn)行更新,而受到并行結(jié)構(gòu)依賴性的約束,并行架構(gòu)下的ABR算法在使用WPP編碼時(shí),對(duì)每幀的碼控參數(shù)需進(jìn)行兩次更新:
1)當(dāng)前幀的一半CTU行數(shù)完成編碼后進(jìn)行第一次的參數(shù)更新,如果當(dāng)前幀不是并行的最后一幀,此時(shí)更新后的參數(shù)用于下一幀來(lái)確定QP值,如果當(dāng)前幀為并行的最后一幀,則更新后的參數(shù)用于與其并行編碼的最前一幀的第二次參數(shù)更新。
2)當(dāng)前幀完成編碼后等待與其并行的最后一幀完成第一次的參數(shù)更新后,當(dāng)前幀進(jìn)行第二次的參數(shù)更新,用于下一待編碼幀的QP計(jì)算。由此可見當(dāng)前幀計(jì)算QP的參數(shù)并不是由其前一編碼幀得到,而是來(lái)自與其并行編碼的最前面一幀。
該算法具有較好的實(shí)時(shí)性,但存在不足。溢出判斷因子overflow是ABR算法中計(jì)算QP的重要參數(shù),表示實(shí)際產(chǎn)生比特與目標(biāo)比特的偏差程度,其計(jì)算公式為
overflow(i)=1.0+(total_bits(i-1)-
wanted_bits(i-1))/aur_buffer(i)
(1)
式中:total_bits(i-1)為到前一幀為止編碼所產(chǎn)生的實(shí)際比特?cái)?shù)之和;wanted_bits(i-1)為到前一幀為止累計(jì)的目標(biāo)比特?cái)?shù)之和;abr_buffer(i)為平均比特率緩沖區(qū)。并行編碼時(shí)當(dāng)前幀無(wú)法在碼率控制開始之前獲得其并行幀的實(shí)際比特?cái)?shù),因此到其前一幀為止編碼所產(chǎn)生的實(shí)際比特?cái)?shù)之和total_bits(i-1)也無(wú)法獲得。在現(xiàn)有的ABR算法中只能利用與當(dāng)前幀并行編碼的最前一幀更新的total_bits來(lái)計(jì)算當(dāng)前幀QP值,而忽略了與其并行的其他還未完成編碼幀的實(shí)際比特,所以此時(shí)更新的total_bits并不準(zhǔn)確。
文獻(xiàn)[8]中根據(jù)已編碼幀的實(shí)際比特和目標(biāo)比特的差值和平均量化參數(shù),對(duì)原算法在幀層獲得的QP進(jìn)行再次修正,不過(guò)其調(diào)整值是固定的,不能進(jìn)行自適應(yīng)的調(diào)節(jié)。本文算法根據(jù)實(shí)際輸出比特和目標(biāo)比特的差值和到當(dāng)前幀為止所有幀的平均SATD值對(duì)QP的調(diào)整值進(jìn)行修改,使得調(diào)整值根據(jù)幀內(nèi)容自適應(yīng)調(diào)節(jié)大小。
2改進(jìn)的并行碼率控制算法
2.1實(shí)際比特?cái)?shù)預(yù)測(cè)算法
在并行ABR算法中,待編碼幀無(wú)法及時(shí)獲得與其并行的編碼幀的實(shí)際比特來(lái)獲得準(zhǔn)確的total_bits(i-1)值,因此本文引入模糊復(fù)雜度概念來(lái)預(yù)測(cè)與當(dāng)前幀并行幀的實(shí)際比特?cái)?shù)pre_bits,利用得到的預(yù)測(cè)幀比特值在下一幀未開始編碼前更新total_bits,并在當(dāng)前幀編碼完成后使用實(shí)際的比特?cái)?shù)替換預(yù)測(cè)的比特?cái)?shù)再次更新total_bits,從而克服碼率控制對(duì)并行結(jié)構(gòu)的依賴性來(lái)獲得更加精準(zhǔn)的幀層QP,減小輸出的實(shí)際碼率與目標(biāo)碼率的偏差。
幀的SATD可以反映生成碼流的大小,本文在預(yù)測(cè)幀的實(shí)際比特時(shí)引入模糊復(fù)雜度cplx_blur,其值由SATD得到
cplx_sum(i)=0.5×cplx_sum(i-1)+SATD(i)
(2)
cplx_count(i)=0.5×cplx_count(i-1)+1
(3)
cplx_blur(i)=cplx_xum(i)/cplx_count(i)
(4)
式中:cplx_sum為累計(jì)復(fù)雜度;cplx_count為累計(jì)幀數(shù)。在ABR算法中使用cplx_blur計(jì)算QP,而QP決定了幀的實(shí)際比特,所以cplx_blur與幀的實(shí)際比特有著特定的關(guān)系。為有效利用模糊復(fù)雜度進(jìn)行研究,在ABR的并行碼率控制的條件下對(duì)分辨率為2 560×1 600的測(cè)試序列PeopleOnStreet前150幀中的I幀與P幀的實(shí)際比特進(jìn)行統(tǒng)計(jì),同時(shí)也對(duì)832×480的測(cè)試序列Keiba的前250幀中的I幀與P幀的實(shí)際比特進(jìn)行統(tǒng)計(jì),得到的結(jié)果如圖2所示。
從圖2中可以發(fā)現(xiàn)cplx_blur與幀的實(shí)際比特之間符合冪函數(shù)的擬合,在編碼時(shí)可以使用預(yù)處理得到的SATD計(jì)算cplx_blur從而利用式(5)得到預(yù)測(cè)的幀實(shí)際比特?cái)?shù)pre_bits
pre_bite=α×cplx_blurβ
(5)
式中:α、β為模型參數(shù)。
具體步驟為:
1) 當(dāng)前幀在碼率控制開始前利用SATD(i)計(jì)算累計(jì)復(fù)雜度cplx_sum(i),在得到累計(jì)復(fù)雜度的基礎(chǔ)上利用公式4計(jì)算當(dāng)前幀的模糊復(fù)雜度cplx_blur(i),然后利用到當(dāng)前一幀為止編碼所產(chǎn)生的預(yù)測(cè)實(shí)際比特?cái)?shù)之和total_bits(i-1)計(jì)算當(dāng)前幀的QP。
2) 當(dāng)前幀的一半CTU行完成編碼后進(jìn)行第一次參數(shù)更新,此時(shí)利用公式5計(jì)算當(dāng)前幀的預(yù)測(cè)比特pre_bits(i),然后對(duì)total_bits(i)進(jìn)行更新用于第i+1幀的碼率控制
total_bits(i)=total_bits(i-1)+pre_bits(i)
(6)
3) 當(dāng)前幀完成編碼后進(jìn)行第二次的參數(shù)更新,此時(shí)對(duì)當(dāng)前幀的total_bits(i)再次進(jìn)行更新,利用當(dāng)前幀編碼產(chǎn)生的實(shí)際比特?cái)?shù)real_bits(i)替換預(yù)測(cè)比特?cái)?shù)pre_bits(i)
total_bits(i)=total_bit(i)-pre_bits(i)+real_bits(i)
(7)
算法流程如圖3所示。
2.2幀層QP補(bǔ)償算法
ABR算法中雖然每個(gè)CTU的QP根據(jù)其所包含CU的被參考程度的不同進(jìn)行了相應(yīng)的調(diào)整,在CTU層進(jìn)行了碼率控制,但是CU只是在幀層QP已經(jīng)確定的情況下,對(duì)QP進(jìn)行補(bǔ)償。如果幀層的QP存在較大的偏差,即使進(jìn)行了補(bǔ)償也達(dá)不到精確碼率控制的效果,因此幀層QP值越精確越好。在文獻(xiàn)[8]中提出了幀層補(bǔ)償算法,即在ABR算法中利用已編碼幀的平均量化參數(shù)和實(shí)際比特和目標(biāo)比特的差值,對(duì)原算法在幀層獲得的QP進(jìn)行再次修正,但是此算法在進(jìn)行補(bǔ)償時(shí),QP補(bǔ)償值是固定的,補(bǔ)償不夠精確,因此在利用本文的實(shí)際比特?cái)?shù)預(yù)測(cè)算法基礎(chǔ)上,對(duì)幀層補(bǔ)償算法的QP補(bǔ)償值進(jìn)一步優(yōu)化。
在幀層補(bǔ)償算法中,其補(bǔ)償值是一個(gè)固定值,在初始化后就不能修改,但是QP的調(diào)整值固定不變,那么對(duì)于不同復(fù)雜度的圖像采用相同的補(bǔ)償值是不夠精確的。因此本文對(duì)QP的調(diào)整值進(jìn)行動(dòng)態(tài)的調(diào)整,引入實(shí)際輸出比特和目標(biāo)比特的差值diff_bits和到當(dāng)前幀為止所有幀的平均SATD值avg_satd這兩個(gè)因子。QP調(diào)整值大小由兩個(gè)因素決定:實(shí)際輸出比特和目標(biāo)比特的差值diff_bits越大,QP的調(diào)整值就大;圖像運(yùn)動(dòng)越劇烈或者復(fù)雜度越高,QP的調(diào)整值就大,反之則小。本文選擇當(dāng)前幀的diff_satd與avg_satd的商來(lái)衡量圖像的復(fù)雜度(complexity_SATD)。由此可見,只有當(dāng)實(shí)際輸出比特和目標(biāo)比特的差值diff_bits越大,同時(shí)圖像的復(fù)雜度越高,QP的補(bǔ)償值才越大。如果diff_bits較大,但是復(fù)雜度低的話,QP的調(diào)整值會(huì)受到復(fù)雜度的約束而變小。因此可利用式(10)來(lái)確定QP調(diào)整值的大小
(8)
(9)
(10)
式中:diff_satd是指當(dāng)前幀的SATD與avg_satd的差值;wbits是指每幀分配的目標(biāo)比特;real_bits是指到當(dāng)前幀為止產(chǎn)生的總比特?cái)?shù);target_bits是指到當(dāng)前幀為止的目標(biāo)比特?cái)?shù);avg_qp是前面已編碼幀的QP平均值;q為當(dāng)前幀未進(jìn)行修改的QP值。
3實(shí)驗(yàn)結(jié)果與分析
本文實(shí)驗(yàn)環(huán)境為4個(gè)InterCore3.3GHz核的Windows平臺(tái),采用了X265編碼器的默認(rèn)設(shè)置,使用同一視頻序列的不同目標(biāo)碼率對(duì)本文算法的有效性進(jìn)行驗(yàn)證。實(shí)驗(yàn)從ClassA,B,C,D,E中各取出一個(gè)序列,分別為:Traffic,Cactus,BasketballDrill,BQSquare,F(xiàn)ourPeople,其中除Traffic總幀數(shù)為150幀,編碼幀數(shù)設(shè)為150幀,其他序列編碼幀數(shù)為250幀,其中目標(biāo)碼率使用HEVCCallforProposal(CAP)(ITU-T,etal.,2010)中規(guī)定的碼率進(jìn)行驗(yàn)證。
實(shí)驗(yàn)結(jié)果如表1~2所示,表1顯示的是實(shí)際輸出碼率分別在實(shí)際比特?cái)?shù)預(yù)測(cè)算法的作用下與原始算法作用下的結(jié)果,表2顯示的在實(shí)際比特?cái)?shù)預(yù)測(cè)算法的基礎(chǔ)上使用幀層補(bǔ)償算法在固定補(bǔ)償值與自適應(yīng)補(bǔ)償值作用下的結(jié)果。表1的結(jié)果表明原來(lái)ABR算法的平均碼率差別約為5.20%,而實(shí)際比特?cái)?shù)預(yù)測(cè)算法的平均碼率差別約為1.82%,平均碼率誤差減小了約為3.38%,而從圖4~7中可以看出原ABR算法與實(shí)際比特?cái)?shù)預(yù)測(cè)算法的平均PSNR曲線相重合,因此實(shí)際比特?cái)?shù)預(yù)測(cè)算法在平均PSNR不變的情況下提高了碼率控制的準(zhǔn)確性;表2顯示的是在實(shí)際比特?cái)?shù)預(yù)測(cè)算法基礎(chǔ)上使用幀層補(bǔ)償算法的碼控結(jié)果,其表明固定補(bǔ)償值的幀層補(bǔ)償算法的平均碼率差別約為1.08%,而自適應(yīng)補(bǔ)償值的幀層補(bǔ)償算法的差別約為0.78%,平均碼率誤差減小了約為0.3%,從圖4~7中可以看出原自適應(yīng)補(bǔ)償值的幀層補(bǔ)償算法平均PSNR略優(yōu)于固定補(bǔ)償值的幀層補(bǔ)償算法,并且?guī)瑢友a(bǔ)償算法相比于原算法在平均PSNR上提高了約為0.20dB。因此在實(shí)際比特?cái)?shù)預(yù)測(cè)算法基礎(chǔ)上使用幀層補(bǔ)償算法在提高碼率控制精確度的同時(shí)提高了平均PSNR。
表1實(shí)際比特?cái)?shù)預(yù)測(cè)算法的碼率結(jié)果
4總結(jié)
現(xiàn)有并行架構(gòu)下的平均碼率控制算法存在不精確性,本文提出了兩種改進(jìn)方法:幀的實(shí)際比特?cái)?shù)預(yù)測(cè)算法和自適應(yīng)補(bǔ)償值的幀層補(bǔ)償算法,前者根據(jù)并行結(jié)構(gòu)下ABR算法無(wú)法及時(shí)獲得與其并行的編碼幀的實(shí)際比特來(lái)更新實(shí)際比特?cái)?shù)之和,提出通過(guò)模糊復(fù)雜度與實(shí)際幀實(shí)際比特?cái)?shù)的冪函數(shù)關(guān)系預(yù)測(cè)并行幀的實(shí)際比特?cái)?shù),利用預(yù)測(cè)的實(shí)際比特?cái)?shù)來(lái)更新實(shí)際比特?cái)?shù)之和,使ABR算法在并行架構(gòu)下的QP值更加精確;后者將幀層補(bǔ)償算法的固定補(bǔ)償值根據(jù)實(shí)際輸出比特和目標(biāo)比特的差值和到當(dāng)前幀的平均SATD進(jìn)行修改使其能夠自動(dòng)調(diào)節(jié)大小,使得補(bǔ)償值更加合理。通過(guò)這兩種方法作用使得輸出碼率更接近目標(biāo)碼率,同時(shí)提高編碼客觀質(zhì)量。
表2幀層補(bǔ)償算法的碼率結(jié)果
參考文獻(xiàn):
[1]MAHSATP,COLIND,MARYAMA,etal.HEVC:thenewgoldstandardforvideocompression[J].IEEEconsumerelectronicsmagazine,2012,1(3):36-46.
[2]GARYJS,OHMJR,HANWJ,etal.OverviewofthehighefficiencyvideoCoding(HEVC)standard[J].IEEEtransactionsonsystemsforvideotechnology, 2012,22(12):1649-1668.
[3]陳杰.H.264視頻編解碼傳輸算法平臺(tái)及碼率控制研究[D].上海:上海交通大學(xué),2007.
[4]HUQ,ZHANGX,GAOZ,etal.Analysisandoptimizationofx265encoder[C]//Proc.IEEEVisualCommunicationsandImageProcessingConference.Valletta:IEEEPress,2014:502-505.
[5]蔣驍辰,李國(guó)平.基于AVS+實(shí)時(shí)編碼的多核并行視頻編碼算法[J].電子與信息學(xué)報(bào),2014,36(4):810-816.
[6]LORENM,RAHULV.ImprovedratecontrolandmotionestimationforH.264encoder[C]//Proc.IEEEInternationalConferenceonImageProcessing.SanAntonio,TX:IEEEPress,2007:309-312.
[7]MEHDIS,MOHSENJ,MAHMOUDR.Anadaptiveratecontrolforfasterbitrateshapinginx264basedvideoconferencing[C]//Proc.IEEEInternationalSymposiumonBroadbandMultimediaSystemsandBroadcasting(BMSB).Shanghai:IEEEPress,2010:1-4.
[8]田一姝,沈強(qiáng),劉延偉,等.X264的平均比特率控制算法優(yōu)化[J].計(jì)算機(jī)應(yīng)用,2013,33(3): 680-683.
陳辰燦(1989— ),碩士生,主研視頻編解碼技術(shù);
滕國(guó)偉(1975— ),碩士生導(dǎo)師,主要研究方向?yàn)閿?shù)字音視頻編解碼技術(shù)、智能視頻分析等;
趙海武(1973— ),碩士生導(dǎo)師,主要研究方向?yàn)閿?shù)字視頻編解碼、轉(zhuǎn)碼技術(shù);
李國(guó)平(1974— ),碩士生導(dǎo)師,主要研究方向?yàn)閿?shù)字音視頻編解碼技術(shù)、復(fù)用技術(shù);
王國(guó)中(1962— ),博士生導(dǎo)師,主要研究方向?yàn)橐曨l編解碼與多媒體通信、圖像處理等。
責(zé)任編輯:時(shí)雯
Parallelbit-ratecontrolalgorithmforHEVC
CHENChencan,TENGGuowei,ZHAOHaiwu,LIGuoping,WANGGuozhong
(School of Communication and Information Engineering, Shanghai University, Shanghai 200072,China)
Keywords:videocoding;ratecontrol;averagebit-rate;actualbits
Abstract:Duringthetransmissionprocessofvideocommunication,thenetworkbandwidthislimited,inordertoachievehighqualityofdecodedimageundertheconditionofagiventargetbitrate,aratecontrolregulationisrequiredinthevideocodec.TheparallelencodingandratecontrolforHEVChasbecomeadvancedresearchfocus.Theaveragebitratecontrolalgorithmsunderexistingparallelstructureisrestrainedbytheinter-dependent,sothecodingframecannottimelyobtaintheactualbitsofframeswhichareinparallelwithit.Therefore,inthispaper,itpredictstheactualbitsoftheframeforratecontrol.Onthisbasis,anewcompensationalgorithmisproposedintheframelayertoadjusttheQuantizationParameter(QP)ofthecurrentframe.Theresultsshowthatthefirstmethodreducestherateoferrorby3.38%,andthesecondoneimprovestheaveragePeakSignal-to-NoiseRatio(PSNR)of0.204dBandwith0.3%reductionoftherateoferrorsimutaneously.
中圖分類號(hào):TN919.8
文獻(xiàn)標(biāo)志碼:A
DOI:10.16280/j.videoe.2016.01.002
基金項(xiàng)目:上海市自然科學(xué)基金項(xiàng)目(14ZR1415200);國(guó)家自然科學(xué)基金項(xiàng)目(61271212)
作者簡(jiǎn)介:
收稿日期:2015-08-10
文獻(xiàn)引用格式:陳辰燦,滕國(guó)偉,趙海武,等. 一種面向HEVC的并行碼率控制算法[J].電視技術(shù),2016,40(1):7-12.
CHENCC,TENGGW,ZHAOHW,etal.Parallelbit-ratecontrolalgorithmforHEVC[J].Videoengineering,2016,40(1):7-12.