现在很多图像美颜app,处理后不但使人物皮肤变得平滑、白皙,还会稍微瘦下脸、放大眼睛,给人眼前一亮的感觉。这其中涉及人脸检测及特征点提取算法,一般提取68个特征点就足够了,同时也涉及图像局部变形算法。这也是两个研究方向,前者主要是计算机视觉,后者是图像处理。但随着深度学习的大热及在多个领域的成功应用,很多图像处理技术也开始采用深度学习算法实现突破,比如基于深度学习的降噪、超分辨率、非真实感绘制等等技术。深度学习大有在计算机视觉、图像处理一统之态势。言归正传,本文主要还是介绍瘦脸及放大眼睛所用到的图像局部变形算法。主要参考:交互式图像变形算法一文 。看过该文章后,自然了解瘦脸其实用的是图像局部平移变形,放大眼睛,用的是图像局部缩放变形。同时,文章还阐述了图像局部旋转变形的算法原理及思路。

瘦脸及放大眼睛的前提是需要检测到人脸,并提取特征点。谈到图像变形,最基础的思路是:由变形前坐标,根据变形映射关系,得到变形后坐标。这其中变形映射关系是最关键的,不同的映射关系,将得到不同的变形效果。平移、缩放、旋转,对应的是不同的映射关系,即不同的变换公式。当然实际在计算过程中,用的是逆变换,即由变形后坐标,根据逆变换公式反算变形前坐标,然后插值得到该坐标rgb像素值,将该rgb值作为变形后坐标对应的像素值。这样才能保证变形后的图像是连续、完整的。图玩智能为企业提供更稳定更优质的美颜产品,欢迎随时咨询www.toivan.com。

下面是示例代码,应该很快能弄明白。

void LocalTranslationWarp(Mat &img, int warpX, int warpY, int warpW, int warpH, int directionX, int directionY, double warpCoef)

{

RestrictBounds(warpX, warpY, warpW, warpH);

Mat imgCopy;

copyMakeBorder(img, imgCopy, 0, 1, 0, 1, BORDER_REPLICATE);

Point center(warpX + (warpW>>1), warpY + (warpH>>1));

double radius = (warpW < warpH) ? (warpW >> 1) : (warpH >> 1);

radius = radius * radius;

// 平移方向矢量/模

double transVecX = directionX - center.x;

double transVecY = directionY - center.y;

double transVecModel = transVecX*transVecX + transVecY*transVecY;

// 水平/垂直增量//映射后位置与原位置

double dx = 0, dy = 0, posX = 0.0, posY = 0.0, posU = 0.0, posV = 0.0;

// 点到圆心距离/平移比例

double distance = 0.0, ratio = 0.0;

// 插值位置

int startU = 0, startV = 0;

double alpha = 0.0, beta = 0.0;

int maxRow = warpY + warpH;

int maxCol = warpX + warpW;

uchar* pImg = NULL;

for (int i = warpY; i < maxRow; i++)

{

pImg = img.data + img.step * i;

for (int j = warpX; j < maxCol; j++)

{

posX = j;

posY = i;

dx = posX - center.x;

dy = posY - center.y;

distance = dx*dx + dy*dy;

if (distance < radius)

{

ratio = (radius - distance) / (radius - distance + transVecModel * warpCoef);

posU = posX - ratio * ratio * transVecX;

posV = posY - ratio * ratio * transVecY;

startU = (int)posU;

startV = (int)posV;

alpha = posU - startU;

beta  = posV - startV;

BilinearInter(imgCopy, startU, startV, alpha, beta, pImg[3*j], pImg[3*j + 1], pImg[3*j + 2]);

}

}

}

}

可以看到,只有圆形选区内的图像才进行变形。越靠近圆心,变形越大,反之变形越小。对于图像缩放变形及旋转变形,公式比较简单,实现起来也容易一些。

