中值滤波去雾算法matlab,去雾算法-引导滤波程序
//**************************************************************
//**************
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,去雾算法-引导滤波程序相关推荐
- 随机洗牌算法+matlab,洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...
- matlab 图像白平衡算法,Matlab常用白平衡算法
<Matlab常用白平衡算法>由会员分享,可在线阅读,更多相关<Matlab常用白平衡算法(21页珍藏版)>请在人人文库网上搜索. 1.1 灰色世界法灰色世界法(grey wo ...
- 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc
图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...
- 关于精英蚁群算法matlab,蚁群算法MATLAB解VRP问题
Excel exp12_3_2.xls内容: ANT_VRP函数: function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ANT ...
- 蚂蚁算法matlab,蚁群算法(ACA)及其Matlab实现
1基本原理: 本质上也是一种概率算法,通过大概率收敛到最佳值,和其他的智能算法很相似.蚁群分泌的信息素存在正反馈,使得较佳的解 具有大概率被选到,当全局都选用较佳的解,变可以得到整体的最优解. 2几个 ...
- 压缩感知算法matlab,压缩感知算法matlab
MATLAB代码如下: 压缩感知仿真实例 压缩感知仿真实例在MATLAB R2001b中的计算结果如下: 原图像 采样率0.7 采样率0.5 采样率0.3 压缩感知仿真实例采用均方误差...... M ...
- kmeans聚类算法matlab代码,K-Means算法实现(Matlab)
K-Means算法具体内容可以参考我博客的相关文章,这里只使用Matlab对其进行实现,其他内容不多赘述 K-Means算法 1.生成随机样本点 首先利用 mvnrnd 函数生成3组满足高斯分布的数据 ...
- 粒子群算法matlab多元,进化算法之粒子群算法和Matlab实现(多维)
前面一篇文章介绍了遗传算法,这里再介绍一种进化算法,称为粒子群算法.同遗传算法类似,粒子群算法也是仿照了自然界的生物现象得到的.这种现象就是鸟群在某个未知空间内寻找食物这一思想. 鸟群通过自身经验和种 ...
- 极坐标格式算法MATLAB,极坐标格式算法,polar format algorithm,音标,读音,翻译,英文例句,英语词典...
在 平面内取一个定点O, 叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向).对于平面内任何一点M,用ρ表示线段OM的长度,θ表示从Ox到OM的角度,ρ叫做点M的极 ...
最新文章
- LeetCode-2 Add Two Numbers
- algorithm头文件下的常用函数
- OpenJdk7编译
- 图像分类中混淆矩阵精度验证法中的几个指标说明
- Log4j 2配置与IntelliJ IDEA控制台颜色
- 作者:崔辰州(1976-),男,博士,中国科学院国家天文台研究员、硕士生导师...
- 无法安装 DotNetCore.1.0.0-VS2015Tools.Preview2解决方法
- 在android 采用 android junit test 测试注意
- 实用工具【SqlPrompt】 【Subline】 【XMind】 【PhotoShop】 【TakeColor】 【Q+】本次只讨论SqlPrompt...
- 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
- JAVA Servlet进阶
- git log查看提交的Author是由谁决定的呢?
- 《是男人就下100层》真的有隐藏剧情!B站up主数月破解
- AD936x+ZYNQ搭建OpenWIFI
- 谷歌插件学习必备准备知识代码提示插件调试
- 农业灌区量测水流量在线监测系统解决方案
- lcn场景模拟演示_演示家庭影院的十大电影场景
- 惊呼!一枚程序缓,竟能开发出如此劲爆的僵尸游戏!
- 数电学习(六、时序逻辑电路)(三)
- Mac 下截图聚焦、局部放大、按键 GIF 录屏的最佳实践