matlab中一段程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 11:59:25
function [I,Ihist] = inpaint_iterate_ms(I,M,fn,args,tolfn,tolargs)
% function [I,Ihist] = inpaint_iterate_ms(I,M,fn,args,tolfn,tolargs)
%
% recursively calls inpaint_iterate at multiple scales
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% input / output processing
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin < 6, tolargs = []; end
Isc = min(size(I));
sc = 2 / Isc;
ndx = find(M);
while sc < 1
Itmp = imresize(I,sc);
Mtmp = logical(imresize(M,sc));
Itmp = inpaint_iterate(Itmp,Mtmp,fn,args,tolfn,tolargs);
Itmp = imresize(Itmp,size(I));
I(ndx) = Itmp(ndx);
sc = sc * 2;
end
I = inpaint_iterate(I,M,fn,args,tolfn,tolargs);
return
把这段程序清晰解释一下 谢谢 以前没学过matlab 现在发现书上的知识也不是很全 所以不怎么理解
把while sc < 1 后面的程序 逐句解释一下

大哥 你给的这段程序 只是某一个大程序中的 某一个小短呀 还有好多辅助的function 你要pu上来其他的函数呀 你这段函数应该是 某个对比两个图形的差异的大函数中间的一段 因为很明显这里涉及到两个图形矩阵的大小对比 然后用到了重建或者重塑 第一副图像和第二副图像对比 丢失的数据 我是真不忍心这100分呀 凑合着给你解释吧
1.nargin是函数里面 argument的个数 这里写的(I,M,fn,args,tolfn,tolargs) 这里面的个数。
2. Isc = min(size(I)); size(I) 会得到2 个 或者3个数字 代表图像的大小和维数 min以后得到的是 这3个数字里面最小的 如果你放入的是RGB图像 那么这个Isc=3。
3. sc = 2 / Isc; 这个不解释了
4. ndx = find(M); find 是一个函数 显示出M中不为零的元素的地址
5. while sc < 1
6 Itmp = imresize(I,sc); 改变图像I的大小 新的大小 单位 是sc
7. Mtmp = logical(imresize(M,sc)); 将数值转换成逻辑数据 提示一下所有图片都是 灰度值的数据 在0-255直接了 这里
8. Itmp = inpaint_iterate(Itmp,Mtmp,fn,args,tolfn,tolargs);调用inpaint_iterate这个函数 由于你这里没有pu上来 我也不太明白
9. Itmp = imresize(Itmp,size(I));把Itmp这个图形的大小成I图像的大小
10.I(ndx) = Itmp(ndx); 不用解释了吧这个
11.sc = sc * 2;
12. end
13. I = inpaint_iterate(I,M,fn,args,tolfn,tolargs);再次召唤函数inpaint_iterate我还是不知道这个函数的作用 估计是叠加重塑
return

加油吧 同学

调整图片大小的啊

没什么好说的,matlab的