文档章节

关于人像美容之祛痘祛斑算法的一些尝试。

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:41
字数 1034
阅读 44
收藏 0
点赞 0
评论 0

 

     

     祛痘祛斑算法一直在关注,一直在期待看有么有大神分享有关这方面的资料。在百度上用关键词祛痘祛斑搜到的都是于原理无关的不痛不痒的东西,看样子还是得靠自己奋斗。

     总的来说,对于祛痘祛斑,我们概念上还是有一定的了解的,这个按照我的分析应该是属于图像修复方面的内容的,于是咨询了一些专门搞学术研究,特别是图像修复相关方向的比较专业的人士,他们也给我提供了一些测试的代码,其中最为简单又有一定效果代码如下(由网友西西提供):

function inpainting()
    f=imread('12.png');
    f=rgb2gray(f);
    f=double(f);
    [m,n]=size(f);
    lamda=0.1;
    phi=double(1-(f==255));%
    u=f;
Iter =400;
for k=1:Iter C1 = circshift(u,[0 -1]); C1(:,n) = C1(:,n-1); C2 = circshift(u,[0 1]); C2(:,1) = C2(:,2); C3 = circshift(u,[-1 0]); C3(m,:) = C3(m-1,:); C4 = circshift(u,[1 0]); C4(1,:) = C4(2,:); lap_u=C1+C2+C3+C4; u=(phi.*f+lamda*lap_u)./(phi+4*lamda); end figure; imagesc(u); colormap(gray); axis off; axis equal;

  这个代码的原理是参考: 一文的。具体的我也没有看,应该是基于TV模型的最简单的一种实现。

  上述代码很简单,其中的lamda控制了模糊的程度,用这个代码做了下测试,对于灰度图效果如下:

   

          原图                                   Mask                         修复后的图

  由上图可见,这种简单的代码具有一定的修复功能,但是修复部分比较模糊,另外一个问题就是这个代码的效率很低,虽然改成C语言实现病不是特别困难,但是即使是C速度也有问题,不过针对手动祛斑时的特性,编程时时不需要整图处理,比如取要祛痘祛斑2倍面积的地方进行处理也是可以的。

      在一个群里也问起这个问题,有部分网友提出opencv 的 inpaint 算法可行吗,于是我也是试着用opencv的函数试验了下,实验的结果如下:   

                    

                                                    原图   

                    

                                                                             Mask

               

                        修复的结果图

  如果初步的看,似乎修复的结果也还是可以的。这个代码在OpenCV的inpaint.cpp,其中一种方法来自论文《An Image Inpainting Technique Based on the Fast Marching Method》, 我花费了2天左右的时间将其转换为了纯C++代码,脱离了opencv环境,不过结果验证却有点令人失望,主要的原因是这个方法其实也和TV那个类似,修复的地方会有比较明显的模糊结果(OpenCV里的算法也存在类似卷积的过程,因此模糊时不可避免的)。而观察美图等软件的修复,对于被修复部分的纹理保留的很好。

      但是,也不是说这些算法也毫无用处,祛斑祛痘一般都是伴随着磨皮美白一起使用的,如果对磨皮后部分依旧没有被消除的斑点,上述祛斑的方式就能和周边的图较为完美的融合在一起的,因为周边的皮肤也是会比较光滑的,例如下图:

         

                    原图                                    磨皮后再手动祛斑的效果

      其实现在比较难得还是斑点的自动定位,祛斑算法很多厂家已经有了成熟的算法,只是我们这些小强见识比较短而已。 

      至此,我的人像美容算法方法的主要的几个功能基本都已研究完成了(虽然都不完美),其中瘦脸瘦身和眼睛缩放在我的Imageshop软件的美化菜单里有实例,像皮肤红润那些只是一些色相的局部调整,没啥难度,磨皮、美白、祛斑这三个我集中在下面的文件包,有兴趣的朋友可以看下。

     http://files.cnblogs.com/Imageshop/FaceBeautification.rar

 

****************************作者: laviewpbt   时间: 2014.7.27    联系QQ:  33184777 转载请保留本行信息**********************

 

© 著作权归作者所有

共有 人打赏支持
abcijkxyz
粉丝 61
博文 6195
码字总数 1876
作品 0
深圳
项目经理
对皮肤的食疗

