资源简介
扩散滤波实现图像增强,包括高斯滤波预处理,梯度计算,结构张量计算,扩散张量计算,数值离散以及增强效果评估代码
代码片段和文件信息
%%%%%%%%%%%%%%扩散滤波函数%%%%%%%%%%%%%%
function [uttn] = CoherenceFilter(uOptions)
%COHERENCEFILTER函数用来进行2D灰度图像的一致性扩散增强,该方法可以在保护边缘的同时降低图像噪声,并平滑图像由于噪声导致的边缘断裂
% Iout = CoherenceFilter(Iin Options)
%输入:
% Iin : 2D灰度图像
% Options : 滤波的各个参数
%输出:
% Iout : 处理后的图像
% Options
% Options.T : 总的扩散时间
% Options.dt : 扩散时间步长 五种扩散方案默认值为0.2
% Options.sigma : 高斯滤波的Sigma值,默认为1
% Options.rho : 计算结构张量时高斯平滑的Sigma值,默认为1
% Options.Scheme : 用数值表示各扩散方案
% ‘S‘标准离散化
% ‘N‘非负离散化
% ‘I‘隐式离散化
% ‘R‘旋转不变方案,标准离散化(隐式)5x5内核模板(默认)
% ‘O‘优化的求导内核
% Weickert方程中决定扩散幅度的常量
% Options.C : 默认值为 1e-10
% Options.m : 默认值为 1
% Options.alpha : 默认值为 0.001
%算法分析:
% 1对图像进行高斯预处理;
% 2计算结构张量、特征值、特征向量;
% (图像边缘给出特征值 特征向量指向最大特征值的方向,用来描述边缘方向)
% 3 计算扩散张量;
% 4 用一个有限差分方案来进行扩散;
% 5 回到步骤1,直到达到规定的扩散时间.
%
% 注释
% 标准和非负的扩散仅允许小的扩散时间步长,不然离散会变得不稳定;隐式、旋转不变和优化扩散方案允许大的扩散时间步长。
% 举例2D
% I = im2double(imread(‘LUNG2‘));
% I = rgb2gray(I);
% JS = CoherenceFilter(Istruct(‘T‘1‘rho‘1‘Scheme‘‘S‘));
% JN = CoherenceFilter(Istruct(‘T‘1‘rho‘1‘Scheme‘‘N‘));
% JI = CoherenceFilter(Istruct(‘T‘1‘rho‘1‘Scheme‘‘I‘));
% JR = CoherenceFilter(Istruct(‘T‘1‘rho‘1‘Scheme‘‘R‘));
% JO = CoherenceFilter(Istruct(‘T‘1‘rho‘1‘Scheme‘‘O‘));
% figure
% subplot(231) imshow(I) title(‘原始图像‘);
% subplot(232) imshow(JS) title(‘标准方案‘);
% subplot(233) imshow(JN) title(‘非负方案‘);
% subplot(234) imshow(JI) title(‘隐式方案‘);
% subplot(235) imshow(JR) title(‘旋转不变方案‘);
% subplot(236) imshow(JO) title(‘优化方案‘);
%
%增加所有所需函数的路径
try %用到try catch 函数:如果执行try语段出错,转而执行catch语段
functionname=‘CoherenceFilter.m‘;
functiondir=which(functionname);
functiondir=functiondir(1:end-length(functionname));
addpath([functiondir ‘/functions2D‘])%将functions2D文件夹添加到matlab搜索路径
addpath([functiondir ‘/functions‘])%将functions文件夹添加到matlab搜索路径
catch me
disp(me.message);
end
%设置默认参数
defaultoptions=struct(‘T‘2‘dt‘[]‘sigma‘ 1 ‘rho‘ 1‘Scheme‘‘S‘ ‘C‘ 1e-10 ‘m‘1‘alpha‘0.001);
if(~exist(‘Options‘‘var‘))%如果不存在输入参数,则使用默认参数
Options=defaultoptions;
else %否则的话,使用用户输入的参数
tags = fieldnames(defaultoptions);%fieldnames:将defaultoptions结构体中的变量名赋值给tags
for i=1:length(tags)
if(~isfield(Optionstags{i})) Options.(tags{i})=defaultoptions.(tags{i}); end %isfield:判断输入是否是结构体数组的成员
end
if(length(tags)~=length(fieldnames(Options)))
warning(‘CoherenceFilter:unknownoption‘‘unknown options found‘);
end
end
if(isempty(Options.dt))%如果用户没有输入dt值,则取以下默认值
switch lower(Options.Scheme)
case ‘s‘ Options.dt=0.2;
case ‘n‘ Options.dt=0.2;
case ‘i‘ Options.dt=0.2;
case ‘r‘ Options.dt=0.2;
case ‘o‘ Options.dt=0.2;
otherwise
error(‘CoherenceFilter:unknownoption‘‘unknown scheme‘);
end
end
%%%%%%%%各向异性扩散的主循环程序%%%%
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 429 2013-05-09 16:45 二维扩散滤波用于图像增强\functions2D\ConstructDiffusionTensor2D.m
文件 591 2013-05-23 11:04 二维扩散滤波用于图像增强\functions2D\diffusion_scheme_2D_rotation_invariant.m
文件 1766 2013-05-23 11:04 二维扩散滤波用于图像增强\functions2D\diffusion_scheme_2D_implicit.m
文件 2112 2013-05-23 11:04 二维扩散滤波用于图像增强\functions2D\diffusion_scheme_2D_optimized.m
文件 1221 2013-05-23 11:05 二维扩散滤波用于图像增强\functions2D\diffusion_scheme_2D_standard.m
文件 1016 2013-05-23 11:05 二维扩散滤波用于图像增强\functions2D\EigenVectors2D.m
文件 1636 2013-05-10 14:06 二维扩散滤波用于图像增强\functions2D\diffusion_scheme_2D_non_negativity.m
文件 580 2013-05-10 16:51 二维扩散滤波用于图像增强\functions2D\StructureTensor2D.m
文件 2257 2013-05-23 10:59 二维扩散滤波用于图像增强\functions\imgaussian.m
文件 912 2013-05-23 11:02 二维扩散滤波用于图像增强\functions\derivatives.m
文件 1141 2013-05-23 14:40 二维扩散滤波用于图像增强\test_shiyan1.m
文件 5247 2013-05-23 11:03 二维扩散滤波用于图像增强\CoherenceFilter.m
文件 1511 2013-05-23 14:48 二维扩散滤波用于图像增强\test_shiyan2.m
文件 1256 2013-05-23 11:03 二维扩散滤波用于图像增强\compare.m
文件 177742 2013-04-17 09:29 二维扩散滤波用于图像增强\LUNG2.png
目录 0 2013-05-29 16:11 二维扩散滤波用于图像增强\functions2D
目录 0 2013-05-29 16:11 二维扩散滤波用于图像增强\functions
目录 0 2013-05-29 16:11 二维扩散滤波用于图像增强
----------- --------- ---------- ----- ----
199417 18
- 上一篇:支持向量机预测风速
- 下一篇:机器人编队控制和避障
相关资源
- 暗通道先验+引导滤波MATLAB代码
-
扩展卡尔曼滤波SOC算法Simuli
nk模型 - 基于MATLAB_GUI_的滤波器设计软件
- 快速非局部均值滤波算法
- matlab设计的五种fir数字滤波器
- 交互多模型的滤波器
- 粒子滤波的基本原理和其在非线性系
- 数学形态滤波
- 图像恢复:快速非局部均值滤波
- Trigger Algorithm 算法
- 实时提升小波,滤波
- 冲击滤波模型
- 语音分析程序
- Gaussian Particle Filter 高斯粒子滤波算法
- 阿尔法贝塔滤波器实例
- 低通滤波器
- 容积卡尔曼滤波
- 红外弱小目标的检测与跟踪
- GPS精密单点定位
- 完美产生数字地面电视(DTMB)的信源
- 有源滤波器在双馈式风力发电机中使
- 单相lcl滤波逆变器并网电网电流及电
- 基于低通滤波原理对风电削峰填谷
- 几个SAR图像预处理方法
- 多相滤波(polyphase filter)的基本原理
- 最新最完整的Matlab粒子滤波工具箱(
- 最小二乘算法(LMS)处理滤波并预测
- 数字图像滤波程序
- 用α-β滤波器结合卡尔曼滤波器对相位
- 激光雷达点云滤波的topscan算法实现
评论
共有 条评论