Hi Mathwork community,
Using below code, i can get boundary as blue color and gaps filled as yellow color but i want to fill the interior as green color.
Thanks in advance for all help.
s = load('Result_matrix.mat');Aorg = s.Aorg;gapmax = 10; [m,n] = size(Aorg);A = double(Aorg>0); P=[1 2 3; 8 0 4; 7 6 5];Apad = zeros(m+2,n+2);maxattempt = 10;for niter = 1:maxattempt Apad(2:end-1,2:end-1) = A>0; B = zeros(m,n,8); for k=1:8 [i,j] = find(P==k); B(:,:,k) = Apad(i-2+(2:end-1),j-2+(2:end-1)); end As = A>0 & sum(diff(B(:,:,[1:8 1]),1,3)==1,3)<=1; [y,x] = find(As); if isempty(x) break end p = length(x); xy = [x,y]; xy1 = reshape(xy,1,[],2); xy2 = reshape(xy,[],1,2); d = sum(abs(xy1-xy2),3); d(d==0) = NaN; i = (1:size(d,1))'; [dmin,j] = min(d,[],2); keep = dmin <= gapmax; i = i(keep); j = j(keep); for k=1:length(i) xyi = xy(i(k),:); xyj = xy(j(k),:); dxy = xyi-xyj; if abs(dxy(1)) > abs(dxy(2)) xr = linspace(xyi(1),xyj(1),abs(dxy(1))+1); yr = round(interp1([xyi(1),xyj(1)],[xyi(2),xyj(2)],xr)); else yr = linspace(xyi(2),xyj(2),abs(dxy(2))+1); xr = round(interp1([xyi(2),xyj(2)],[xyi(1),xyj(1)],yr)); end A(sub2ind(size(A),yr(2:end-1),xr(2:end-1))) = 3; endend
Best Answer