主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的(和双边滤波很像)。

通常我们有将图像看作矩阵的,看作图的,看作随机过程的,记得过去还有看作力场的。

这次新鲜,将图像看作热量场了。每个像素看作热流,根据当前像素和周围像素的关系,来确定是否要向周围扩散。比如某个邻域像素和当前像素差别较大,则代表这个邻域像素很可能是个边界,那么当前像素就不向这个方向扩散了,这个边界也就得到保留了。

先看下效果吧:

具体的推导公式都是热学上的,自己也不太熟悉,感兴趣的可以去看原论文,引用量超7000吶。

我这里只介绍一下最终结论用到的公式。

主要迭代方程如下:

I就是图像了,因为是个迭代公式,所以有迭代次数t。

四个散度公式是在四个方向上对当前像素求偏导,news就是东南西北嘛,公式如下:

而cN/cS/cE/cW则代表四个方向上的导热系数,边界的导热系数都是小的。公式如下:

最后整个公式需要先前设置的参数主要有三个,迭代次数t,根据情况设置;导热系数相关的k,取值越大越平滑,越不易保留边缘;lambda同样也是取值越大越平滑。

最后是matlab代码:

clear all;

close all;

clc;

k=15; %导热系数,控制平滑

lambda=0.15; %控制平滑

N=20; %迭代次数

img=double(imread('lena.jpg'));

imshow(img,[]);

[m n]=size(img);

imgn=zeros(m,n);

for i=1:N

for p=2:m-1

for q=2:n-1

%当前像素的散度,对四个方向分别求偏导,局部不同方向上的变化量,

%如果变化较多,就证明是边界,想方法保留边界

NI=img(p-1,q)-img(p,q);

SI=img(p+1,q)-img(p,q);

EI=img(p,q-1)-img(p,q);

WI=img(p,q+1)-img(p,q);

%四个方向上的导热系数,该方向变化越大,求得的值越小,从而达到保留边界的目的

cN=exp(-NI^2/(k*k));

cS=exp(-SI^2/(k*k));

cE=exp(-EI^2/(k*k));

cW=exp(-WI^2/(k*k));

imgn(p,q)=img(p,q)+lambda*(cN*NI+cS*SI+cE*EI+cW*WI); %扩散后的新值

end

end

img=imgn; %整个图像扩散完毕,用已扩散图像的重新扩散。

end

figure;

imshow(imgn,[]);

VC代码(借助于opencv):

int k = 15;

float lambda = 0.25;

int N = 20;

int m = im_eye.rows;

int n = im_eye.cols;

Mat imgn(m, n, CV_32FC1, Scalar(0));

for (int i = 0; i < N; i++)

{

for (int p = 1; p < m-1; p++)

{

for (int q = 1; q < n-1; q++)

{

float NI = diffimg.at(p - 1, q) - diffimg.at(p, q);

float SI = diffimg.at(p + 1, q) - diffimg.at(p, q);

float EI = diffimg.at(p, q - 1) - diffimg.at(p, q);

floatWI = diffimg.at(p, q + 1) - diffimg.at(p, q);

floatcN = exp(-pow(NI ,2) / (k*k));

float cS = exp(-pow(SI, 2) / (k*k));

floatcE = exp(-pow(EI, 2) / (k*k));

floatcW = exp(-pow(WI, 2) / (k*k));

imgn.at(p, q) = diffimg.at(p, q) + lambda*(cN*NI + cS*SI + cE*EI + cW*WI);

}

}

diffimg = imgn;

}

vc调用matlab直方图,图像各向异性扩散算法(VC与Matlab版本实现)相关推荐

  1. matlab人工选择阈值进行分割,基于MATLAB的图像阈值分割算法的研究

    [摘要]:图像分割是一种重要的数字图像处理技术.本文首先介绍了图像分割技术,其次总结了目前图像分割技术中所用到的阈值.边缘检测.区域提取等方法以及分水岭算法.针对各种阈值分割算法,本文在最后做了详细的 ...

  2. 【老生谈算法】matlab实现图像去雾算法——图像去雾

    基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码 ## 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于mat ...

  3. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[聚类算法]基于matlab划分法k-means聚类算法[含Matlab源码 1941期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  4. 基于matlab的图像HOG特征提取算法仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来 ...

  5. 【老生谈算法】matlab实现图像滤波处理算法源码——图像滤波处理算法

    matlab图像滤波处理算法详解 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab图像滤波处理.doc 2.算法详 ...

  6. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

  7. matlab去雾算法论文,基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码.doc...

    本文主要介绍基于Retinex理论的雾霭天气图像增强及其实现.并通过编写两个程序来实现图像的去雾功能. 1 Rentinex理论 Retinex(视网膜Retina"和大脑皮层Cortex& ...

  8. 【图像分割】基于收缩系数的粒子群混合引力搜索算法多级图像阈值分割算法研究附matlab代码

  9. 【图像提取】基于matlab鱼眼图像有效区域提取【含Matlab源码 2186期】

    一.鱼眼图像 1 鱼眼图像研究 随着信号处理和图像处理技术的发展,基于鱼眼全景监控摄像头的视觉处理技术得到快速发展,中国已于2013年底发射"嫦娥三号",搭载的"玉兔号& ...

最新文章

  1. SYSENTER、SYSEXIT—快速系统调用
  2. excel简繁切换_EXCEL中如何随意切换简体繁体文字
  3. eclipse再次导入已经逻辑删除的工程,IDE提示已存在,无法导入的解决办法
  4. windows server 2008 r2之间的ftp传输脚本
  5. [error]Cannot create __weak reference in file using manual refer XCode7.3
  6. 11 为了进一步_浅聊小米11发布会
  7. 【面向对象】聚合的四种语义
  8. 《4月份数据库技术通讯》.pdf
  9. 飞行姿态角度表示: heading pitch roll
  10. linux脚本取前一天时间戳,linux – 为脚本日志条目添加时间戳
  11. tensorflow GPU版本配置加速环境
  12. mySQL及可视化界面navicat在window的配置
  13. 华为云学院新春大礼包:场景化微认证上新了!
  14. 机器学习笔记-阻尼牛顿法
  15. 我的世界手游服务器修改密码,阿瓦隆之王怎么修改密码 | 手游网游页游攻略大全...
  16. c语言xp与pow的差别,关于c ++:调用pow()时舍入结果的差异
  17. 将符号(amp; amp;)解码为正常
  18. 2022哈工大软件构造我的学习笔记(1)
  19. WinForm引用ActiveX组件,对Com组件的学
  20. Android 开源框架精选

热门文章

  1. 日期转换为后端需要的格式 Fri Oct 09 2020 00:00:00 GMT+0800 (中国标准时间)
  2. 树莓派Raspberry Pi - 文件共享
  3. 为什么下载了SQL Server却没有sql配置管理器
  4. OSG计算并绘制模型中每一个三角面片的法向量
  5. Java语言实现经典游戏俄罗斯方块
  6. SqlDeveloper一直显示正在连接而sqlplus可以连接到数据库
  7. Redis主从复制哨兵模式自动切换
  8. Altium Designer 19.1.18 - 更改铺铜的透明度
  9. Job And Schedule (V8R6C4)
  10. Docker-compose与consul