摘要:對(duì)上面公式進(jìn)行改進(jìn),加入變形程度控制變量,改進(jìn)后瘦臉公式如下,優(yōu)缺點(diǎn)優(yōu)點(diǎn)形變思路簡(jiǎn)單直接缺點(diǎn)局部變形算法,只能基于一個(gè)中心點(diǎn),向另外一個(gè)點(diǎn)的方向啦。單點(diǎn)拉伸的變形,可以實(shí)現(xiàn)瘦臉的效果,但是效果自然度有待提升。
論文:Interactive Image Warping(1993年Andreas Gustafsson)
算法思路:
假設(shè)當(dāng)前點(diǎn)為(x,y),手動(dòng)指定變形區(qū)域的中心點(diǎn)為C(cx,cy),變形區(qū)域半徑為r,手動(dòng)調(diào)整變形終點(diǎn)(從中心點(diǎn)到某個(gè)位置M)為M(mx,my),變形程度為strength,當(dāng)前點(diǎn)對(duì)應(yīng)變形后的目標(biāo)位置為U。變形規(guī)律如下,
其中,x是圓內(nèi)任意一點(diǎn)坐標(biāo),c是圓心點(diǎn),rmax為圓心半徑,m為調(diào)整變形的終點(diǎn),u為圓內(nèi)任意一點(diǎn)x對(duì)應(yīng)的變形后的位置。
對(duì)上面公式進(jìn)行改進(jìn),加入變形程度控制變量strength,改進(jìn)后瘦臉公式如下,
優(yōu)缺點(diǎn):
優(yōu)點(diǎn):形變思路簡(jiǎn)單直接
缺點(diǎn):
代碼實(shí)現(xiàn):
import cv2import mathimport numpy as npdef localTranslationWarpFastWithStrength(srcImg, startX, startY, endX, endY, radius, strength): ddradius = float(radius * radius) copyImg = np.zeros(srcImg.shape, np.uint8) copyImg = srcImg.copy() maskImg = np.zeros(srcImg.shape[:2], np.uint8) cv2.circle(maskImg, (startX, startY), math.ceil(radius), (255, 255, 255), -1) K0 = 100/strength # 計(jì)算公式中的|m-c|^2 ddmc_x = (endX - startX) * (endX - startX) ddmc_y = (endY - startY) * (endY - startY) H, W, C = srcImg.shape mapX = np.vstack([np.arange(W).astype(np.float32).reshape(1, -1)] * H) mapY = np.hstack([np.arange(H).astype(np.float32).reshape(-1, 1)] * W) distance_x = (mapX - startX) * (mapX - startX) distance_y = (mapY - startY) * (mapY - startY) distance = distance_x + distance_y K1 = np.sqrt(distance) ratio_x = (ddradius - distance_x) / (ddradius - distance_x + K0 * ddmc_x) ratio_y = (ddradius - distance_y) / (ddradius - distance_y + K0 * ddmc_y) ratio_x = ratio_x * ratio_x ratio_y = ratio_y * ratio_y UX = mapX - ratio_x * (endX - startX) * (1 - K1/radius) UY = mapY - ratio_y * (endY - startY) * (1 - K1/radius) np.copyto(UX, mapX, where=maskImg == 0) np.copyto(UY, mapY, where=maskImg == 0) UX = UX.astype(np.float32) UY = UY.astype(np.float32) copyImg = cv2.remap(srcImg, UX, UY, interpolation=cv2.INTER_LINEAR) return copyImgimage = cv2.imread("./tests/images/klst.jpeg")processed_image = image.copy()startX_left, startY_left, endX_left, endY_left = 101, 266, 192, 233startX_right, startY_right, endX_right, endY_right = 287, 275, 192, 233radius = 45strength = 100# 瘦左邊臉 processed_image = localTranslationWarpFastWithStrength(processed_image, startX_left, startY_left, endX_left, endY_left, radius, strength)# 瘦右邊臉 processed_image = localTranslationWarpFastWithStrength(processed_image, startX_right, startY_right, endX_right, endY_right, radius, strength)cv2.imwrite("thin.jpg", processed_image)
實(shí)驗(yàn)效果:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125087.html
摘要:查看行業(yè)專題分析報(bào)告就上參一江湖,更多專題報(bào)告持續(xù)更新中。 查看行業(yè)專題分析報(bào)告就上參一江湖,更多專題報(bào)告持續(xù)更新中。每項(xiàng)專題報(bào)告都是從2019開(kāi)始更新到至今,后續(xù)將持續(xù)更新... 今天為大家分享天然氣專題研究報(bào)告的部分目錄如下 : ———————公眾號(hào):參一江湖——————— ?2021...
摘要:前幾天由于團(tuán)隊(duì)需要,折騰了一下圖像液化的處理過(guò)程。現(xiàn)在來(lái)整理一下思路,做個(gè)記錄。用到公式如下,網(wǎng)上拿來(lái)的話不多說(shuō),上代碼本來(lái)想盡量寫(xiě)出點(diǎn)逼格。。。后來(lái)發(fā)現(xiàn)怎么寫(xiě)也還是幾個(gè)搞定,就那樣了。然后再用的把轉(zhuǎn)換后的輸出到中效果圖如下 前幾天由于團(tuán)隊(duì)需要,折騰了一下圖像液化的處理過(guò)程。 現(xiàn)在來(lái)整理一下思路,做個(gè)記錄。 用到公式如下,網(wǎng)上拿來(lái)的 showImg(https://segm...
摘要:前幾天由于團(tuán)隊(duì)需要,折騰了一下圖像液化的處理過(guò)程。現(xiàn)在來(lái)整理一下思路,做個(gè)記錄。用到公式如下,網(wǎng)上拿來(lái)的話不多說(shuō),上代碼本來(lái)想盡量寫(xiě)出點(diǎn)逼格。。。后來(lái)發(fā)現(xiàn)怎么寫(xiě)也還是幾個(gè)搞定,就那樣了。然后再用的把轉(zhuǎn)換后的輸出到中效果圖如下 前幾天由于團(tuán)隊(duì)需要,折騰了一下圖像液化的處理過(guò)程。 現(xiàn)在來(lái)整理一下思路,做個(gè)記錄。 用到公式如下,網(wǎng)上拿來(lái)的 showImg(https://segm...
摘要:最少知識(shí)原則的終極目標(biāo)的是實(shí)現(xiàn)完全傻瓜式的程序。我們?nèi)绾巫龅浇獬龑?duì)象間的耦合性主要手段還是很多的。最少知識(shí)原則的實(shí)現(xiàn)其實(shí),最少知識(shí)原則和單一原則所達(dá)到目的是相似的,一個(gè)是,讓你的程序?qū)ν獗M量簡(jiǎn)單,一個(gè)是讓你的程序里的對(duì)象,相互聯(lián)系盡量簡(jiǎn)單。 最少知識(shí)原則的終極目標(biāo)的是實(shí)現(xiàn)完全傻瓜式的程序。 舉個(gè)例子吧, 就比如 美圖神器, 你上傳一張鳳姐的照片后,你可以選擇 自然磨皮,高度磨皮 -> ...
閱讀 2330·2021-11-25 09:43
閱讀 3467·2021-10-25 09:48
閱讀 1340·2021-09-13 10:24
閱讀 2752·2019-08-29 15:07
閱讀 1288·2019-08-29 13:14
閱讀 3281·2019-08-29 12:22
閱讀 1365·2019-08-29 11:32
閱讀 3255·2019-08-29 11:23