php 美颜,图像处理美颜算法之瘦脸及放大眼睛相关推荐

  1. 图像处理算法之瘦脸及放大眼睛

    现在很多图像美颜app,处理后不但使人物皮肤变得平滑.白皙,还会稍微瘦下脸.放大眼睛,给人眼前一亮的感觉.这其中涉及人脸检测及特征点提取算法,一般提取68个特征点就足够了,同时也涉及图像局部变形算法. ...

  2. 图像变形算法之meitu瘦脸及放大眼睛(文末含代码)

    导语:很多时候,我们需要对一个图像的局部进行调整,这个调整必须是平滑的和可交互式的.Photoshop液化滤镜中向前变形工具就是这样一个工具,很好用.类似工具有美图秀秀(http://xiuxiu.m ...

  3. 业界大佬揭秘美颜技术的算法原理

    业界大佬揭秘美颜技术的算法原理 美颜技术发展现状和应用场景 1. 人脸检测 2. 人脸关键点 3. 瘦脸 4. 磨皮 5. 美白 微信公众号同步 美颜技术发展现状和应用场景   随着视频类APP的流行 ...

  4. 美颜SDK实用算法——直播背景扭曲矫正

    经常关注颜值主播的人应该比较清楚,主播们在直播中都在使用美颜功能,例如"瘦脸"."长腿"."小头"等,这些美型美体的功能几乎成了主播们的必备 ...

  5. 常用的美颜滤镜sdk算法

    本文主要介绍常见的美颜滤镜SDK算法,包括 SRGB. HSL. Lab. JPEG. TIFF等.本文不会过多介绍算法原理,只是列举一些在实际项目中用到的滤镜效果,如: 1.色彩空间变换 2.颜色范 ...

  6. android直播sdk+美颜,直播美颜sdk的三大功能及注意事项

    直播平台日渐增加,平台之间的竞争力也是很大的,想要吸引更多的用户,保障平台的稳定运行,是少不了美颜SDK的接入的,绝大多数社交平台都需要借助美颜特效实现更好的直播效果.美颜SDK可以根据用户不同的需求 ...

  7. 三种常见的图像处理双三次插值算法

    三种常见的图像处理双三次插值算法 双立方插值计算涉及16像素,间(i', j')像中的包括 小数部分的像素坐标.dx表示X方向的小数坐标.dy表示Y方向的小数坐标. 详细 能够看下图: 依据上述图示与 ...

  8. 视频教程-数字图像处理实战-算法基础

    数字图像处理实战 河海大学计算机硕士毕业,现就职于南京华为研究所,从事嵌入式软件开发工作.热爱模式识别及机器学习算法. 金圣韬 ¥70.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...

  9. 图像处理:分水岭算法(图像分割)

    图像处理:分水岭算法(图像分割) 分水岭算法 分水岭算法是一种图像区域分割法,分割的过程中将图片转化为灰度图,然后我会将灰度值看作是海拔,然后向较低点注水,这种基于地形学的解释,我们着重考虑三种点: ...

最新文章

  1. php 求数组组合数,php实现求数组全排列,元素所有组合的方法
  2. 033_NavMenu导航菜单
  3. boost::smart_ptr模块智能指针测试程序
  4. 安装NodeJs运行环境
  5. MYSQL中最基础的的聚合函数(avg求平均值及count求和)
  6. 计算机网络维护工具,一种计算机网络维护工具箱的制作方法
  7. linux系统中useradd和usermod命令参数讲解
  8. OpenCV+QT5在Window下的环境配置记录
  9. JavaScript调用Linux系统命令
  10. inner join 链表_MySQL连表操作之一对多
  11. 看了下华为工资,我不加班了
  12. 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)
  13. .NetCore+EPPlus导出Excel报表
  14. 带宽与码元的关系_带宽、速率和码元宽度问题
  15. Java---Map详解
  16. 信息平台课件服务器,《CDN平台介绍v》PPT课件.ppt
  17. cpld xilinx 定义全局时钟_FPGA/CPLD设计工具:Xilinx ISE 5.x使用详解
  18. 华硕笔记本(i76700hq+nvidia goforce940mx)安装ubuntu18.04
  19. AD画原理图去除网格线
  20. 解决msvcp120d.dll和msvcr120d.dll缺失

热门文章

  1. (三)流体运动学(质量守恒)
  2. 百度seo html,百度seo需要什么技术
  3. FPGA价格划分和预估【转载】
  4. 阿木实验室 ubuntu 20.04 Prometheus 系统 编译问题
  5. 四足机器人——步态规划
  6. 论文阅读_Robust Counterfactual Explanations on Graph Neural Networks
  7. 【Unity小游戏】整整一个周末写一款《皇室战争 玩法》 的 即时战斗类 游戏Demo。两万多字游戏制作过程+解析
  8. Listview 的自绘
  9. uniapp阿里矢量图多色图标的使用方法(超级无敌巨无霸详细)
  10. 再获肯定,云畅科技旗下腾云畅翼入榜2021腾讯云启创新生态企业年度榜单