亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于人臉識別的人臉漫畫處理系統(tǒng)

        2019-06-09 10:36:01儲昭兵王天寶毛水凌
        軟件導(dǎo)刊 2019年4期
        關(guān)鍵詞:人臉識別特征提取

        儲昭兵 王天寶 毛水凌

        摘 要:為了簡單、便捷、快速地實現(xiàn)人物肖像漫畫創(chuàng)作,設(shè)計一種基于安卓平臺的自動化肖像漫畫生成系統(tǒng)。系統(tǒng)采用主動形狀模型方法,對大量真實人臉進行特征分析得到平均人臉特征庫,并對用戶輸入的人臉肖像進行特征檢測、提取與篩選,然后結(jié)合漫畫藝術(shù)家對人臉漫畫的作畫規(guī)律,對篩選的特征以及與平均人臉差異較大的特征進行歸類。對不同特征采用不同夸張化方法,配以不同夸張尺度,再由計算機完成自動形變,以實現(xiàn)人臉肖像漫畫的自動藝術(shù)化夸張,得到接近漫畫創(chuàng)作者水平的人臉漫畫。通過該系統(tǒng)可大幅減少漫畫工作者的工作量,使普通用戶也能便捷地進行人臉肖像漫畫創(chuàng)作。

        關(guān)鍵詞:人臉識別;人臉漫畫;肖像生成;特征提取;圖像處理

        DOI:10. 11907/rjdk. 181853

        中圖分類號:TP303文獻標(biāo)識碼:A文章編號:1672-7800(2019)004-0036-05

        0 引言

        作為藝術(shù)的一種表達方式,人臉漫畫一直是藝術(shù)家表達人類面部甚至性格特征的重要手段。隨著現(xiàn)代漫畫的興起,肖像漫畫風(fēng)靡各大社交平臺、報刊及論壇。然而,一方面漫畫藝術(shù)表達需要藝術(shù)家經(jīng)過長期刻苦訓(xùn)練,不斷臨摹、練習(xí)才能創(chuàng)作完成[1-2],另一方面,漫畫家的繪畫風(fēng)格與技巧難以用清晰且不存在二義性的語法規(guī)則進行表示。因此漫畫這種具有強烈主觀性的藝術(shù)創(chuàng)作形式很難被計算機自動模擬,導(dǎo)致普通人幾乎無法參與漫畫創(chuàng)作。

        PICASSO是國外應(yīng)用較多的一種人臉編輯系統(tǒng),其主要通過面部特征輪廓自動生成漫畫,缺點是夸張不夠平滑,無法很好地反映漫畫的藝術(shù)化夸張風(fēng)格?!癟型規(guī)則”是陳文娟等[4]提出的一種人臉漫畫特征規(guī)則,即將眼睛保持在水平軸,鼻子作為垂直軸,眼睛之間距離的變化應(yīng)與鼻子長短保持協(xié)調(diào)。當(dāng)眼睛之間距離變長,鼻子長度則應(yīng)相應(yīng)縮短,若眼睛之間距離變短,鼻子則應(yīng)該變長。該規(guī)則較好地闡述了人臉眼部與鼻子之間的夸張形變關(guān)系,但未闡述人臉其它部位特征與漫畫藝術(shù)之間的關(guān)系;閻芳等[5]提出一種基于人臉三庭五眼關(guān)系的形變方法。人臉五官的位置比例基本上體現(xiàn)在三庭的位置,而三庭之間的比例是上庭∶中庭∶下庭=1∶1∶1。由于一般人不會嚴(yán)格符合該比例,所以該比例可反映出人與人之間的差異。此時對三庭直接進行整體變形,可以粗略得到具有突出特征風(fēng)格的漫畫人臉,然后根據(jù)眼寬:鼻寬:嘴寬=2∶2∶3的比例關(guān)系再次進行形變,即可得到具有一定夸張程度的人臉肖像畫。

        本文使用ASM模型算法建立一套漫畫生成系統(tǒng),為普通人利用計算機自動化地完成漫畫形象設(shè)計提供了簡單的解決方案。

        1 技術(shù)要點

        1.1 漫畫特征

        (1)簡化性:卡通漫畫是以自然形象為原型,通過高度抽象、概括、提煉、藝術(shù)化而創(chuàng)作出來的具有象征性的對象[6]。

        (2)鮮明性:創(chuàng)作者經(jīng)常會通過夸張的手法設(shè)計出形象鮮明的漫畫對象,以表達出與其夸張形象相對應(yīng)的內(nèi)在個性。

        (3)親和性:漫畫應(yīng)對普通大眾有一種強烈吸引力,即漫畫形象可引起人們的認(rèn)可、喜愛或者憎惡。

        (4)時尚性:漫畫應(yīng)與其傳播媒介相互促進,走在科技與時尚的最前沿。

        1.2 三庭五眼

        三庭五眼是指人臉長寬之間的標(biāo)準(zhǔn)比例。三庭指人臉縱向長度比例,將人臉三等分,從前額發(fā)際線到眉心、眉心到鼻尖、鼻尖到下頜各占臉長的1/3;五眼指人臉橫向比例,以人眼睛為量度單位,將人臉分為五等寬。兩眼之間為一只眼睛的寬度,兩眼兩側(cè)也分別為一只眼睛的寬度。

        1.3 OpenCV

        OpenCV(Open Source Computer Vision Library)是一個具有跨平臺能力的計算機視覺處理庫,而且其完全開源,開發(fā)者能自由使用。其具有C、C++、Python和Java的接口,且支持Windows、Mac OS、iOS與Android等多個平臺。OpenCV專為計算優(yōu)化而設(shè)計,強調(diào)實時應(yīng)用,并啟用OpenCL實現(xiàn)硬件加速。C/C++編寫的底層庫可以利用計算機的多核處理能力加快圖像、視頻處理速度。本系統(tǒng)采用具有Java接口的OpenCV for Android庫作為圖像底層計算處理支持庫。

        1.4 Android-NDK

        Android-NDK(Native Development Kit,安卓原生開發(fā)工具包)提供了一系列工具,幫助開發(fā)者快速開發(fā)C/C++動態(tài)庫,并能將生成的so包與Java應(yīng)用一起打包成APK[10]。NDK集成了交叉編譯器,并提供了相應(yīng)的makefile文件以隔離CPU、平臺、ABI等的差異,開發(fā)人員只需簡單地修改makefile文件即可創(chuàng)建出與so平臺對應(yīng)的so包。

        2 系統(tǒng)設(shè)計

        本系統(tǒng)由人臉采集、人臉識別、邊緣檢測、特征點定位、背景去除、輪廓生成、人臉夸張形變與結(jié)果顯示8個子模塊組成。其中特征點定位、背景去除、輪廓生成和夸張形變?yōu)橄到y(tǒng)核心功能模塊。具體模塊及功能描述如表1所示。

        系統(tǒng)流程設(shè)計如圖1所示,界面設(shè)計如圖2所示。

        3 系統(tǒng)模塊實現(xiàn)

        3.1 人臉采集

        人臉采集是系統(tǒng)的圖像輸入源,系統(tǒng)監(jiān)聽攝像頭并截取圖像。主要實現(xiàn)方法如下:

        (1)Camera getCameraInstance(Context context, int CameraId):攝像頭控制接口,用于打開并獲得安卓平臺的攝像頭信息。

        (2)類CameraPreview:繼承自SurfaceView類并實現(xiàn)SurfaceHolder.Callback接口,用于在界面上顯示攝像頭捕獲的畫面。

        (3)onPreviewFrame(byte[] data, Camera camera):用于獲取攝像頭捕獲畫面的當(dāng)前幀。

        (4)onClick(View v):用于監(jiān)聽用戶屏幕點擊動作。

        3.2 人臉識別

        該模塊主要用于識別輸入圖像中是否包含人臉。將模塊MC-1中截取的圖像作為輸入,然后調(diào)用OpenCV開源圖形庫中的人臉檢測算法,得到圖像中包含人臉區(qū)域的坐標(biāo)。將人臉區(qū)域用綠色方框圈出,主要實現(xiàn)方法如下:

        (1)Mat FaceDetect(Mat src, double scaleFactor, int minNeighbors, int minSize):用于調(diào)用Native()方法檢測出人臉并返回人臉區(qū)域。

        (2)Mat detectFacesAndExtractFace(Mat src, Mat face):傳入?yún)?shù)是原圖像與人臉區(qū)域圖像,將其進行對比并將人臉在原圖像中用綠色方框圈出。

        (3)類FaceDetectThread:用于處理人臉檢測的子線程類。

        3.3 邊緣檢測

        該模塊主要用于檢測人臉輪廓和背景輪廓,通過處理當(dāng)前幀圖像,顯示攝像頭捕捉的輪廓線條。其使用方法Mat CannyDetect(Mat src,double threshold1,double threshold2, int aperatureSize),并調(diào)用Native方法對當(dāng)前幀圖片邊緣輪廓進行檢測,最后返回。

        3.4 特征點定位

        ASM(Active Shape Model,主動形狀模型)是一個基于點分布模型的算法,其通過已手動標(biāo)記的大量樣本,獲得人臉各個識別定位點的特征分布統(tǒng)計信息[7],并且通過獲取每一個特征的局部紋理,推斷出附近特征點位置,以此迭代不斷找出下一特征點。對于樣本而言,所有特征點位置均為人工標(biāo)定。

        3.4.1 ASM訓(xùn)練與搜索

        ASM進行人臉識別包括訓(xùn)練和搜索兩個過程。

        (1)ASM訓(xùn)練。訓(xùn)練樣本集合包括n張樣本圖像,每張圖像都包括已手動標(biāo)記的k個特征點。對于每個圖像而言,需要記錄每個特征點坐標(biāo)信息并保存到文本中。所有特征點[k]按照順序組合為一個形狀向量:

        形狀向量歸一化的主要目的是消除圖像中人臉由于不同角度、距離、姿態(tài)造成的非形狀干擾。將所有形狀向量通過仿射變換,在不更改點向量各點相對位置的前提下,將所有向量一一對齊到同一個新向量中。具體步驟為:①將訓(xùn)練的人臉樣本模型對齊到新的人臉;②計算平均人臉模型[x];③將所有訓(xùn)練樣本對齊到[x]上;④重復(fù)步驟②、③,直到收斂。采用該方式可將任何一個向量表示為[x≈x+PSbS]。

        3.4.3 算法實現(xiàn)

        首先加載已手動標(biāo)識好特征點的人臉樣本識別數(shù)據(jù)到內(nèi)存;然后將采集到的人臉圖像作為輸入圖像,運行人臉識別代碼,檢測到人臉后開始使用ASM算法進行人臉特征點定位;定位完成后,將結(jié)果以列表形式保存到內(nèi)存中。特征點定位對于移動設(shè)備而言是耗時較多的工作,需要在非主線程中進行處理。主要實現(xiàn)方法為:

        (1)int[] FindFaceLandmarks(Mat src,float ratioW, float ratioH):用于調(diào)用Native尋找人臉識別點,并返回到一個int類型數(shù)組中。

        (2)void findAsmLandmarks(Mat src):用于啟動新線程。

        (3)void drawAsmPoints(Mat src,List list):主要用于檢測是否返回系統(tǒng)需要的特征點,傳入?yún)?shù)是Native方法返回的int類型數(shù)據(jù)。

        3.5 背景去除

        本模塊用于去除背景信息對漫畫的影響,分離人臉區(qū)域與背景區(qū)域。采用類BackgroundWipe去除人臉,盡量多地保存頭發(fā)信息并去除無關(guān)背景信息。因為系統(tǒng)針對的人臉識別區(qū)域僅限于人臉,而不包括頭發(fā),因此本模塊必須提取出包含頭發(fā)和人臉的區(qū)域。

        3.6 輪廓生成

        輪廓生成是為了將人臉頭像轉(zhuǎn)變?yōu)榫€條更接近于漫畫風(fēng)格的圖像[9]。對于通過MC-5模塊去除背景的圖像,首先直接將圖片進行灰度化處理得到灰度圖,之后進行二值化處理;由于所需的人臉輪廓部分剛好是灰度變化很大,且灰度值較低的部分,所以只需將灰度變化很大的區(qū)域采用黑色像素進行填充,其余部分采用白色像素填充,即完成了人臉輪廓生成[10];輪廓生成對于移動設(shè)備而言是十分耗時的,需要在非主線程中進行,因此需要開辟新線程,然后通過Message方式將結(jié)果發(fā)送到主線程中的handler;最后,利用類Threshold將已去除背景的人臉肖像線條化。

        3.7 夸張形變

        為了凸顯相對于平均人臉差異較大的部分,模擬藝術(shù)家對不同部分人臉的夸張尺度[11],系統(tǒng)采用Feature類用于保存平均人臉五官、臉長寬與臉之間的比例關(guān)系。平均人臉符合三庭五眼規(guī)則,即人臉中上庭∶中庭∶下庭的比例為1∶1∶1;人臉寬度與眼睛之間的比例為5∶1,其中人眼之間的距離為一個眼睛的寬度,兩邊各占一個眼睛的寬度[12]。鼻子寬度為一個眼睛的寬度,嘴巴寬度為人臉的1/3。本模塊使用的主要方法如下:

        (1)Map featureList():用于計算用戶輸入人臉中五官、人臉長寬之間的比例關(guān)系。

        (2)List virticalSplit(Mat mat,List points):用于將用戶輸入的人臉分為上庭、中庭和下庭3部分,該3部分會根據(jù)其與平均人臉之間對應(yīng)部分的長度比例進行夸張化,這是人臉縱向上的夸張化。

        (3)Mat imgStitch(List mats):用于拼接組合分離的各個部分人臉。

        (4)Mat mideye(double scale,Mat mat,List list):用于實現(xiàn)人眼的分離與聚攏,輸入?yún)?shù)為縮放系數(shù)、原圖像及特征點列表,返回變化后的圖像。

        (5)Mat mouth(double scale,Mat mat,List list):用于實現(xiàn)人嘴的放大與縮小,輸入?yún)?shù)為縮放系數(shù)、原圖像及特征點列表,返回變化后的圖像。

        (6)Mat eye(double scale,Mat mat,List list):用于人眼的放大與縮小,輸入?yún)?shù)為縮放系數(shù)、原圖像及特征點列表,返回變化后的圖像。

        (7)類Deformation:是用于人臉形變的主要類,構(gòu)造方法為Deformation(Context context,Mat mat,List list),需要傳入的參數(shù)為上下文環(huán)境、已進行二值化處理的圖像及特征點列表。由于形變處理過程非常耗時,無法在主線程中直接使用,因此該類繼承自Thread類,并在處理完成后將處理結(jié)果以message方式發(fā)送到主線程中。主要實現(xiàn)代碼如下:

        public void run() {

        mMap = new HashMap();

        FindFeature find = new FindFeature(mList);

        mMap = find.getMap();

        top = mMap.get("top")/(Feature.TOP/Feature.HEIGHT); //三庭

        middle = mMap.get("middle")/(Feature.MIDDLE/Feature.HEIGHT);

        bottom = mMap.get("bottom")/(Feature.BOTTOM/Feature.HEIGHT);

        left = mMap.get("left")/(Feature.EYE/Feature.WIDTH);//五眼

        right = mMap.get("right")/(Feature.EYE/Feature.WIDTH);

        mideye = mMap.get("mideye")/(Feature.EYE/Feature.WIDTH);

        eye = mMap.get("eye")/(Feature.EYE/Feature.WIDTH);

        nose = mMap.get("nose")/(Feature.NOSE/Feature.WIDTH);

        mouth = mMap.get("mouth")/(Feature.MOUTH/Feature.WIDTH);

        mMat = mideye(mideye, mMat, mList);

        mMat = mouth(mouth, mMat, mList);//嘴巴變化

        mMat = eye(eye, mMat, mList); //眼睛變化

        List mats = new ArrayList();

        mats = virticalSplit(mMat, mList);

        if (top>1) {

        if (middle>1) {//縮小下庭

        double scaleRate = bottom*bottom*bottom;

        Mat temp = new Mat();

        Size dsize = new Size(mMat.cols(), scaleRate*mats.get(2).rows());

        Imgproc.resize(mats.get(2), temp, dsize);

        mats.set(2, temp);

        }else if (bottom>1) {//縮小中庭

        double scaleRate = middle*middle*middle;

        Mat temp = new Mat();

        Size dsize = new Size(mMat.cols(), scaleRate*mats.get(1).rows());

        Imgproc.resize(mats.get(1), temp, dsize);

        mats.set(1, temp);

        }else {//放大上庭

        double scaleRate = top*top;

        Mat temp = new Mat();

        Size dsize = new Size(mMat.cols(), scaleRate*mats.get(0).rows());

        Imgproc.resize(mats.get(0), temp, dsize);

        mats.set(0, temp);

        }

        }else if (middle>1) {

        if (bottom>1) {//縮小上庭

        double scaleRate = top*top*top;

        Mat temp = new Mat();

        Size dsize = new Size(mMat.cols(), scaleRate*mats.get(0)。rows());

        Imgproc.resize(mats.get(0), temp, dsize);

        mats.set(0, temp);

        }else {//放大中庭

        double scaleRate = middle*middle;

        Mat temp = new Mat();

        Size dsize = new Size(mMat.cols(), scaleRate*mats.get(1).rows());

        Imgproc.resize(mats.get(1), temp, dsize);

        mats.set(1, temp);

        }

        }else {//放大下庭

        double scaleRate = bottom*bottom;

        Mat temp = new Mat();

        Size dsize = new Size(mMat.cols(), scaleRate*mats.get(2).rows());

        Imgproc.resize(mats.get(2), temp, dsize);

        mats.set(2, temp);

        }

        Message msg = new Message();

        msg.what = Params.DeformationParams.DEFORMATION_DONE;

        msg.obj = imgStitch(mats);

        ((MainActivity)mContext).mHandler.sendMessage(msg);}

        3.8 結(jié)果顯示

        這是系統(tǒng)處理的最后一步,即將已處理好的人臉漫畫通過屏幕顯示出來,并保存成PNG格式的本地圖片文件。本文采用saveBitmap(Bitmap bitmap)方法將圖片保存到本地。

        4 實驗結(jié)果

        本系統(tǒng)實現(xiàn)了圖像形變算法與主動形狀模型的特征點定位方法,并解決了背景去除算法中的前景去除問題。在環(huán)境光充足的條件下,通過手機攝像頭輸入人臉,能夠簡單、便捷地完成對人臉的漫畫化處理,得到具有一定藝術(shù)效果的人臉漫畫。圖3-圖8為本文實驗過程,由圖8的實驗結(jié)果可見,該圖像具有一定的漫畫效果。

        5 結(jié)語

        本系統(tǒng)經(jīng)過分析、設(shè)計、實現(xiàn)、測試等多個階段,最后實驗結(jié)果表明,基于人臉識別的人臉漫畫處理系統(tǒng)取得了一定效果,但還有很多不足與需要改進的部分。

        (1)對于背景擦除模塊,為盡可能擦除不必要的背景,采用的擦除算法迭代超過4次,因此非常耗時,尤其當(dāng)圖片分辨率很高時。未來需要改用更加高效的背景擦除算法。

        (2)對于肖像形變過程,本文由于平臺限制采用比較簡單的形變方式,實際上人臉形變過程可以精確到人臉每一個小的部分。

        (3)可添加分享模塊將用戶生成的漫畫分享到各大社交平臺。

        (4)目前系統(tǒng)采用的形變方式是基于漫畫家對人臉各個部分統(tǒng)一的夸張尺度,未來需添加可供用戶自定義的夸張尺度。

        參考文獻:

        [1] 華博,李帥,湛永松. 基于相關(guān)分析的肖像素描漫畫生成系統(tǒng)[J]. 計算機應(yīng)用與軟件,2015 (7):159-162.

        [2] 蘇延輝,李帥,湛永松. 參數(shù)化的肖像漫畫生成算法[J]. 計算機應(yīng)用研究,2014 (5):1562-1565.

        [3] 寇毛蕊.基于Matlab的人臉識別系統(tǒng)設(shè)計[J].軟件導(dǎo)刊,2018,17 (11):34-36.

        [4] 陳文娟,石民勇,孫慶杰. 利用人臉特征及其關(guān)系的漫畫夸張與合成[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2010(1):121-128.

        [5] 閻芳,費廣正,柳婷婷,等. 漫畫風(fēng)格的人臉肖像生成算法[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2007(4):442-447.

        [6] 盧麗穩(wěn).人臉肖像風(fēng)格化繪制技術(shù)研究[D]. 昆明:云南大學(xué),2012.

        [7] 文義玲. 基于改進ASM的人臉圖像變形算法研究[D]. 西安:西安建筑科技大學(xué),2011.

        [8] 張智敏. 人臉特征點定位算法研究及其在人臉卡通肖像中的應(yīng)用[D]. 西安:西安理工大學(xué),2010.

        [9] 韓燕麗,楊慧炯. 基于顏色量化的肖像漫畫生成方法研究[J]. 軟件工程師,2015(11):20-21.

        [10] 蘇延輝,李帥,湛永松. 參數(shù)化的肖像漫畫生成算法[J]. 計算機應(yīng)用研究,2014(5):1562-1565.

        [11] 王海君,楊士穎,王雁飛. 基于NMF和LS-SVM的肖像漫畫生成算法研究[J]. 電視技術(shù),2013(19):233-236.

        [12] 李菁菁. 基于控制點平滑的人臉變形算法及其在人臉動畫中的應(yīng)用[D]. 湘潭:湘潭大學(xué),2008.

        (責(zé)任編輯:黃 ?。?/p>

        猜你喜歡
        人臉識別特征提取
        特征提取和最小二乘支持向量機的水下目標(biāo)識別
        人臉識別 等
        揭開人臉識別的神秘面紗
        基于Gazebo仿真環(huán)境的ORB特征提取與比對的研究
        電子制作(2019年15期)2019-08-27 01:12:00
        基于Daubechies(dbN)的飛行器音頻特征提取
        電子制作(2018年19期)2018-11-14 02:37:08
        基于(2D)2PCA-LBP 的人臉識別方法的研究
        電子制作(2017年17期)2017-12-18 06:40:55
        人臉識別在高校安全防范中的應(yīng)用
        電子制作(2017年1期)2017-05-17 03:54:46
        Bagging RCSP腦電特征提取算法
        基于類獨立核稀疏表示的魯棒人臉識別
        計算機工程(2015年8期)2015-07-03 12:19:07
        基于MED和循環(huán)域解調(diào)的多故障特征提取
        在线视频一区二区日韩国产| 无码aⅴ精品一区二区三区| 国产精品免费_区二区三区观看| 欧美性大战久久久久久久| 亚洲公开免费在线视频| 国产自拍在线视频观看| 日本妇人成熟免费2020| 性生交大全免费看| 天天插视频| 亚洲精品女人天堂av麻| 极品粉嫩嫩模大尺度无码视频| 日韩精品一区二区三区免费视频| ZZIJZZIJ亚洲日本少妇| 国产三级视频在线观看国产| 强开小婷嫩苞又嫩又紧视频韩国| 精产国品一二三产区m553麻豆| 精品少妇一区一区三区| 亚洲一本二区偷拍精品| 欧美老肥妇做爰bbww| 亚洲精品久久久无码av片软件| 亚洲中文字幕精品久久久久久直播| 国产熟女白浆精品视频二| 九九久久自然熟的香蕉图片| 日本高清www午色夜高清视频| 免费a级毛片18以上观看精品| 亚洲精品成人片在线观看| 日韩成人精品一区二区三区| av网站在线观看大全| 羞羞视频在线观看| 亚洲日韩精品久久久久久| 视频国产一区二区在线| 中文字幕亚洲无线码一区女同| 欧美国产成人精品一区二区三区| 狠狠亚洲超碰狼人久久老人| 91色老久久偷偷精品蜜臀懂色 | 久久精品免费一区二区喷潮| 好大好深好猛好爽视频免费| 国色天香精品亚洲精品| 深夜一区二区三区视频在线观看 | 隔壁老王国产在线精品| 国产精品国产三级国av|