注意:本文樣例圖片為了避免侵權,均使用AIGC生成;
手部青筋祛除科普
????????手部青筋祛除是影樓精修中一個非常精細的工作,需要較高的修圖技巧,目前市面上很少有自動化的青筋祛除功能的,而像素蛋糕目測是第一個做到的。我們先給大家看一下效果示例圖。
????????如示例圖所示,效果圖中美女的手部曝露的青筋消失了,整體效果對比肌膚要更加豐滿一點。
????????這里我將給大家介紹一下這個功能算法要如何實現,我們的目標是自動化處理照片,達到手部青筋祛除的效果,并可調節祛除強度。
算法實現
????????像素蛋糕為了這個效果申請了算法專利CN 119624835 A:一種模擬人工修圖的級聯式人物圖像祛青筋方法。
????????算法流程如下圖所示:
這里我們先看整體流程:
-
假設用戶照片原圖為S,手部祛除青筋的效果圖為D。對S進行手部區域檢測,比如手部關鍵點檢測,根據關鍵點計算手部區域圖像位置,將手部區域圖像裁剪出來得到手部圖像A,這里需要記錄裁剪位置,以及仿射變換矩陣H以及逆矩陣NH等,變換主要指縮放旋轉等操作;
-
將手部圖像A進行灰度化處理,得到灰度圖A_gray;
-
將A和A_gray送入“中性灰平整網絡”,輸出中性灰蒙版圖層,即為圖B;
-
將A和B進行柔光圖層混合,得到中性灰平整結果圖C;
-
將C和B送入“顏色調整網絡”,得到顏色調整后的結果圖M,M即為祛除青筋且顏色正常的效果圖;
-
將M按照仿射變換逆矩陣NH,貼回原圖S,得到最終效果圖D;
????????這個流程中,像素蛋糕設計了兩個網絡模塊“中性灰平整網絡”和“顏色調整網絡”,其中,中性灰平整網絡是用來獲取青筋區域的中性灰調整蒙版,用于調節青筋區域的亮度,將突出的青筋區域亮度平整,變得光滑均勻;而顏色調整網絡用于將青筋區域顏色調整為原圖正常的膚色;
????????中性灰平整網絡如下圖所示:
????????網絡很好理解,輸入手部灰度圖和原圖,輸出中性灰圖層,網絡使用了transformer模塊,從個人角度理解,應該是一個GAN網絡,采用Unet結構,難點在于如何構建數據集。當然,像素蛋糕應該是不缺乏數據的。
????????顏色調整網絡如下圖所示:
????????網絡輸入中性灰平整結果圖+中性灰圖層蒙版,輸出顏色調整結果圖,其中中性灰圖層蒙版實際上是導向作用,與中性灰平整網絡類似。這一步實際上也可以使用GAN網絡來實現,或者使用LUT調色網絡等。
????????上面就是像素蛋糕手部青筋祛除功能的算法流程。
????????針對上面的過程,大體思路是沒有問題的,個人認為是正確的(畢竟是專利,需要以謹慎的思考來看待),但是,從我個人經驗,這里提供一個更為簡單的算法流程,或者說對上述流程進行改進。
????????本人改進的思路原理:手部暴露的青筋,整體上表現出來為亮度明暗突變+青綠顏色變化,而中性灰的概念,我們前面中性灰磨皮也介紹過,他的作用就是改變亮度信息,但實際上,以RGB顏色空間為例,我們如果在三通道上分別做中性灰蒙版,他就可以變成一個即改變亮度,也改變顏色的彩色中性灰蒙版,因此,從這個角度來看,我們不需要顏色調整網絡,也可以達到最終的效果。
????????因此,本人算法流程如下:
-
假設用戶照片原圖為S,手部祛除青筋的效果圖為D。對S進行手部區域檢測,比如手部關鍵點檢測,根據關鍵點計算手部區域圖像位置,將手部區域圖像裁剪出來得到手部圖像A,這里需要記錄裁剪位置,以及仿射變換矩陣H以及逆矩陣NH等,變換主要指縮放旋轉等操作;
-
構建一個彩色中性灰平整網絡,輸入為手部區域圖像A,輸出為彩色中性灰蒙版圖層A_color;
-
將A_color按照仿射變換逆矩陣NH貼回原圖S,與原圖S對應區域直接進行柔光圖層混合,同時設定混合強度調節參數k,用于調節混合效果的程度,這一步直接可以得到青筋祛除效果圖D;
????????柔光計算公式(A為原圖像素,B為中性灰像素):
????????其中,彩色中性灰平整網絡可使用CGAN,設置輸入為512×512×3,實際也可以更小,比如384×384×3,由于得到的是中性灰圖層,縮放到高分辨率后與原圖進行柔光處理,并不會有損原圖清晰度信息,因此,可以很好的應對影樓大圖處理的清晰度要求。
????????這里,給出一組測試:
????????可以看到,本人方案效果與像素蛋糕效果幾乎一致,方案流程上要更加簡單,算法完全可以做到毫秒級快速處理高分辨率大圖;
注意:彩色中性灰的思想,用途非常廣泛,可以用于磨皮,祛除各類皺紋(黑眼圈/眼角紋/抬頭紋/頸紋/法令紋等等),大家可以自行發揮,對于本人專欄中,部分思路相同的功能,也可能不會再重復介紹,有興趣的也可以私聊,共勉!