网站首页 > 技术教程 正文
一键磨皮
I= double(imread('1.jpg')); H = RF(I,30,100) - I + 128; G = imfilter(H,fspecial('gaussian',[3 3],100)); opacity = 50; Dst = (I*(100 - opacity)+(I+2*G-256)*opacity)/100; imshow([uint8(I) uint8(Dst)]);
这是输入的原图。
<img data-rawheight="636" data-rawwidth="625" src="https://pic3.zhimg.com/b2e220c645b7c55b7b84bd8593fc780e_b.jpg" class="origin_image zh-lightbox-thumb" width="625" data-original="https://pic3.zhimg.com/b2e220c645b7c55b7b84bd8593fc780e_r.jpg">
这是效果图
<img data-rawheight="636" data-rawwidth="625" src="https://pic4.zhimg.com/41d28e4989e5e2e77b57634220c6427b_b.jpg" class="origin_image zh-lightbox-thumb" width="625" data-original="https://pic4.zhimg.com/41d28e4989e5e2e77b57634220c6427b_r.jpg">
再来两张效果
<img data-rawheight="989" data-rawwidth="1035" src="https://pic4.zhimg.com/a6a377c8908f5672d0bd502004445017_b.jpg" class="origin_image zh-lightbox-thumb" width="1035" data-original="https://pic4.zhimg.com/a6a377c8908f5672d0bd502004445017_r.jpg">
这里,RF是递归域变换滤波器(Domain Transform Filter),也可换成其它保边平滑的滤波器(Edge Perserving Filter),例双边滤波,导向滤波等。不是什么黑魔法,就是PhotoShop平湖法磨皮:,按步骤用Matlab化而已。这里,给出最后的计算公式,
Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100
EPFFilter是一种保边平滑的滤波器,Opacity控制透明度,GaussBlur是高斯滤波了,简单的PS的操作非常易于用Matlab程序化。
磨皮后可以再增加美白功能,也是不超过十行代码的,效果看起来更佳(其实我是想说,可以卖一个好价钱呢)。若是对皮肤美白,磨皮,祛痘这些算法感兴趣,可以在Imageshop博客 进一步学习。
<img data-rawheight="570" data-rawwidth="1366" src="https://pic3.zhimg.com/bf8e0d157151ed8fcc6128dadd1e7072_b.jpg" class="origin_image zh-lightbox-thumb" width="1366" data-original="https://pic3.zhimg.com/bf8e0d157151ed8fcc6128dadd1e7072_r.jpg">
补充说明,
Matlab并没有收录RF这个函数,但Matlab2014a已经有imguidedfilter函数,在Matlab2014a可以运行以下6行代码。
I= double(imread('7.png')); H =double(imguidedfilter(uint8(I))) - I + 128; G = imfilter(H,fspecial('gaussian',[3 3],100)); opacity = 50; Dest = (I*(100 - opacity)+(I+2*G - 256)*opacity)/100; imshow([uint8(I) uint8(Dest)]);
它的成品做出来是这个样子的。
<img src="https://pic4.zhimg.com/8c860dc578fa8ac820b095a75ae1aa73_b.png" data-rawwidth="1244" data-rawheight="689" class="origin_image zh-lightbox-thumb" width="1244" data-original="https://pic4.zhimg.com/8c860dc578fa8ac820b095a75ae1aa73_r.jpg">
除了此外,图像处理中很多算法都可以用Matlab在10行内完成的。
比如美图秀秀的滤镜,彩铅,素描等,我就不再泄露更多秘密了。
<img data-rawheight="665" data-rawwidth="1258" src="https://pic1.zhimg.com/a05218dbde53e1716882db6c67ee86f0_b.jpg" class="origin_image zh-lightbox-thumb" width="1258" data-original="https://pic1.zhimg.com/a05218dbde53e1716882db6c67ee86f0_r.jpg">
<img data-rawheight="665" data-rawwidth="1258" src="https://pic4.zhimg.com/7240ab81264ea81da700959030ebfe93_b.jpg" class="origin_image zh-lightbox-thumb" width="1258" data-original="https://pic4.zhimg.com/7240ab81264ea81da700959030ebfe93_r.jpg">
我曾有打算做出一款比美图秀秀更加友好功能更加强大的修图软件,共享出去,但是一个人力量太渺小了。非为牟利,只是因为我也修图爱好者。
铅笔画特效:
去雾特效:
- 上一篇: Matlab排序算法-遍历排序、冒泡排序
- 下一篇: Matlab自带的彩蛋命令(matlab彩图)
猜你喜欢
- 2024-11-06 关于几种熵的计算(MATLAB)(matlab熵值法求权重)
- 2024-11-06 Python与Matlab画图的代码对比(matlab跟python)
- 2024-11-06 「话说嵌入式」STM32控制算法验证之Matlab PIL
- 2024-11-06 基于BP神经网络的QPSK解调算法matlab性能仿真
- 2024-11-06 MATLAB使用蒙特卡洛算法实例求解线性规划
- 2024-11-06 基于MATLAB的ACC控制算法设计及仿真测试
- 2024-11-06 「一」MATLAB语言之常见函数及符号运算
- 2024-11-06 基于无线传感器网络的MCKP-MMF算法matlab仿真
- 2024-11-06 基于最小二乘递推算法的系统参数辨识matlab仿真
- 2024-11-06 「话说嵌入式」STM32算法的翅膀之MATLAB
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)