Android圖片變老方案總結(jié)

思路:

1.?面部皺紋紋理。變老后的皺紋并不是實時繪制眶蕉,而是需要先準(zhǔn)備一系列皺紋紋理,然后將皺紋紋理和正常面部紋理融合唧躲。

?2.由于檢測的人臉姿態(tài)多變造挽,有的頭正頸直,有的歪頭弄痹,有的仰頭饭入,而皺紋紋理都是頭正頸直的,所以還需要對皺紋紋理做合適的變形肛真,而非旋轉(zhuǎn)谐丢,旋轉(zhuǎn)的話匹配精度不夠。本文采用的是移動最小二乘法圖像變形(mls)算法蚓让。

?3.由于涉及到mls變形算法乾忱,所以需要控制點。本文采用的是提取人77個特征點历极,由于標(biāo)準(zhǔn)77個特征點主要分布在臉頰窄瘟、眉毛、眼睛趟卸、鼻子蹄葱、嘴巴,為了保證變形更精準(zhǔn)衰腌,所以又計算增補了部分額頭控制點新蟆,共計77個特征點作為變形控制點。

步驟:

1.準(zhǔn)備幾張面部皺紋的圖右蕊,并標(biāo)注人臉特征點


面部皺紋圖人臉關(guān)鍵點琼稻,一共81個點

public static final float[] OLD_FACE = {62.0f, 296.0f, 62.0f, 362.0f, 76.0f, 430.0f, 97.0f, 505.0f, 133.0f...........};

人臉關(guān)鍵點位置分布圖


人臉關(guān)鍵點采集

人臉關(guān)鍵點識別一般可以采用Dlib或者?Stasm?+?OpenCV,

使用Dlib的話可以參照face_landmark_detection?來獲取人臉68個關(guān)鍵點,不依賴于OpenCV饶囚,但是需要61M的模型文件帕翻,同時也沒有額頭部分的標(biāo)注。

使用Stasm可以參考示例minimal?使用它可以獲取77個人臉關(guān)鍵點,?只需要OpenCV的幾個xml的模型文件萝风, 體積比dlib的模型小嘀掸,比較適合移動端設(shè)備使用,所以我選擇了這個规惰。

SeetaFace2也是一個可行的方案睬塌,可以參考SeetaFace2?可以實現(xiàn)人臉81個關(guān)鍵點識別,不依賴于OpenCV,效果也不錯揩晴,不過相比于Stasm勋陪,SeetaFace2不會標(biāo)注人額頭上的關(guān)鍵點。


最小二乘法

最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù)硫兰。它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配诅愚。利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和為最小劫映。最小二乘法還可用于曲線擬合违孝。其他一些優(yōu)化問題也可通過最小化能量或最大化熵用最小二乘法來表達(dá)。


在圖像處理領(lǐng)域paper:《Image Deformation Using Moving Least Squares》利用移動最小二乘的原理實現(xiàn)了圖像的相關(guān)變形泳赋,而且這篇paper的引用率非常高雌桑,可以說是圖像變形算法的經(jīng)典算法,Siggraph上面的paper祖今。


變老實現(xiàn)

1.???通過OpenCV+Stasm獲取原始圖像人臉關(guān)鍵點數(shù)據(jù)


2.?將圖片切割成若干個網(wǎng)格筹燕,得到原始網(wǎng)格點


3.最小二乘法,得到變形后的網(wǎng)格點


最小二乘法衅鹿,輸入:

原始網(wǎng)格點:將圖像切割成areaW * areaH?的網(wǎng)格區(qū)域

控制點:就是上面提供的81個人臉關(guān)鍵點。

目標(biāo)控制點:原始圖通過stasm得到的的人臉關(guān)鍵點过咬。

輸出:變形后的網(wǎng)格點

4.現(xiàn)在我們已經(jīng)有了原始網(wǎng)格點大渤、變形后的網(wǎng)格點,接下來就計算頂點紋理坐標(biāo)和繪制索引掸绞,使用VBO繪制圖元泵三,繪制出經(jīng)過變形的老人皺紋圖,然后與原始圖融合衔掸,得到最終變老效果烫幕。

4.1計算頂點數(shù)據(jù)


4.2計算繪制索引


4.3創(chuàng)建FloatBuffer和ShortBuffer,供后面使用


5.融合敞映,變老shader

可以看到有兩個2d?紋理

inputImageTexture:代表原圖紋理

inputImageTexture2?:代表變形后的皺紋紋理


這一步就是對兩層進(jìn)行融合計算较曼,內(nèi)建函數(shù)mix混合,intensity代表皺紋透明度

mediump vec4 outputColor = vec4(base.rgb * (overlay.a * (base.rgb / base.a) + (2.0 * overlay.rgb * (1.0 - (base.rgb / base.a)))) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a);\n"

6振愿、VBO繪制


5.最終效果



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捷犹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冕末,更是在濱河造成了極大的恐慌萍歉,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档桃,死亡現(xiàn)場離奇詭異枪孩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蔑舞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拒担,“玉大人,你說我怎么就攤上這事斗幼∨熘耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵蜕窿,是天一觀的道長谋逻。 經(jīng)常有香客問我,道長桐经,這世上最難降的妖魔是什么毁兆? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮阴挣,結(jié)果婚禮上气堕,老公的妹妹穿的比我還像新娘。我一直安慰自己畔咧,他們只是感情好茎芭,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著誓沸,像睡著了一般梅桩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拜隧,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天宿百,我揣著相機(jī)與錄音,去河邊找鬼洪添。 笑死垦页,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的干奢。 我是一名探鬼主播痊焊,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忿峻!你這毒婦竟也來了宋光?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤炭菌,失蹤者是張志新(化名)和其女友劉穎罪佳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黑低,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡赘艳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年酌毡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾管。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡枷踏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掰曾,到底是詐尸還是另有隱情旭蠕,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布旷坦,位于F島的核電站掏熬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏秒梅。R本人自食惡果不足惜旗芬,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捆蜀。 院中可真熱鬧疮丛,春花似錦、人聲如沸辆它。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锰茉。三九已至暇屋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洞辣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工昙衅, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留扬霜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓而涉,卻偏偏與公主長得像著瓶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啼县,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355