复刻PS瘦脸液化形变工具

您所在的位置:网站首页 ps里的瘦脸工具 复刻PS瘦脸液化形变工具

复刻PS瘦脸液化形变工具

2024-06-25 14:07:30| 来源: 网络整理| 查看: 265

液化工具介绍

PS中有个推脸形变的修图工具,借助液化工具可以实现瘦脸瘦身等功能。详细的液化功能adobe的官网有介绍: https://helpx.adobe.com/cn/photoshop/using/liquify-filter.html

1 2 3 4 5 液化”滤镜可用于推、拉、旋转、反射、折叠和膨胀图像的任意区域。您创建的扭曲可以是细微的或剧烈的,这就使“液化”命令成为修饰图像和创建艺术效果的强大工具。液化滤镜可以应用于 8 位/通道或 16 位/通道图像。 Photoshop 使用液化滤镜扭曲图像 使用液化滤镜扭曲图像 “液化”对话框中提供了液化滤镜的工具、选项和图像预览。要显示该对话框,请选取“滤镜”>“液化”。选择“高级模式”可访问更多选项。

本篇复刻的是,实现液化工具中的推、拉功能

液化原理

液化原理源于一片非常经典的论文交互式形变,

local translation warps局部平移

local-translation-warps

其中推拉的实现部分原理为论文中的局部平移,局部平移的原理为

liquefy

如图所示,阴影圆环代表一个半径为rmax的圆形区域。其中c点为鼠标点击下单点坐标,也是圆心。鼠标从c到m,产生的作用就是湿的途中的点u变换到点x。所以实现的原理就是,找到上面这个变换的逆变换,即已知点x时,可以求解出对应变换前的坐标u,然后使用变换前的图像在点u附近的像素进行插值,求出变换后的点u的像素值。以上操作作用在圆形内的所有的像素点,就完成了一次的交互推拉形变效果。

代码实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 #include "opencv2/opencv.hpp" #include cv::Mat src_img; cv::Mat lut_img; int slider_intensity = 0; int radius = 100; bool leftdown = false; cv::Point start = cv::Point(-1, -1); cv::Point end = cv::Point(-1, -1); cv::Point Liquefy(const cv::Point& c, const cv::Point& m, const cv::Point& x, const float r) { auto DistancePow = [](const cv::Point2f& p1, const cv::Point2f& p2){ return std::pow(p1.x - p2.x, 2) + std::pow(p1.y - p2.y, 2); }; cv::Point u = cv::Point(-1, -1); cv::Point2f direction = m - c; double factor = 0.2 * std::pow((r * r - DistancePow(x, c)) / (r * r - DistancePow(x, c) + DistancePow(m, c) ), 2); u = x - cv::Point(factor * direction.x, factor * direction.y); return u; } void Reshape(const cv::Mat& src, const cv::Point& start, const cv::Point& end, const float radius, cv::Mat& result) { if(src.empty()){ return;} result = src.clone(); int rows = src.rows; int cols = src.cols; auto Distance = [](const cv::Point2f& p1, const cv::Point2f& p2){ return std::sqrt(std::pow(p1.x - p2.x, 2) + std::pow(p1.y - p2.y, 2)); }; for(int r = 1; r


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