//**************************************************************

//**************

guidedfilter() ******************************

//**功能: 引导滤波函数**

//**输入: CvMat *p 输入图像 ,必须为CV_32FC1或者CV_64FC1

**

//**

CvMat *I 引导图像 ,必须为CV_32FC1或者CV_64FC1

**

//**

int r 滤波半径**

//**

double eps 滤波参数**

//**输出: 输出滤波后的图像矩阵**

//**应imSrc的点为中心的邻域的线性叠加值**

//**Auth:

s

**

//**Date:

2014.2

**

//**注意: 参考论文《Guided Image

Filtering》Kaiming He

**

//**************************************************************

CvMat *guidedfilter(CvMat *I, CvMat *p, int r, double

eps)

{

int w=I->width;

int h=I->height;

//printf("...............%d %d",w,h);

CvMat *ones=cvCreateMat(h,w,CV_32FC1);

int i,j;

for (i=0;i

{

for (j=0;j

{

cvmSet(ones,i,j,1.0);

}

}

CvMat *N=NULL;

N=boxfilter(ones,r);

CvMat *mean_I=cvCreateMat(h,w,CV_32FC1);

CvMat *box1=NULL;

box1=boxfilter(I,r);

cvDiv(box1,N,mean_I); //mean_I=box1/N

CvMat *mean_p=cvCreateMat(h,w,CV_32FC1);

CvMat *box2=NULL;

box2=boxfilter(p,r);

cvDiv(box2,N,mean_p); //mean_p=mean_I=box2/N

CvMat *temp1=cvCreateMat(h,w,CV_32FC1);

cvMul(I,p,temp1);

//temp1=I*P 点乘

CvMat *mean_Ip=cvCreateMat(h,w,CV_32FC1);

CvMat *box3=NULL;

box3=boxfilter(temp1,r);

cvDiv(box3,N,mean_Ip);

CvMat *cov_Ip=cvCreateMat(h,w,CV_32FC1);

CvMat *temp2=cvCreateMat(h,w,CV_32FC1);

cvMul(mean_I,mean_p,temp2);

cvSub(mean_Ip,temp2,cov_Ip);

CvMat *temp3=cvCreateMat(h,w,CV_32FC1);

cvMul(I,I,temp3);

CvMat *mean_II=cvCreateMat(h,w,CV_32FC1);

CvMat *box4=NULL;

box4=boxfilter(temp3,r);

cvDiv(box4,N,mean_II);

CvMat *var_I=cvCreateMat(h,w,CV_32FC1);

CvMat *temp4=cvCreateMat(h,w,CV_32FC1);

cvMul(mean_I,mean_I,temp4);

cvSub(mean_II,temp4,var_I);

//var_I=mean_II-temp4

CvMat *temp5=cvCreateMat(h,w,CV_32FC1);

CvScalar s;

s.val[0]=eps;

cvAddS(var_I,s,temp5,0); //temp(I)=var_I(I)+s 数组与数相加

CvMat *a=cvCreateMat(h,w,CV_32FC1);

cvDiv(cov_Ip,temp5,a);

CvMat *temp6=cvCreateMat(h,w,CV_32FC1);

cvMul(a,mean_I,temp6);

CvMat *b=cvCreateMat(h,w,CV_32FC1);

cvSub(mean_p,temp6,b);

CvMat *mean_a=cvCreateMat(h,w,CV_32FC1);

CvMat *mean_b=cvCreateMat(h,w,CV_32FC1);

CvMat *q=cvCreateMat(h,w,CV_32FC1);

CvMat *box5=NULL;

box5=boxfilter(a,r);

CvMat *box6=NULL;

box6=boxfilter(b,r);

cvDiv(box5,N,mean_a);

cvDiv(box6,N,mean_b);

CvMat *temp7=cvCreateMat(h,w,CV_32FC1);

cvMul(mean_a,I,temp7);

cvAdd(temp7,mean_b,q);//两数组相加

cvReleaseMat(&ones);

cvReleaseMat(&N);

cvReleaseMat(&mean_I);

cvReleaseMat(&mean_p);

cvReleaseMat(&mean_Ip);

cvReleaseMat(&cov_Ip);

cvReleaseMat(&mean_II);

cvReleaseMat(&var_I);

cvReleaseMat(&a);

cvReleaseMat(&b);

cvReleaseMat(&mean_a);

cvReleaseMat(&mean_b);

cvReleaseMat(&temp1);

cvReleaseMat(&temp2);

cvReleaseMat(&temp3);

cvReleaseMat(&temp4);

cvReleaseMat(&temp5);

cvReleaseMat(&temp6);

cvReleaseMat(&temp7);

cvReleaseMat(&box1);

cvReleaseMat(&box2);

cvReleaseMat(&box3);

cvReleaseMat(&box4);

cvReleaseMat(&box5);

cvReleaseMat(&box6);

return q;

}

中值滤波去雾算法matlab,去雾算法-引导滤波程序相关推荐

  1. 随机洗牌算法+matlab,洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...

  2. matlab 图像白平衡算法,Matlab常用白平衡算法

    <Matlab常用白平衡算法>由会员分享,可在线阅读,更多相关<Matlab常用白平衡算法(21页珍藏版)>请在人人文库网上搜索. 1.1 灰色世界法灰色世界法(grey wo ...

  3. 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc

    图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...

  4. 关于精英蚁群算法matlab,蚁群算法MATLAB解VRP问题

    Excel  exp12_3_2.xls内容: ANT_VRP函数: function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ANT ...

  5. 蚂蚁算法matlab,蚁群算法(ACA)及其Matlab实现

    1基本原理: 本质上也是一种概率算法,通过大概率收敛到最佳值,和其他的智能算法很相似.蚁群分泌的信息素存在正反馈,使得较佳的解 具有大概率被选到,当全局都选用较佳的解,变可以得到整体的最优解. 2几个 ...

  6. 压缩感知算法matlab,压缩感知算法matlab

    MATLAB代码如下: 压缩感知仿真实例 压缩感知仿真实例在MATLAB R2001b中的计算结果如下: 原图像 采样率0.7 采样率0.5 采样率0.3 压缩感知仿真实例采用均方误差...... M ...

  7. kmeans聚类算法matlab代码,K-Means算法实现(Matlab)

    K-Means算法具体内容可以参考我博客的相关文章,这里只使用Matlab对其进行实现,其他内容不多赘述 K-Means算法 1.生成随机样本点 首先利用 mvnrnd 函数生成3组满足高斯分布的数据 ...

  8. 粒子群算法matlab多元,进化算法之粒子群算法和Matlab实现(多维)

    前面一篇文章介绍了遗传算法,这里再介绍一种进化算法,称为粒子群算法.同遗传算法类似,粒子群算法也是仿照了自然界的生物现象得到的.这种现象就是鸟群在某个未知空间内寻找食物这一思想. 鸟群通过自身经验和种 ...

  9. 极坐标格式算法MATLAB,极坐标格式算法,polar format algorithm,音标,读音,翻译,英文例句,英语词典...

    在 平面内取一个定点O, 叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向).对于平面内任何一点M,用ρ表示线段OM的长度,θ表示从Ox到OM的角度,ρ叫做点M的极 ...

最新文章

  1. LeetCode-2 Add Two Numbers
  2. algorithm头文件下的常用函数
  3. OpenJdk7编译
  4. 图像分类中混淆矩阵精度验证法中的几个指标说明
  5. Log4j 2配置与IntelliJ IDEA控制台颜色
  6. 作者:崔辰州(1976-),男,博士,中国科学院国家天文台研究员、硕士生导师...
  7. 无法安装 DotNetCore.1.0.0-VS2015Tools.Preview2解决方法
  8. 在android 采用 android junit test 测试注意
  9. 实用工具【SqlPrompt】 【Subline】 【XMind】 【PhotoShop】 【TakeColor】 【Q+】本次只讨论SqlPrompt...
  10. 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
  11. JAVA Servlet进阶
  12. git log查看提交的Author是由谁决定的呢?
  13. 《是男人就下100层》真的有隐藏剧情!B站up主数月破解
  14. AD936x+ZYNQ搭建OpenWIFI
  15. 谷歌插件学习必备准备知识代码提示插件调试
  16. 农业灌区量测水流量在线监测系统解决方案
  17. lcn场景模拟演示_演示家庭影院的十大电影场景
  18. 惊呼!一枚程序缓,竟能开发出如此劲爆的僵尸游戏!
  19. 数电学习(六、时序逻辑电路)(三)
  20. Mac 下截图聚焦、局部放大、按键 GIF 录屏的最佳实践

热门文章

  1. 在window下查看占用tomcat进程,杀死进程并启用tomcat
  2. Java|Java中int的取值范围是多少
  3. SQlServer数据库基础
  4. springSecurity之PasswordEncoder
  5. calendar.getActualMaximum(calendar.DAY_OF_MONTH)的坑点
  6. cocos Creator打包
  7. ORACLE查询基本语句
  8. 基于java的点餐微信小程序
  9. win10连着网但网页打不开,代理服务器出现问题,或地址有误
  10. 锂矿之龙战于野:天齐锂业