日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像处理(七)导向滤波磨皮

發(fā)布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像处理(七)导向滤波磨皮 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導(dǎo)向濾波磨皮的對應(yīng)文獻(xiàn)為:Guided Image Filtering,這個算法速度極其之快,比其他的保邊緣磨皮算法都快,甚至快上好幾倍。這個算法最初來自于何明凱的圖像去霧算法中,現(xiàn)在已然被應(yīng)用封裝與matlab圖像處理函數(shù)庫中,可見算法堪稱經(jīng)典。

看以下算法的偽代碼:

這兒算法中有大量的用到均值卷積,因此可以用快速積分圖的方法,進(jìn)行簡單加速。這個算法也是一種保邊緣的濾波算法,然而它的用處遠(yuǎn)遠(yuǎn)不僅僅用于濾波,還有其它非常好用的功能,比如可以用于升采樣,這個感覺非常爽。在一些摳圖算法中,如果對大圖直接進(jìn)行摳圖,速度非常慢,比如現(xiàn)在的grub cut 分割算法,這個時候我們可以對圖像進(jìn)行下采樣,然后在小圖上進(jìn)行摳圖,最后再進(jìn)行升采樣,這樣速度就非??炝?#xff0c;這是現(xiàn)在一些大圖處理常用的一種思路,因此這個算法的用處可想而知。最后我把我寫代碼貼出來,以供學(xué)習(xí),這個代碼沒有經(jīng)過整理優(yōu)化,只是用了快速積分圖進(jìn)行加速:

[c++]?view plaincopy
  • float*?CGuidedfiler::Guidedfiler(float*inimg,float*guidedimg,int?height,int?widht,int?Radius,float?eps)??
  • ??
  • int?lenght=height*widht;??
  • float*mult=new?float[lenght];??
  • float*oned=new?float[lenght];??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????mult[i]=inimg[i]*guidedimg[i];??
  • ????oned[i]=1;??
  • }??
  • float?*covmult=new?float[lenght];??
  • float?*covone=new?float[lenght];??
  • FastGetAVG(covmult,mult,widht,height,Radius);??
  • FastGetAVG(covone,oned,widht,height,Radius);??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????covmult[i]/=covone[i];??
  • }??
  • delete?[]mult;??
  • delete?[]oned;??
  • ??
  • ??
  • //計算導(dǎo)向圖、原圖的窗口均值??
  • float?*mean_inimg=new?float[lenght];??
  • FastGetAVG(mean_inimg,inimg,widht,height,Radius);??
  • float*mean_guideimg=new?float[lenght];??
  • FastGetAVG(mean_guideimg,guidedimg,widht,height,Radius);??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????mean_guideimg[i]/=covone[i];??
  • ????mean_inimg[i]/=covone[i];??
  • }??
  • ??
  • //計算ak的除數(shù)??
  • float?*var_guideimg=new?float[lenght];??
  • float?*sqr_guideimg=new?float[lenght];??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????sqr_guideimg[i]=guidedimg[i]*guidedimg[i];??
  • }??
  • FastGetAVG(var_guideimg,sqr_guideimg,widht,height,Radius);??
  • delete?[]sqr_guideimg;??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????var_guideimg[i]=var_guideimg[i]/covone[i]-mean_guideimg[i]*mean_guideimg[i];??
  • }??
  • //計算ak??
  • float*a=new?float[lenght];??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????a[i]=(covmult[i]-mean_guideimg[i]*mean_inimg[i])/(var_guideimg[i]+eps);??
  • }??
  • //計算bk??
  • float*b=new?float[lenght];??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????b[i]=mean_inimg[i]-a[i]*mean_guideimg[i];??
  • }??
  • delete?[]covmult;??
  • delete?[]mean_guideimg;??
  • delete?[]mean_inimg;??
  • delete?[]var_guideimg;??
  • float*mean_a=new?float[lenght];??
  • float*mean_b=new?float[lenght];??
  • FastGetAVG(mean_a,a,widht,height,Radius);??
  • FastGetAVG(mean_b,b,widht,height,Radius);??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????mean_a[i]/=covone[i];??
  • ????mean_b[i]/=covone[i];??
  • }??
  • delete?[]a;??
  • delete?[]b;??
  • //輸出圖像??
  • float?*outimg=new?float[lenght];??
  • for?(int?i=0;i<lenght;i++)??
  • {??
  • ????outimg[i]=mean_a[i]*guidedimg[i]+mean_b[i];??
  • }??
  • delete?[]mean_a;??
  • delete?[]mean_b;??
  • return?outimg;??

  • 然后把結(jié)果用于磨皮,測一測效果:


    原圖


    美圖秀秀智能磨皮


    導(dǎo)向濾波磨皮

    總的來說美圖的磨皮好像邊緣細(xì)節(jié)方面保持的不是很好,據(jù)此可以推斷,美圖的磨皮沒有用到其他膚色檢測技術(shù),而我是結(jié)合了膚色檢測技術(shù)在里面的,所以在頭發(fā)細(xì)節(jié)方面會保持的比較好。美圖的磨皮還有:自然磨皮、快速磨皮、普通磨皮,除了普通磨皮、智能磨皮,其它的算法結(jié)合了美白技術(shù)在里面,而且美白技術(shù)好像也沒有膚色結(jié)合膚色檢測技術(shù),好像是對全圖進(jìn)行白偏色處理,感覺美圖的美白效果很差,因為我覺得美白應(yīng)該是只對皮膚進(jìn)行美白,而不是整幅圖像進(jìn)行美白,這邊僅代表我個人觀點,如有冒犯,請聯(lián)系本人。本文地址:http://blog.csdn.net/hjimce/article/details/45421299?? ?作者:hjimce ? ? 聯(lián)系qq:1393852684 ?更多資源請關(guān)注我的博客:http://blog.csdn.net/hjimce?? ? ? ? ? ? ? ? ?原創(chuàng)文章,版權(quán)所有,轉(zhuǎn)載請保留這兩行作者信息

    總結(jié)

    以上是生活随笔為你收集整理的图像处理(七)导向滤波磨皮的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。