1.每天吃一片维生素C和维生素E,可达到祛斑的作用。 2.用干净的茄子皮敷脸,一段时间后,小斑点就不那么明显了。 3.每天喝一杯西红柿汁或常用西红柿,对防止祛斑有较好的作用。因为西红柿中含...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

面膜

【珍珠粉面膜部分】 1、牛奶+珍珠粉 祛痘效果不错,美白效果也不错 2、蛋清+珍珠粉 祛痘效果特别好,而且收缩毛孔 3、蛋清+珍珠粉+蜂蜜 感觉皮肤顺滑了很多。而且痘痘一下子就灭了的感觉 4、...

西米小娅 ⋅ 2016/08/06 ⋅ 0

护肤老师锋哥:长痘痘主要是湿气太重。

哈喽~大家好,我是你们的护肤老师锋哥。 长痘痘主要是人体内湿气太重引起的,需要排出人体内的湿气和寒气,并且要加快皮肤的代谢功能,多吃冬瓜可以起到排毒的作用,并且能加快皮肤的新陈代谢...

锋哥护肤 ⋅ 05/24 ⋅ 0

护肤老师锋哥:有一些祛痘误区,你还在犯吗?

哈喽~大家好,我是你们的护肤老师锋哥。 痘痘总是反反复复的长,让痘痘肌们很是苦闷。可是,你想过没有,常年抗“痘”为何成效甚微?其实,你需要科学的对待痘痘,警惕以下这些祛痘误区!跟着...

锋哥护肤 ⋅ 05/24 ⋅ 0

护肤老师锋哥:怎么祛痘才不会留下痘印。

哈喽~大家好,我是你们的护肤老师锋哥。 现在随着社会的进步,社会的发展的进度、速度很多人都会随着社会的脚步在发展,可是有些人就会把生活作息给整个混乱。从而就会出现一些皮肤问题,最常...

锋哥护肤 ⋅ 05/23 ⋅ 0

护肤老师锋哥:这三种人最容易得激素脸。

哈喽~大家好,我是你们的护肤老师锋哥。 你知道为什么我国是激素大国?为什么那么多激素脸? 第一,假货太多 第二,护肤意识太差 第三,想要最好的,又要最便宜 第四,不坚持,不注意,不按时...

锋哥护肤 ⋅ 05/26 ⋅ 0

护肤老师锋哥:长斑的10大原因,

哈喽~大家好,我是你们的护肤老师锋哥。 现在十女九斑,所说的就是十位女人里面得有九位女人脸上长斑的,只是斑不同,有色斑、晒斑、妊娠斑、遗传斑等。下面就跟大家介绍介绍一下长斑点的原因...

锋哥护肤 ⋅ 05/15 ⋅ 0

如何开始拍妹(汉)~

1. 拍摄想法 无论拍什么风格,在拍摄之前都要形成想法。想法可以来源于自己的脑洞,如果没有想法或者刚开始摄影,也可以模仿他人 (模仿是最快的进步方式)。 想法应该包含:主题/风格/观念/构...

weberweber ⋅ 2017/12/18 ⋅ 0

像关心女神一样关爱手 — 3·8 爱手节免费送护手霜

又到女神节,你们都给女神送过礼物了吧?据 LeanCloud 大数据显示:此时此刻男性工程师单身比例依然达到 15.62 % 也就是说依然有一部分工程师没有地方送礼。 说到「手」,很自然地会想起「女...

eapxuo ⋅ 03/07 ⋅ 0

护肤老师锋哥:痘痘为何总是摆脱不掉呢?

哈喽~大家好,我是你们的护肤老师锋哥。 现在有很多美眉因为脸上的痘痘感到很懊恼很反感,这边的痘痘下去那边的痘痘又长起来了,心理都不知道该怎么办了,其实可能和你的日常饮食有关。 1.减...

锋哥护肤 ⋅ 05/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 36分钟前 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

版本控制工具

CSV , SVN , GIT ,VSS

颖伙虫 ⋅ 昨天 ⋅ 0

【2018.06.19学习笔记】【linux高级知识 13.1-13.3】

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

lgsxp ⋅ 昨天 ⋅ 0

LVM

LVM: 硬盘划分分区成物理卷->物理卷组成卷组->卷组划分逻辑分区。 1.磁盘分区: fdisk /dev/sdb 划分几个主分区 输入t更改每个分区类型为8e(LVM) 使用partprobe生成分区的文件:如/dev/sd...

ZHENG-JY ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部