function [ I ] = pa_diffusion( varargin )
% #1. pa_diffusion(I,dt,kappa) - uses article CG
% #2. pa_diffusion(I,dt,kappa,tol) - uses bult in CG with tolerance
if (nargin==3)
I = varargin{1};
dt = varargin{2};
kappa = varargin{3};
elseif (nargin==4)
I = varargin{1};
dt = varargin{2};
kappa = varargin{3};
tol = varargin{4};
else
error('pa_diffusion accepts up to 4 input arguments!')
end
[n,m] = size(I);
x = reshape(I',1,n*m);
if(nargin==4)
x = x';
end
[A,b,kappa] = getAb(I,dt,kappa);
prevIm = x+2;
while(max(abs(x-prevIm))>1)
prevIm = x;
if (nargin==4)
% #1. https://www.mathworks.com/help/matlab/ref/pcg.html
matrixMult = @(v) multAx(A,v,n,m)';
x = pcg(matrixMult,b',tol,[],[],[],x);
else
% #2. article proposal
r = b - multAx(A,x,n,m);
z = r;
prevX = 10^10;
while (max(abs(x-prevX))>1 && sum(r~=0))
prevX = x;
az = multAx(A,z,n,m);
dotr = dot(r,r);
alpha = dotr/dot(az,z);
x = x + alpha*z;
r = r -alpha*az;
betta = dot(r,r)/dotr;
z = r + betta*z;
end
end
I = reshape(x,m,n)';
[A,b,kappa] = getAb(I,dt,kappa);
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
各向异性扩散修正滤波器的matlab仿真.rar (7个子文件)
各向异性扩散修正滤波器的matlab仿真
smallpart.png 62KB
matlab
func
pa_diffusion.m 1KB
multAx.m 828B
getAb.m 1KB
Runme.m 202B
112.jpg 32KB
操作录像0034.avi 4.03MB
共 7 条
- 1
资源评论
fpga和matlab
- 粉丝: 16w+
- 资源: 2580
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功