图片如下

实现人物的祛斑和磨皮,结合上课老师讲的内容,我打算用两种方式来实现,一种是高斯滤波,一种是双边滤波。通过实现这两种方式,最后总结比较这两种方式的不同

高斯滤波的代码

function g= gaussian(f)
%高斯滤波
%这段代码加了一个高斯滤波,最后用了一点小技巧,使得图像变白,达到美白得效果
    %gaussian
    figure,imshow(f,[]);  %显示原图
    h=fspecial('gaussian',[3 3],100);
    I1=imfilter(f,h,'same');
    figure,imshow(I1,[]);  %显示经过高斯滤波处理之后的图
    
    opacity = 0.5;
    G = (f*(1 - opacity)+(f+2*I1-1)*opacity);%blend
    figure,imshow(G,[]);  %显示经过blend处理之后的图
  
    G=G+30;  %增大RGB的值,因为越大的RGB值,越白
    figure,imshow(G,[]);  %显示经过美白处理之后的图
    
    g=G;
end

双边滤波的代码

function g=bilateral_filter(f)
%双边滤波器函数
%所谓的双边滤波,可以理解为就是两个不同的滤波模板点乘

figure,imshow(f,[]);  %显示原图
    f=double(f)/255;     %进行归一化,归一化的目的是可以抗干扰,去噪,便于w2的计算
    f=applycform(f,makecform('srgb2lab'));  %用于颜色空间转换,我试过,如果不加这个代码,效果会差很多
    [m,n,c]=size(f);   
    r=5;

fr=padarray(f,[r,r],'symmetric');
    sigma_s=input('input spatial similarity:'); % 2 4 8……,spatial similarity
    sigma_r=input('input range similarity:'); % 0.1 0.2 0.4……range similarity
    sigma_r=sigma_r*100;

w1=fspecial('gaussian',[2*r+1,2*r+1],sigma_s);   %得到一个高斯模板,以距离作为自变量高斯滤波器
    h=waitbar(0,'wait……');  %显示进度条的函数

for i=r+1:r+m          
        for j=r+1:r+n
            diffpix(:,:,1)=fr(i-r:i+r,j-r:j+r,1)-fr(i,j,1); % 计算像素差值,diffpix(:,:,1)表示RGB中的R
            diffpix(:,:,2)=fr(i-r:i+r,j-r:j+r,2)-fr(i,j,2);
            diffpix(:,:,3)=fr(i-r:i+r,j-r:j+r,3)-fr(i,j,3);

%以周围和当前像素灰度差值作为自变量的高斯滤波器
            w2=exp(-(diffpix(:,:,1).^2+diffpix(:,:,2).^2+diffpix(:,:,3).^2)/(2*sigma_r.^2));

w=w1.*w2;  %两个高斯模板点乘就得到了最终的双边滤波模板。
            fr(i,j,1)=sum(fr(i-r:i+r,j-r:j+r,1).*w)/sum(w);  %根据双边滤波器公式
            fr(i,j,2)=sum(fr(i-r:i+r,j-r:j+r,2).*w)/sum(w);
            fr(i,j,3)=sum(fr(i-r:i+r,j-r:j+r,3).*w)/sum(w);
        end
        waitbar(i/m);   
    end
    close(h);

%重新赋值
    g(:,:,1)=fr(r+1:r+m,r+1:r+n,1);
    g(:,:,2)=fr(r+1:r+m,r+1:r+n,2);
    g(:,:,3)=fr(r+1:r+m,r+1:r+n,3);

g=applycform(g,makecform('lab2srgb'));  %重新转换回来显示图像
    figure,imshow(g,[]);
end

总结

通过分别用高斯滤波和双边滤波进行编程对图片进行处理,在这一步部分,谈谈我对高斯滤波和双边滤波的理解。高斯滤波算法中,目标点上的像素值通常是由其所在位置上的周围的一个小局部邻居像素的值所决定。在2D高斯滤波中的具体实现就是对周围的一定范围内的像素值分别赋以不同的高斯权重值,并在加权平均后得到当前点的最终结果。一般的高斯模糊在进行采样时主要考虑了像素间的空间距离关系,但是却并没有考虑像素值之间的相似程度。而双边滤波,采样时不仅考虑像素在空间距离上的关系,同时加入了像素间的相似程度考虑,因而可以保持原始图像的大体分块进而保持边缘。双边滤波可以说是建立在高斯滤波的基础之上的。

现有如下图所示人物图像,编程实现人物美肤(祛斑、磨皮)。相关推荐

  1. 深度学习--识别(四小人)人物图像

    岁月匆匆如流水,青春一去不回头.近2年来,随着AI等技术的发展,目前深度学习对图像,语音,文字等已经比较成熟,我也来跟跟风,拿人物图像练练手. 下面是我采用的是DenseNet卷积神经网络模型来训练 ...

  2. 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密

    1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...

  3. 如何自学图像编程(转)

    现在,图像类信息越来越多了,对图像的编程需求也越来越多.图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱.很多人把目光放在这个上面.刚才又有网友咨询,做图像要看 ...

  4. 网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门

    1.前言 即时通讯网整理了大量的网络编程类基础文章和资料,包括<TCP/IP协议 卷1>.<[通俗易懂]深入理解TCP协议>系列.<网络编程懒人入门>系列.< ...

  5. Python可以这样学(第七季:pillow扩展库图像编程)-董付国-专题视频课程

    Python可以这样学(第七季:pillow扩展库图像编程)-1738人已学习 课程介绍         董付国老师系列教材<Python程序设计(第2版)>(ISBN:978730243 ...

  6. .ne中的控制器循环出来的数据如何显示在视图上_让不懂编程的人爱上iPhone开发系列2 iOS12+Swift4.2版-Checklists-16...

    让不懂编程的人爱上iPhone开发系列2 iOS12+Swift4.2版-Checklists-16 添加导航栏按钮 说明: 本系列教程改编自raywenderlich.com中的iOS Appren ...

  7. 论文笔记--基于 FCM 聚类的跨模态人物图像标注方法-2015

    期刊论文-基于 FCM 聚类的跨模态人物图像标注方法-2015-微型电脑应用-赵昀,张翌翀 文末附人脸标注相关论文下载地址 文章目录 摘要 技术 人脸检测与特征表示(与2012年吴伟硕士论文<跨 ...

  8. 计算机数控编程特点,什么是数控图像编程系统有哪些特点

    第五章 图像数控编程 一. 图像编程简介 二. 二坐标平面轮廓数 控加工图像编程 三. 多坐标图像数控编程 四. 高速切削加工简介 图像编程即根据计算 机图形显示器上显示的 零件设计三维模型,在1. ...

  9. 网络编程懒人入门(七):深入浅出,全面理解HTTP协议

    转自即时通讯网:http://www.52im.net/ 本文引用了自简书作者"涤生_Woo"的文章,内容有删减,感谢原作者的分享. 1.前言 HTTP(全称超文本传输协议,英文全 ...

最新文章

  1. Ray Tracing,Ray Casting,Path Tracing,Ray Marching 的区别?
  2. 【Linux笔记】CentOS下找不到eth0设备的解决方法
  3. foxpro被什么软件取代_MATLAB可以被取代么?可以被什么软件取代?
  4. 数据湖之iceberg系列(三)iceberg快速入门
  5. 用计算机玩游戏最简单的方法,如何制作电脑简易命令小游戏
  6. python工资这么高为什么不学-为什么那么多人想学 Python?
  7. 月薪多少最幸福,离你有多远?
  8. Raki的读paper小记:ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS
  9. 7、乐趣国学—趣谈“圣贤”
  10. 几个极速版自动阅读项目的autojs脚本
  11. 原生列表table固定表头
  12. kdj买卖指标公式源码_量+优化kdj买卖指标公式、源码-大智慧公式 -程序化交易(CXH99.COM)...
  13. win10浏览器html设置字体大小设置,Win10网页字体变小了如何变大?网页字体变小了调节方法...
  14. java json解析(转)
  15. 启用计算机的fn键,联想 ThinkPad 笔记本 Fn 键 关闭与启用方法
  16. 【概率论与数理统计】1.5 独立性
  17. 动态规划——Weighted Interval Scheduling
  18. [交流] 新手常见(五国)(-v图)错误解决(原版,破解kernel,补丁kext下载)
  19. java源码——计算立体图形的表面积和体积
  20. html5写花,HTML5 盛放的花朵

热门文章

  1. python functools partial,【Python functools.partial 偏函数】
  2. 计算机毕业设计springboot基于SpringBoot框架的民俗文化交流与交易平台的设计与实现4557w源码+系统+程序+lw文档+部署
  3. [转帖]pfSense软路由系统的使用
  4. [日志]你掌握赞美别人的技巧吗
  5. NOIP2018总结(游记)
  6. 重磅!博安生物新冠中和抗体对“拉姆达”等变异毒株有效;2021投资入籍排名出炉 | 美通社头条...
  7. 早期的个人计算机,早期计算机主要用于什么,
  8. 解决插入U盘不显示盘符问题,最有效,最简单!!!
  9. 利用SD的插件从文本或者图片创建3D模型
  10. NWJS在XP下调用require(‘child_process‘)时闪退