QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1767|回复: 2
打印 上一主题 下一主题

十行以内,你写过哪些比较酷的 Matlab 代码?

[复制链接]
字体大小: 正常 放大

398

主题

13

听众

1343

积分

  • TA的每日心情
    慵懒
    2015-12-12 14:33
  • 签到天数: 81 天

    [LV.6]常住居民II

    跳转到指定楼层
    1#
    发表于 2015-10-14 23:56 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta



    一键磨皮


    I= double(imread('1.jpg'));H = RF(I,30,100) - 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)]);
    前方高能预警,观后可能对心理产生不适,慎重下拉。。。






    原图

    磨皮后

    其中RF是递归域变换滤波器,可以到Domain Transform for Edge-Aware Image and Video Processing下载,也可以换成其他保边平滑的滤波器,例如双边滤波,导向滤波,各向异性扩散滤波器等等。

    算法说明:
    关于这个算法,其实就是在网上搜索一个磨皮教程,然后用Matlab程序化实现而已。
    这里,给出最后的计算公式,

    EPFFilter是一种保边平滑的滤波器,Opacity控制透明度,GaussBlur是高斯滤波了,这些PS的操作也非常易于用Matlab程序化,没有什么难的。若真真对这个算法感兴趣,可以参考人在旅途的博客简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节。

    后续说明:
    考虑到Matlab并没有自带RF这个函数,有作弊的嫌疑。所以私底下找了隔壁老王,在他的Matlab2014b上修改测试了一下,将RF换成imguidedfilter函数,在Matlab2014a可以直接使用以下6行代码,关于这个函数可以看官方文档 Guided filtering of images

    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)]);



    个人而言,关于图像处理或者计算机视觉的学习,最好还是多看paper吧。
    推荐一下,台湾大学咨询工程学系暨研究所Yung-Yu Chuang教授的计算摄影学的Readings,上面搜集好多好看的paper。(如果是计算机视觉方面研究生可以无视)
      

    摘自知乎:http://www.zhihu.com/question/27780598

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    269534893        

    0

    主题

    5

    听众

    50

    积分

    升级  47.37%

  • TA的每日心情
    开心
    2016-4-30 20:33
  • 签到天数: 35 天

    [LV.5]常住居民I

    社区QQ达人 邮箱绑定达人

    回复

    使用道具 举报

    w789123        

    3

    主题

    9

    听众

    78

    积分

    升级  76.84%

  • TA的每日心情
    奋斗
    2016-9-20 17:14
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    自我介绍
    主要,求多元一次多目标优化,求同目标M友

    社区QQ达人

    运筹学, 里边 讲到单纯形,各种理论的时候, 需要一步步的计算,矩阵
    ,其实最关键就是对旋转元进行计算,有下边代码,很方便

    第一行, 输入旋转元 行, (t=... 开始, 目的求对偶单纯, 单独计算第一行 , 也可以不要)
    第二行, 输入旋转元 列, (t=... 开始.  目的为了求单纯形, 单独计算第一列 , 可以不用)

    r=4 ;     t=a(r,:);t=t.*(t<0) ;d=abs(a(1,:)./t) ;d(end)=0  
    c=2 ;     t=a(:,c);t=t.*(t>0) ;d=a(:,end)./ t ;d(1)=0  
    t=a(r,:) ./ a(r,c);
    a=-a(:,c)*t + a;
    a(r,:)=t;

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-26 12:26 , Processed in 0.837118 second(s), 63 queries .

    回顶部