本發(fā)明涉及圖像處理領(lǐng)域,具體涉及一種空間攝影防抖處理方法及裝置。
背景技術(shù):
在現(xiàn)有的拍照和視頻拍攝服務(wù)解決方案中,視頻拍攝技術(shù)與后期抖動處理有這廣泛的應(yīng)用。如拍攝者行走中拍攝、顛簸和顫抖,現(xiàn)有市場對于視頻處理的解決方案有如下兩種:
基于硬件設(shè)備的光學(xué)圖像穩(wěn)定系統(tǒng),如iPhone6s Plus中硬件設(shè)備等。
基于視頻文件導(dǎo)出后應(yīng)用視頻處理軟件進行處理。如iMovie,After Effects等。
第一種解決方案只能應(yīng)用在固定的設(shè)備中,不搭載光學(xué)圖像穩(wěn)定系統(tǒng)的設(shè)備的用戶無法得到更好的防抖動效果,這樣的解決方案就有一定的局限性,不能應(yīng)用其他設(shè)備上。
第二種解決方案是視頻后期處理,市面上各個平臺有很好的處理解決方案,顯示了視頻處理后的防抖動效果,但是這種解決方案存在一個比較大的問題——視頻需要導(dǎo)出到其他平臺處理,需要人力與時間的消耗。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供的空間攝影防抖處理方法,操作簡便,能夠應(yīng)用于任一型號的移動設(shè)備,實現(xiàn)視頻錄制防抖功能,通過對處理過程的優(yōu)化,正真做到邊錄制邊處理,并實時輸出的目的。
第一方面,本發(fā)明提供的一種空間攝影防抖處理方法包括:對采集到的彩色圖像做卷積運算,得到灰度化后的圖像;通過FastFeatureDetector算法提取灰度化后的圖像中的角點,以所述角點為特征點;采用calcOpticalFlowPyrLK算法對當(dāng)前幀圖像進行光流追蹤,得到與上一幀圖像的特征點對應(yīng)的特征點;通過estimateRigidTransform算法計算相鄰兩幀圖像間對應(yīng)的特征點的偏移量,根據(jù)所述偏移量得到所述相鄰兩幀圖像間的豎直偏移量、水平偏移量和角度偏移量;分別計算連續(xù)的預(yù)定幀數(shù)的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量;根據(jù)所述角度平均偏移量對當(dāng)前幀圖像進行旋轉(zhuǎn),根據(jù)所述豎直平均偏移量、所述水平平均偏移量對旋轉(zhuǎn)后的當(dāng)前幀圖像進行剪裁;將剪裁后的當(dāng)前幀圖像轉(zhuǎn)化為彩色圖像,并進行幀翻轉(zhuǎn)后輸出。
優(yōu)選地,所述通過FastFeatureDetector算法提取灰度化后的圖像中的角點,包括:通過FastFeatureDetector算法檢測當(dāng)前幀圖像中的角點,F(xiàn)astFeatureDetector算法中的窗口大小為t×t,t為上一幀圖像的角點檢測閾值;計算所有所述角點附近t×t范圍內(nèi)的角點數(shù)量的平均值m;若所述角點周圍t×t范圍內(nèi)的角點數(shù)量大于m,則剔除所述角點;m作為下一幀圖像的角點檢測閾值。
優(yōu)選地,所述根據(jù)所述豎直平均偏移量、所述水平平均偏移量對旋轉(zhuǎn)后的當(dāng)前幀圖像進行剪裁,包括:將所述豎直平均偏移量作為第一豎直剪裁量,根據(jù)最終顯示的圖像比例和所述豎直平均偏移量第一水平剪裁量;將所述水平平均偏移量作為第二水平剪裁量,根據(jù)最終顯示的圖像比例和所述水平平均偏移量得到第二豎直剪裁量;若所述第一豎直剪裁量不小于所述第二豎直剪裁量,則根據(jù)所述第一豎直剪裁量和第一水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁,否則根據(jù)所述第二豎直剪裁量和第二水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁。
優(yōu)選地,在圖像灰度化步驟之前還包括:檢測圖像是否為橫向的圖像,若不是,則對圖像空間旋轉(zhuǎn)90度;在圖像彩色化和幀翻轉(zhuǎn)之間還包括:若在圖像灰度化步驟之前進行了空間旋轉(zhuǎn),則對所述彩色圖像空間旋轉(zhuǎn)-90度。
優(yōu)選地,所述分別計算連續(xù)的預(yù)定幀數(shù)的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量,包括:分別計算連續(xù)的20幀圖像的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量。
第二方面,本發(fā)明提供的一種空間攝影防抖處理裝置,包括:灰度化模塊,用于對采集到的彩色圖像做卷積運算,得到灰度化后的圖像;角點提取模塊,用于通過FastFeatureDetector算法提取灰度化后的圖像中的角點,以所述角點為特征點;光流追蹤模塊,用于采用calcOpticalFlowPyrLK算法對當(dāng)前幀圖像進行光流追蹤,得到與上一幀圖像的特征點對應(yīng)的特征點;偏移量計算模塊,用于通過estimateRigidTransform算法計算相鄰兩幀圖像間對應(yīng)的特征點的偏移量,根據(jù)所述偏移量得到所述相鄰兩幀圖像間的豎直偏移量、水平偏移量和角度偏移量;平均偏移量計算模塊,用于分別計算連續(xù)的預(yù)定幀數(shù)的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量;圖像剪裁模塊,用于根據(jù)所述角度平均偏移量對當(dāng)前幀圖像進行旋轉(zhuǎn),根據(jù)所述豎直平均偏移量、所述水平平均偏移量對旋轉(zhuǎn)后的當(dāng)前幀圖像進行剪裁;后期處理模塊,用于將剪裁后的當(dāng)前幀圖像轉(zhuǎn)化為彩色圖像,并進行幀翻轉(zhuǎn)后輸出。
優(yōu)選地,所述角點提取模塊具體用于:通過FastFeatureDetector算法檢測當(dāng)前幀圖像中的角點,F(xiàn)astFeatureDetector算法中的窗口大小為t×t,t為上一幀圖像的角點檢測閾值;計算所有所述角點附近t×t范圍內(nèi)的角點數(shù)量的平均值m;若所述角點周圍t×t范圍內(nèi)的角點數(shù)量大于m,則剔除所述角點;m作為下一幀圖像的角點檢測閾值。
優(yōu)選地,所述圖像剪裁模塊具體用于:將所述豎直平均偏移量作為第一豎直剪裁量,根據(jù)最終顯示的圖像比例和所述豎直平均偏移量第一水平剪裁量;將所述水平平均偏移量作為第二水平剪裁量,根據(jù)最終顯示的圖像比例和所述水平平均偏移量得到第二豎直剪裁量;若所述第一豎直剪裁量不小于所述第二豎直剪裁量,則根據(jù)所述第一豎直剪裁量和第一水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁,否則根據(jù)所述第二豎直剪裁量和第二水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁。
優(yōu)選地,還包括圖像第一旋轉(zhuǎn)模塊,用于在圖像灰度化步驟之前檢測圖像是否為橫向的圖像,若不是,則對圖像空間旋轉(zhuǎn)90度;還包括圖像第二旋轉(zhuǎn)模塊,用于若在圖像灰度化步驟之前進行了空間旋轉(zhuǎn),則在圖像彩色化和幀翻轉(zhuǎn)之間對所述彩色圖像空間旋轉(zhuǎn)-90度。
優(yōu)選地,所述平均偏移量計算模塊具體用于:分別計算連續(xù)的20幀圖像的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量。
附圖說明
圖1為本發(fā)明實施例提供的空間攝影防抖處理方法的流程圖;
圖2為本發(fā)明實施例提供的空間攝影防抖處理裝置的結(jié)構(gòu)框圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明技術(shù)方案的實施例進行詳細的描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只是作為示例,而不能以此來限制本發(fā)明的保護范圍。
需要注意的是,除非另有說明,本申請使用的技術(shù)術(shù)語或者科學(xué)術(shù)語應(yīng)當(dāng)為本發(fā)明所屬領(lǐng)域技術(shù)人員所理解的通常意義。
本發(fā)明實施例提供的方法主要應(yīng)用于手機、相機等帶攝像功能的移動設(shè)備中,提高設(shè)備錄制視頻的防抖能力。
如圖1所示,本發(fā)明實施例提供的一種空間攝影防抖處理方法,包括:
步驟S1,對采集到的彩色圖像做卷積運算,得到灰度化后的圖像;
步驟S2,通過FastFeatureDetector算法提取灰度化后的圖像中的角點,以角點為特征點;
步驟S3,采用calcOpticalFlowPyrLK算法對當(dāng)前幀圖像進行光流追蹤,得到與上一幀圖像的特征點對應(yīng)的特征點;
步驟S4,通過estimateRigidTransform算法計算相鄰兩幀圖像間對應(yīng)的特征點的偏移量,根據(jù)偏移量得到相鄰兩幀圖像間的豎直偏移量、水平偏移量和角度偏移量;
步驟S5,分別計算連續(xù)的預(yù)定幀數(shù)的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量;
步驟S6,根據(jù)角度平均偏移量對當(dāng)前幀圖像進行旋轉(zhuǎn),根據(jù)豎直平均偏移量、水平平均偏移量對旋轉(zhuǎn)后的當(dāng)前幀圖像進行剪裁;
步驟S7,將剪裁后的當(dāng)前幀圖像轉(zhuǎn)化為彩色圖像,并進行幀翻轉(zhuǎn)后輸出。
FastFeatureDetector算法相對常規(guī)角點提取算法,能夠更快速地提取圖像中的角點,效率更高,因此能保證在移動設(shè)備上的執(zhí)行時間更短,節(jié)省移動設(shè)備的電量,防止機身發(fā)燙。角點是一種局部特征點,在角點處,圖像灰度的一階導(dǎo)數(shù)為局部最大,圖像的灰度在各個方向上均有變化,角點屬于強特征點,通過以角點為特征點來進行光流追蹤,有助于提高準(zhǔn)確度和效率。為進一步提高處理效率,光流追蹤算法采用calcOpticalFlowPyrLK算法。
光流變換算法采用estimateRigidTransform算法,計算相鄰兩幀圖像間光流點的偏移量,該算法運行效率高,進而得到相鄰兩幀圖像間水平、豎直、角度三個維度的偏移量,對多幀圖像的三個維度的偏移量進行累加平均,得到一個合適的偏移量用于后續(xù)的圖像剪裁中,多幀累加平均可以防止因單幀抖動過大而引起的偏移量過大的情況。根據(jù)計算得到的三個維度的偏移量,對圖像進行旋轉(zhuǎn)、剪裁。
整個處理過程中的圖像為灰度圖像,還需要將灰度圖像轉(zhuǎn)化為彩色圖像。由于步驟S1中,在圖像灰度化時采用了卷積的方式,會引起圖像的鏡像變化,即圖像水平翻轉(zhuǎn)了180度,因此,在處理完后,還需要對圖像進行幀翻轉(zhuǎn)。
本發(fā)明實施例提供的空間攝影防抖處理方法,操作簡便,能夠應(yīng)用于任一型號的移動設(shè)備,實現(xiàn)視頻錄制防抖功能,通過對處理過程的優(yōu)化,正真做到邊錄制邊處理,并實時輸出的目的。
FastFeatureDetector算法比其他已知的角點檢測法要快很多倍,但是當(dāng)圖片的噪點較多時,其健壯性并不好,該算法的健壯性取決于角點檢測閾值:當(dāng)角點檢測閾值過小時,檢測出的角點過多,當(dāng)角點檢測閾值過大時,又存在角點漏檢的風(fēng)險。檢測到過多的角點會增加光流追蹤以及后續(xù)處理的計算量,而過度密集的角點反映的是相鄰區(qū)域內(nèi)的像素點的偏移量,也無法顯著地提高處理結(jié)果的精度,反而增加了計算量,容易導(dǎo)致系統(tǒng)不穩(wěn)定。因為FastFeatureDetector算法沒有計算角響應(yīng)度,所以很難采用常規(guī)的方法來直接進行非極大值抑制。因此,本發(fā)明實施例對FastFeatureDetector算法中的角點檢測閾值作出了調(diào)整,摒棄原來固定的閾值,采用在處理過程中,針對每幀圖像實時動態(tài)調(diào)整角點檢測閾值,保證只檢測到需要的角點,而濾除大部分不需要的角點,大大減少了計算量。步驟S2的優(yōu)選方式包括:通過FastFeatureDetector算法檢測當(dāng)前幀圖像中的角點,F(xiàn)astFeatureDetector算法中的窗口大小為t×t,t為上一幀圖像的角點檢測閾值;計算所有角點附近t×t范圍內(nèi)的角點數(shù)量的平均值m;若角點周圍t×t范圍內(nèi)的角點數(shù)量大于m,則剔除角點;m作為下一幀圖像的角點檢測閾值。
為提高視頻的觀看體驗,必須保證剪裁后的圖像的比例一致,本發(fā)明實施例,提供了步驟S6的優(yōu)選方式,具體包括:將豎直平均偏移量作為第一豎直剪裁量,根據(jù)最終顯示的圖像比例和豎直平均偏移量第一水平剪裁量;將水平平均偏移量作為第二水平剪裁量,根據(jù)最終顯示的圖像比例和水平平均偏移量得到第二豎直剪裁量;若第一豎直剪裁量不小于第二豎直剪裁量,則根據(jù)第一豎直剪裁量和第一水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁,否則根據(jù)第二豎直剪裁量和第二水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁。
在錄制視頻過程中,有些設(shè)備錄制的視屏是橫向的,有些是豎向的,為保證后續(xù)不理步驟的順利進行,在步驟S1之前先檢測圖像是否為橫向圖像,若不是,則對圖像空間旋轉(zhuǎn)90度,將豎向的圖像裝換為橫向的圖像;相應(yīng)的,步驟S7中在圖像彩色化之后、幀翻轉(zhuǎn)之前對圖像進行空間旋轉(zhuǎn)-90度,還原成原來豎向的圖像。
為提高防抖效果,保證處理速度,步驟S5的優(yōu)選方式包括:分別計算連續(xù)的20幀圖像的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量。
本發(fā)明實施例提供的一種空間攝影防抖處理裝置,包括:灰度化模塊101,用于對采集到的彩色圖像做卷積運算,得到灰度化后的圖像;角點提取模塊102,用于通過FastFeatureDetector算法提取灰度化后的圖像中的角點,以角點為特征點;光流追蹤模塊103,用于采用calcOpticalFlowPyrLK算法對當(dāng)前幀圖像進行光流追蹤,得到與上一幀圖像的特征點對應(yīng)的特征點;偏移量計算模塊104,用于通過estimateRigidTransform算法計算相鄰兩幀圖像間對應(yīng)的特征點的偏移量,根據(jù)偏移量得到相鄰兩幀圖像間的豎直偏移量、水平偏移量和角度偏移量;平均偏移量計算模塊105,用于分別計算連續(xù)的預(yù)定幀數(shù)的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量;圖像剪裁模塊106,用于根據(jù)角度平均偏移量對當(dāng)前幀圖像進行旋轉(zhuǎn),根據(jù)豎直平均偏移量、水平平均偏移量對旋轉(zhuǎn)后的當(dāng)前幀圖像進行剪裁;后期處理模塊107,用于將剪裁后的當(dāng)前幀圖像轉(zhuǎn)化為彩色圖像,并進行幀翻轉(zhuǎn)后輸出。
本發(fā)明實施例提供的空間攝影防抖處理裝置,操作簡便,能夠應(yīng)用于任一型號的移動設(shè)備,實現(xiàn)視頻錄制防抖功能,通過對處理過程的優(yōu)化,正真做到邊錄制邊處理,并實時輸出的目的。
進一步地,角點提取模塊具體用于:通過FastFeatureDetector算法檢測當(dāng)前幀圖像中的角點,F(xiàn)astFeatureDetector算法中的窗口大小為t×t,t為上一幀圖像的角點檢測閾值;計算所有角點附近t×t范圍內(nèi)的角點數(shù)量的平均值m;若角點周圍t×t范圍內(nèi)的角點數(shù)量大于m,則剔除角點;m作為下一幀圖像的角點檢測閾值。
進一步地,圖像剪裁模塊具體用于:將豎直平均偏移量作為第一豎直剪裁量,根據(jù)最終顯示的圖像比例和豎直平均偏移量第一水平剪裁量;將水平平均偏移量作為第二水平剪裁量,根據(jù)最終顯示的圖像比例和水平平均偏移量得到第二豎直剪裁量;若第一豎直剪裁量不小于第二豎直剪裁量,則根據(jù)第一豎直剪裁量和第一水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁,否則根據(jù)第二豎直剪裁量和第二水平剪裁量對當(dāng)前幀圖像進行水平、豎直方向的剪裁。
進一步地,還包括圖像第一旋轉(zhuǎn)模塊,用于在圖像灰度化步驟之前檢測圖像是否為橫向的圖像,若不是,則對圖像空間旋轉(zhuǎn)90度;還包括圖像第二旋轉(zhuǎn)模塊,用于若在圖像灰度化步驟之前進行了空間旋轉(zhuǎn),則在圖像彩色化和幀翻轉(zhuǎn)之間對彩色圖像空間旋轉(zhuǎn)-90度。
進一步地,平均偏移量計算模塊具體用于:分別計算連續(xù)的20幀圖像的豎直偏移量、水平偏移量和角度偏移量的算術(shù)平均值,得到豎直平均偏移量、水平平均偏移量和角度平均偏移量。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當(dāng)中。