📄 splitmerge.m
字号:
function g=splitmerge(f,mindim,fun)
%f是输入图像
%g是输出图像
%参数mindim定义分解中所允许的最小块,其必须是2的正整数次幂
q=2^nextpow2(max(size(f)));
[M,N]=size(f);
f=padarray(f,[q-M,q-N],'post');
s=qtdecomp(f,@split_test,mindim,fun);%split_test用来确定一个区域是否被分离
lmax=full(max(s(:)));
g=zeros(size(f));
marker=zeros(size(f));
for k=1:lmax
[vals,r,c]=qtgetblk(f,s,k);
if ~isempty(vals)
for i=1:length(r)
xlow=r(i);ylow=c(i);
xhigh=xlow+k-1;yhigh=ylow+k-1;
region=f(xlow:xhigh,ylow:yhigh);
flag=feval(fun,region);
if flag
g(xlow:xhigh,ylow:yhigh)=1;
marker(xlow,ylow)=1;
end
end
end
end
g=bwlabel(imreconstruct(marker,g));
g=g(1:M,1:N);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -