Index in position 2 exceeds array bounds. Index must not exceed 1024.

조회 수: 1 (최근 30일)
Sumanth Kokkula
Sumanth Kokkula 2023년 1월 18일
댓글: Image Analyst 2023년 1월 19일
I am student writing my thesis and new to matlab ,i have posted the code below in which the particle image velocimetry was attempted to be done.
clear all;
clc;
close all;
imagea = imread('image1.tif');
imageb = imread('image2.tif');
[xmax, ymax]=size(imagea);
wsize = [64, 64];
w_width = wsize(1);
w_height = wsize(2);
xmin = w_width/2;
ymin = w_height/2;
xgrid = 200:w_width/2:864;
ygrid = 200:w_height/2:1696;
w_xcount = length(xgrid);
w_ycount = length(ygrid);
x_disp_max = w_width/2;
y_disp_max = w_height/2;
test_ima(w_width, w_height) = 0;
test_imb(w_width+2*x_disp_max, w_height+2*y_disp_max) =0;
dpx(w_xcount, w_ycount) = 0;
dpy(w_xcount, w_ycount) = 0;
xpeak1 = 0;
ypeak1 = 0;
for i=1:(w_xcount)
for j=1:(w_ycount)
max_correlation = 0;
test_xmin = xgrid(i)-w_width/2;
test_xmax = xgrid(i)+w_width/2;
test_ymin = ygrid(j)-w_height/2;
test_ymax = ygrid(j)+w_height/2;
x_disp = 0;
y_disp = 0;
test_ima = imagea(test_xmin:test_xmax, test_ymin:test_ymax);
test_imb = imageb((test_xmin-x_disp_max):(test_xmax+x_disp_max), (test_ymin-y_disp_max):(test_ymax+y_disp_max));
correlation = normxcorr2(test_ima, test_imb);
[xpeak, ypeak] = find(correlation==max(correlation(:)));
xpeak1 = test_xmin + xpeak - wsize(1)/2 - x_disp_max;
ypeak1 = test_ymin + ypeak - wsize(2)/2 - y_disp_max;
dpx(i,j) = xpeak1 - xgrid(i);
dpy(i,j) = ypeak1 - ygrid(j);
end
end
quiver(dpy, -dpx)
  댓글 수: 8
Walter Roberson
Walter Roberson 2023년 1월 18일
The images are indexed pseudocolor not grayscale. But that does not affect the size, and it looks like the colormap is in increments of 1/256 so it should turn out to make no color difference
Image Analyst
Image Analyst 2023년 1월 19일
"i have taken a part of image1 and using this function i wanted to find the location of it in the image2" <= yes but in your comment below to me you said that is the reason why you did not use my code. Why the discrepancy? And like I said there, you did not have to use a part of the main image as a template -- you could use whatever image you wanted. You could synthesize it or read it in from a file or whatever you want.

댓글을 달려면 로그인하십시오.

답변 (2개)

Image Analyst
Image Analyst 2023년 1월 18일
I do exactly that in my attached demo.
  댓글 수: 2
Sumanth Kokkula
Sumanth Kokkula 2023년 1월 18일
편집: Sumanth Kokkula 2023년 1월 18일
thanks for the reply but,i dont want to extract a particular object from the picture i want to use the normxcorr to locate the displaced part of my first image in the second
Image Analyst
Image Analyst 2023년 1월 18일
Yes, I know. I thought you'd realize that the template image could be anything. You could read it from a file of course. I didn't want to attach two image files with the demo and I wanted to just use built-in image for the demo, so I took the template image from the main image. But of course you can use whatever template image you want -- it doesn't have to come from the main image. I'm attaching a newer demo where I explicitly spell that out.

댓글을 달려면 로그인하십시오.


Sumanth Kokkula
Sumanth Kokkula 2023년 1월 18일
i have the answer for the above mentioned error.
i have taken the wrong values in the room of intrest changing the values given the solution.
xgrid = 200:w_width/2:864;
ygrid = 200:w_height/2:1696;
the bold ones are the mistaken ones. by changing them i have found the solution.
thanks to all for your suggestions.

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by