图像处理 美白_图像美白 - CSDN
  • 图像处理算法之美颜

    2017-04-04 18:34:12
    和滤镜一样,美颜也是图像类app必不可少的功能之一,也有的app叫人像美容,主要包括美肤及美白等几大功能。甚至有很多专门美颜的app,比如美颜相机什么的,可见美颜功能需求量之大。很多女孩子自拍必美颜,发朋友圈...
           和滤镜一样,美颜也是图像类app必不可少的功能之一,也有的app叫人像美容,主要包括美肤及美白等几大功能。甚至有很多专门美颜的app,比如美颜相机什么的,可见美颜功能需求量之大。很多女孩子自拍必美颜,发朋友圈必美颜,爱美之心人皆有之,每个人都想变成美颜之后的样子。我想最好的美颜修图,应该是大家看到照片后,看不出用过美颜修图,而是说你皮肤变好了。只是近几年很多app,在美颜同时又加入了瘦脸、大眼等功能,这就有点过了,很多照片美颜之后,估计自己老娘都认不出来了。
           通俗的讲,传统美颜算法就是编写程序模仿ps磨皮操作,而升级版的美颜,比如增加了瘦脸、大眼等功能的美颜,就不仅仅是模仿磨皮操作了,还需要增加人脸检测及提取特征点等操作,难度增加很多。本文主要还是说说传统美颜算法,即ps磨皮操作,网上搜一下ps磨皮操作,能找到很多相关文章,磨皮方法多种多样,但真正能够程序化的又不多。本文采用的磨皮方法主要涉及到通道、模糊、混合、曲线、高反差保留等操作,并没有涉及到肤色检测、人眼检测等操作,所以算法效率还是很高的。 其实美颜也没什么复杂原理及公式推导,就是通过编写程序模拟ps各种操作。在磨皮的同时,可以稍微调一下色,这样可以创建更多的美颜效果,比如类似有些app的暖暖阳光、清新丽人、甜美可人、红润等效果。
           下面是一些效果图,写文章更多还是以提供思路为主,不会提供源码。
        
        
        
        



    展开全文
  • #实现彩色直方图均衡化 import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('image0.jpg', 1) cv2.imshow('sec',img) imgInfo = img.shape height = imgInfo[0] ...
    #实现彩色直方图均衡化
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    img = cv2.imread('image0.jpg', 1)
    cv2.imshow('sec',img)
    
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    
    count_b = np.zeros(256, np.float)
    count_g = np.zeros(256, np.float) 
    count_r = np.zeros(256, np.float) 
    for i in range(0, height):
        for j in range(0, width):
            (b, g, r) = img[i, j]
            index_b = int(b)
            index_g = int(g)
            index_r = int(r)
            count_b[index_b] = count_b[index_b] +1
            count_g[index_g] = count_g[index_g] +1 
            count_r[index_r] = count_r[index_r] +1 
    for i in range(0,256):
        count_b[i] = count_b[i] / (height*width)
        count_g[i] = count_g[i] / (height*width)
        count_r[i] = count_r[i] / (height*width)
    #计算累计概率
    sum_b = float(0)
    sum_g = float(0)
    sum_r = float(0)
    for i in range(0,256):
        sum_b = sum_b + count_b[i]
        sum_g = sum_g + count_g[i]
        sum_r = sum_r + count_r[i]
        count_b[i] = sum_b
        count_g[i] = sum_g
        count_r[i] = sum_r
    #print(count)
    map_b = np.zeros(256, np.uint16)
    map_g = np.zeros(256, np.uint16)
    map_r = np.zeros(256, np.uint16)
    for i in range(0,256):
        map_b = np.uint16(count_b[i] * 255)
        map_g = np.uint16(count_g[i] * 255)    
        map_r = np.uint16(count_r[i] * 255) 
    #计算映射表
    dst = np.zeros((height, width, 3),np.uint8)
    for i in range(0,height):
        for j in range(0,width):
            (b, g, r) = img[i, j]
            b = map_b[b]
            g = map_g[g]
            r = map_r[r]
            dst[i, j] = (b, g, r)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)
    
    #对图片进行亮度增强
    #P=P+40
    import cv2
    import numpy as np
    img = cv2.imread('image0.jpg', 1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    
    cv2.imshow('src', img)
    
    dst = np.zeros((height,width,3), np.uint8)
    for i in range(0, height):
        for j in range(0, width):
            (b, g, r) = img[i, j]
            bb = int(b) +40
            gg = int(g) +40
            rr = int(r) +40
            if bb >255:
                bb = 255
            if gg > 255:
                gg = 255
            if rr >255:
                rr = 255
            dst[i, j] = (bb, gg, rr)
    cv2.imshow('src', dst)
    cv2.waitKey(0)
    
    #皮肤磨皮美白
    #双边滤波
    import cv2                                                
    import numpy as np                                        
    img = cv2.imread('image0.jpg', 1)
    cv2.imshow('src', img)
    #调用双边滤波方法,此处先略过双边滤波的讲解
    dst = cv2.bilateralFilter(img, 15,35,35)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)
    展开全文
  • 图像处理----美白

    2014-11-05 13:33:12
    皮肤美白是现在任何一款流行的美颜软件必备的功能之一,不过你如果在互联网上搜索关于美白算法,能直接拿到并使用的可能不多。一直觉得这个算法其实很简单的,并且实现的方式可以说是多种多样,本文分享自己研究过的...

    皮肤美白是现在任何一款流行的美颜软件必备的功能之一,不过你如果在互联网上搜索关于美白算法,能直接拿到并使用的可能不多。一直觉得这个算法其实很简单的,并且实现的方式可以说是多种多样,本文分享自己研究过的三种实现方式。

         第一:借用色彩平衡算法

      色彩平衡是Photoshop中常用的一个功能,发现这个算法能实现美白的是从一个叫DigitalCameraEnhance的软件中偶然遇到的,这个软件的界面如下图:

               

      其中的调节中间影调一栏会发现右侧目的图像美白程度不断增加,于是我想到PS中有中间调的功能最有名的就是色彩平衡,打开色彩平衡功能,把色阶三个框设置为同一个正值,并且不勾选保持明度选项,则图像明显出现美白现象。  

                                                        

      注意第一: 色阶的三个调整值必须相同或者差异很小,不然输出图片会出现偏色,第二:一定选选择中间调;第三:必须不勾选保持明度选项。

          关于这个算法的代码,可以从开源的GIMP软件中扣取,其实如果符合上述三个条件,有能力的人就会发现其实最后就是一个映射表而已了,这里不给出具体的算法公式。GIMP是开源的,有这个需求的就应该自己动手去找。

         第二:使用logarithmic Curve。

      美白其实主要使皮肤变白变亮,因此,如果能有个合适的映射表,满足使得原图在色阶上有所增强,并且在亮度两端增强的稍弱,中间稍强,则也是个不错的选择。在研究一篇图像增强论文《A Two-Stage Contrast Enhancement Algorithm for Digital Images 》时发现其中的一个公式非常适合这个情况:

               

      其中w(x,y) 表示输入图像数据,v(x,y)表示输入结果,beta为调节参数,我绘制了Beta分别为[2,3,4,5]时的曲线,如下图:

         

      可见,Beta越大,美白的程度越强,我想这个程序实现起来应该很容易吧。

           第三:使用图层混合。

      用Photoshop我是这样做的,打开图像,然后点通道面板,按住Ctrl+ 点击RGB通道图像,这样会得到以图像的强度为内容的选区(选区其实就是一副灰度图像),然后回到图层面板,点新建图层,再点添加图层蒙版按钮,这样就会将刚才所建立的选区的内容作为蒙版,接着将,图层填充为白色。调节新建图层的透明,则可以控制最终美白的程度。

                         

         这种方法中以图像强度的内容作为蒙版这一步很重要。

         这种图层+蒙版的编码实现其实也就是一些Alpha混合的过程,有兴趣实现的朋友可以自行研究。

          我个人认为,如果掌握了PS里调整菜单的大部分算法,很多美图软件里的调色这一块基本上都逃不出手掌心了,当然比如有强大的美工基础作为支撑,先靠美工通过某些步骤摸索出某个效果,然后再靠程序员编码实现,可以我美工不行。

       以上操作都是针对全图进行的处理,这样毕竟会把非肤色部分的地方也处理,在很多情况下可能是不合适的,因此一个更好的方式是进行肤色识别,当然这种肤色识别和我之前的磨皮算法原理也一样,不需要也不应该太准确,在边缘处还必须进行一定的羽化,包括非皮肤部分也应该有一定程度的处理,这样整个图看起来会更加自然一些。

      我用以上三种算法进行了一些处理,效果如下所示:

         

                      原图                                ColorBalance , 参数为75

         

                Log曲线, 参数Beta为5                                 图层混合,不透明度30%

         

                      原图                                ColorBalance , 参数为75

         

                Log曲线, 参数Beta为6                                   图层混合,不透明度35%

         

                                                      原图                                ColorBalance , 参数为75

        

                   Log曲线, 参数Beta为5                                 图层混合,不透明度30%     

      纯粹就这个功能来说,和美图秀秀之类的软件区别也不大的。

         测试程序下载:http://files.cnblogs.com/Imageshop/SkinWhitening.rar

         

      以上测试图像均来源于互联网。

    展开全文
  • 文章目录4.7亮度增强4.8磨皮美白(双边滤波) 4.7亮度增强 import cv2 import numpy as np img = cv2.imread('image00.jpg',1) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] cv2.imshow('src',img) ...

    4.7亮度增强

    import cv2
    import numpy as np
    img = cv2.imread('image00.jpg',1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    cv2.imshow('src',img)
    dst = np.zeros((height,width,3),np.uint8)
    for i in range(0,height):
        for j in range(0,width):
            (b,g,r) = img[i,j]
            bb = int(b)+40
            gg = int(g)+40
            rr = int(r)+40
            if bb>255:
                bb = 255
            if gg>255:
                gg = 255
            if rr>255:
                rr = 255
            dst[i,j] = (bb,gg,rr)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)
    

    在这里插入图片描述在这里插入图片描述

    4.8磨皮美白(双边滤波)

    import cv2
    img = cv2.imread('1.png',1)
    cv2.imshow('src',img)
    dst = cv2.bilateralFilter(img,15,35,35)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)
    

    在这里插入图片描述在这里插入图片描述
    高斯滤波详解
    中值滤波详解
    双边滤波详解
    方框滤波详解
    均值滤波详解

    展开全文
  • 图像处理·实验三】matlab 去除人脸图像中的雀斑,人脸美白
  • 美白图像算法

    2017-09-13 20:22:28
    1)最小二乘法曲线拟合  2)公式推导  3)工具分析:Matlab  4)深度学习  5)映射表
  • 图像处理·实验三】matlab 去除人脸图像中的雀斑,人脸美白
  • 作者:程昊威 上海电力大学 授课教师:秦伦明 开发环境:VS2012+MFC+Opencv2.4.9 实验目的: 利用VC++实现人脸美化软件,要求: 1、具有人脸美化界面;...美白:使用图像增强—非掩蔽锐化 ...
  • 图像处理的一个简化的磨皮算法用双边滤波来做图像磨皮,这是最常用的办法。说到双边滤波,其实不太理解“边”是个什么意思,其实更通俗的应该叫做双”因素“滤波,或者双”域“滤波。所谓双域就是空间域和值域。双边...
  • 人像磨皮美白

    2016-03-18 19:54:08
    先前对磨皮印象不过是用一种保边滤波器平滑处理一下,但见旅途这段时间做的工作都是磨皮,索性看一下。方法也很简单,就一个公式,我用matlab测试了一下,确实很有效果。
  • 图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的...
  • 解决方法:自己写算法修改像素点、调整亮度、操作内存STEP1 写几个宏定义#ifndef WKColor_h #define WKColor_h#define Mask8(x) ( (x) & 0xFF ) #define R(x) ( Mask8(x) ) #define G(x) ( Mask8(x >> 8) ) ...
  •  1.1 :最近听了直播课程,了解了图片处理功能,然后自己突发奇想做磨皮效果。  1.2 :无demo说话不硬气,上github地址: 欢迎star,你的星星是我持续创作的动力 二:先上效果图 原图美白图 超级美白图磨皮or...
  • (1)采用高斯滤波器,对图像处理十次,得到矩阵一 (2)采用canny算子,得到矩阵边缘的黑白图片得到矩阵二 (3)新矩阵 = 原矩阵*矩阵二+矩阵一*(1-矩阵二) (4)输出新矩阵 磨皮函数代码如下 function [ ...
  • function f = my_clean( g,n ) % n 为操作次数,默认为1,g为原图 g2 = g;...%得到原图像的大小 [ M,N,~ ] = size( g ); while( n ~=0 ) n = n - 1; %进行交互选择处理区域 mask = roipoly( g2 );
  • 均值模糊:一般用来处理图像的随机噪声 中值模糊:一般用来处理图像的椒盐噪声 自定义模糊:对图像进行锐化之类的操作 二、模糊基本原理 基于离散卷积、定义好每个卷积核、不同卷积核得到不同的卷积效果、模糊...
  • 找到图像中连通域面积最大的那块连通域。 i=imread('face.jpg'); I=rgb2gray(i); BW=im2bw(I); %利用阈值值变换法将灰度图像转换成二进制图像 figure(1); imshow(BW); %最小化背景 [n1 n2]=size(BW); r=floor(n1...
  • 作者:张皓霖 上海电力学院  算法提供老师:秦伦明 ...课程:数字图像处理 使用MFC+ VC++ +部分OpenCv库实现 初稿效果如下: 详细代码、过程和最后修改后的最终效果将在下篇分享!  ...
  • 作者:张皓霖 上海电力学院 课程老师:秦伦明 上篇我将人脸美化的过程列出来了,这篇我是用VS...3、具有美白功能,参数可调; 实验内容 基于VS2012+OpenCv+MFC制作人脸美化软件 实验原理 磨皮:滤波(均值滤波、...
  • 树莓派-图像处理Python

    2020-04-05 14:26:09
    树莓派中进行图像处理-Python 代码: import cv2 #导入opencv库 import numpy as np #… #读取一张图片,地址不能带中文 ‘’’ 第二个参数,取值可为: cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha...
1 2 3 4 5 ... 20
收藏数 870
精华内容 348
关键字:

图像处理 美白