how to clear this error???

조회 수: 2 (최근 30일)
Dhines
Dhines 2015년 4월 10일
Attempted to access offset(1,:); index out of bounds because
size(offset)=[0,2].
Error in PydXcorr (line 40)
offset1 = [offset1;offset(1,:)];
Error in test (line 120)
[ybegin,xbegin,yend,xend] = PydXcorr(img22,temp11,2);
here my code.... function [ybegin,xbegin,yend,xend] = PydXcorr(img,tmp,level,thresh)
warning off;
if nargin == 3 thresh = 0.7; end
[Irows,Icolumns,Ilayers] = size(img); [Trows,Tcolumns,Tlayers] = size(tmp); % if is RGB, transform to GRAYSCALE if (Ilayers==3) img = rgb2gray(img); end if (Tlayers==3) tmp = rgb2gray(tmp); end
% time on hbar = waitbar(0,'Image matching'); tic;
% decomposition imgpyd = Decomposition(img,level); tmppyd = Decomposition(tmp,level);
% match in low resolution image
% calculate cross-correlation c = normxcorr2(tmppyd{level+1},imgpyd{level+1});
% get peak value and position [ymax,xmax] = find(abs(c)>thresh); offset = [ymax-size(tmppyd{level+1},1),... xmax-size(tmppyd{level+1},2)];
% delete repeated match point offset1 = []; offset1 = [offset1;offset(1,:)]; for n1 = 2:size(offset,1) m = 0; for n2 = 1:size(offset1,1) if (abs(offset(n1,1)-offset1(n2,1))>3 && ... abs(offset(n1,2)-offset1(n2,2))>3 ) m = m+1; end end if m == size(offset1,1) offset1 = [offset1;offset(n1,:)]; end end yoffset = offset1(:,1); xoffset = offset1(:,2);
% match in high resolution images
ii = level; while ii i = 1; n = length(yoffset); while i <= n % get the ROI yobj1 = 2*yoffset(i)-10; yobj2 = 2*yoffset(i)+size(tmppyd{ii},1)+10; xobj1 = 2*xoffset(i)-10; xobj2 = 2*xoffset(i)+size(tmppyd{ii},2)+10; if yobj1<=0 yobj1 = 1; end if xobj1<=0 xobj1 = 1; end if yobj2>size(imgpyd{ii},1) yobj2 = size(imgpyd{ii},1); end if xobj2>size(imgpyd{ii},2) xobj2 = size(imgpyd{ii},2); end objarea = imgpyd{ii}(yobj1:yobj2,xobj1:xobj2);
% match in ROI
c = normxcorr2(tmppyd{ii},objarea);
[max_c,imax] = max(abs(c(:)));
if max_c > thresh
[ypeak,xpeak] = ind2sub(size(c),imax(1));
corr_offset = [ypeak-size(tmppyd{ii},1),...
xpeak-size(tmppyd{ii},2)];
offset = corr_offset;
yoffset(i) = offset(1)+2*yoffset(i)-10-1;
xoffset(i) = offset(2)+2*xoffset(i)-10-1;
i = i+1;
else
yoffset(i) = [];
xoffset(i) = [];
n = n-1;
end
end
ii = ii-1;
end
% get the offset in the source image ybegin = yoffset; yend = yoffset+size(tmppyd{1},1)-1; xbegin = xoffset; xend = xoffset+size(tmppyd{1},2)-1;
% time off toc; close(hbar);

답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by