各向异性扩散PM模型原理与C++实现
来源:互联网 发布:淘宝鲁班系统 编辑:程序博客网 时间:2024/04/25 17:13
本文介绍了各向异性扩散PM模型,并给出了C++代码实现。
一、PM模型原理
其中,
二、C++代码实现
MATLAB代码可参考:http://www.csse.uwa.edu.au/~pk/research/matlabfns/Spatial/anisodiff.m
http://www.mathworks.com/matlabcentral/fileexchange/14995-anisotropic-diffusion-perona-malik/content/anisodiff_Perona-Malik/anisodiff2D.m
void CImageObj::Perona_Malik(int iter, double dt, double kappa, int option){int i, j;int nx = m_width, ny = m_height;double** I_t = NewDoubleMatrix(nx, ny);double** I_tmp = NewDoubleMatrix(nx, ny);for (i = 0; i < ny; i++)for (j = 0; j < nx; j++)I_t[i][j] = I_tmp[i][j] = m_imgData[i][j];for (int t = 0; t < iter; t++){for (i = 0; i < ny; i++){for (j = 0; j < nx; j++){int iUp = i - 1, iDown = i + 1;int jLeft = j - 1, jRight = j + 1; // 边界处理if (0 == i) iUp = i; if (ny - 1 == i) iDown = i;if (0 == j) jLeft = j; if (nx - 1 == j) jRight = j;double deltaN = I_t[iUp][j] - I_t[i][j];double deltaS = I_t[iDown][j] - I_t[i][j];double deltaE = I_t[i][jRight] - I_t[i][j];double deltaW = I_t[i][jLeft] - I_t[i][j];double cN, cS, cE, cW;if (1 == option){cN = exp(-(deltaN / kappa) * (deltaN / kappa));cS = exp(-(deltaS / kappa) * (deltaS / kappa));cE = exp(-(deltaE / kappa) * (deltaE / kappa));cW = exp(-(deltaW / kappa) * (deltaW / kappa));}else if (2 == option){cN = 1.0 / (1 + (deltaN / kappa) * (deltaN / kappa));cS = 1.0 / (1 + (deltaS / kappa) * (deltaS / kappa));cE = 1.0 / (1 + (deltaE / kappa) * (deltaE / kappa));cW = 1.0 / (1 + (deltaW / kappa) * (deltaW / kappa));}I_tmp[i][j] += dt * (cN * deltaN + cS * deltaS + cE * deltaE + cW * deltaW);}} // 一次迭代for (i = 0; i < ny; i++)for (j = 0; j < nx; j++){I_t[i][j] = I_tmp[i][j];}} // 迭代结束// 给图像赋值for (i = 0; i < ny; i++)for (j = 0; j < nx; j++){double tmp = I_t[i][j];tmp = max(0, min(tmp, 255));m_imgData[i][j] = (unsigned char)tmp;}DeleteDoubleMatrix(I_t, nx, ny);DeleteDoubleMatrix(I_tmp, nx, ny);}
0 0
- 各向异性扩散PM模型原理与C++实现
- 数字图像处理,基于PM和Catte模型各向异性扩散的C++实现
- 各向异性扩散滤波_原理与算法
- 各向异性扩散
- 各向异性扩散
- 各向异性扩散 Anisotropic diffusion
- 可扩散列--可扩散列实现文件C语言
- 基于CPU的Bank BRDF经验模型,实现各向异性光照效果!(强烈推荐呀!各向异性的光照效果!!!)
- 血管增强的各向异性扩散滤波(VED算法)
- 图像的各向异性扩散——启发性方法
- 关于病毒扩散与传播的控制模型
- 模拟模型学习----几何布朗运动模拟 与 基于扩散模拟
- 基于CPU的Bank BRDF经验模型,实现各向异性光照效果!
- 基于CPU的Bank BRDF经验模型,实现各向异性光照效果!
- 各向异性
- 扩散模型解析
- 误差扩散原理
- 几个简单的各向异性光照模型
- Android自定义控件——有弹性的ListView,ScrollView
- 如何实现String和int数据的相互转换
- 当大叔爱上小丫头
- 工作日志 4.24
- iOS相册图片缓存(document)以及图片文件流上传服务器功能
- 各向异性扩散PM模型原理与C++实现
- 通州开通3条定向短程公交方便百姓出行
- 点分治:统计长度为K的路径条数
- Android+SSH开发商城App(1)数据库的创建和环境的搭建
- POJ1067 取石子游戏 威佐夫博弈
- 如何实现 基本数据类型 与 基本数据封装类 之间的相互转换
- 开源License对比分析
- tar 打包文件--- 不包含文件所在路径的方法
- GCD