Determining new x,y location of an object

If I know the original x,y location of an object, then move it randomly to a different point on an image, how can I determine it's new x,y location?

2 件のコメント

John Petersen
John Petersen 2012 年 11 月 29 日
If you moved it, just remember where you moved it to.
Jan
Jan 2012 年 11 月 30 日
@Sara: Most likely the problem gets clear, when you post the relevant part of the code.
Of course the information where the parts of the scrambled image are located afterwards are available in your program already. But we cannot guess where or in which format.

サインインしてコメントする。

回答 (3 件)

Image Analyst
Image Analyst 2012 年 11 月 29 日

0 投票

1 件のコメント

Image Analyst
Image Analyst 2012 年 11 月 29 日
If you move the object by deltaX and deltaY, then obviously the new location is
newX = startingX + deltaX;
newY = startingY + deltaY;
Needless to say, it's new position is (newX, newY). But this is way way too obvious (you wouldn't have even asked about something so trivial and simple) so we must have misunderstood your question. Can you try to describe it in more detail this time?

サインインしてコメントする。

Sara
Sara 2012 年 11 月 29 日

0 投票

The object is moved via code. It is moved to a random location on the image.

5 件のコメント

Image Analyst
Image Analyst 2012 年 11 月 29 日
Then we're back to John's comment.
Sara
Sara 2012 年 11 月 30 日
This is what I'm doing:
I have an image that has a pedestrian in it. I'm cutting the image into a 2x4 windows, shuffling them to output a scrambled image, and now the pedestrian is located somewhere else. I do not tell the code where each pane should move to, so the pedestrian is in a different spot every time I run the code.
Image Analyst
Image Analyst 2012 年 11 月 30 日
Let's take it one step at a time. You said "I know the original x,y location of an object" so let's assume it's at (50,50). Now let's say that your image is 1024 pixels wide by 960 pixels high and you chop it up into 2 tiles high by 4 tiles wide so that each tile is 480 pixels high and 256 pixels wide. Now let's say your scrambled the image (in code) so you know that you sent the upper left tile where your object was to the second rows, third panel over. So now the (50,50) point will be sent to the (50+480) row and the (50+256*2) column, or in other words, it's now at (row, column) = (520, 562). Make sense?
Sara
Sara 2012 年 11 月 30 日
Here is my code. I am not sending one tile to the same new location each time. What you say makes sense, I'm just not sure how that works with this:
A=mat2cell(image,[384,384],[256,256,256,256],[3]);
B=randperm(8);
C=reshape(B,2,4);
D=mat2cell(C,[1,1],[1,1,1,1]);
[row,col]=find(C==1)
D(row,col)=A(1,1)
[row,col]=find(C==2)
D(row,col)=A(1,2)
[row,col]=find(C==3)
D(row,col)=A(1,3)
[row,col]=find(C==4)
D(row,col)=A(1,4)
[row,col]=find(C==5)
D(row,col)=A(2,1)
[row,col]=find(C==6)
D(row,col)=A(2,2)
[row,col]=find(C==7)
D(row,col)=A(2,3)
[row,col]=find(C==8)
D(row,col)=A(2,4)
scram=cell2mat(D); fig3=figure('Visible','on'); imshow(scram)
Sara
Sara 2012 年 11 月 30 日
編集済み: Sara 2012 年 11 月 30 日
the intial location of the pedestrian is located in an excel file that i upload, and I am running this for about 500 images.

サインインしてコメントする。

John Petersen
John Petersen 2012 年 11 月 30 日

0 投票

You know which cell in A that the pedestrian is located, right? Say it's the A(r,c) cell. Then,
ped = (c-1)*2 + r; % location of the pedestrian in A strung out,
% i.e. A(ped) = A(r,c)
B=randperm(8);
C=reshape(B,2,4);
D=mat2cell(C,[1,1],[1,1,1,1]);
for i=1:8
[row,col]=find(C==i) % move tile i to row,col
D(row,col)=A(i); % Build new image
if (C(i)==ped)
Row_newped = row; %FOUND PEDESTRIAN in New image
Col_newped = col;
end
end
There's probably a more efficient code that doesn't require a loop, but this should be clear to you so you understand the idea.

1 件のコメント

Sara
Sara 2012 年 12 月 3 日
I apologize to everyone for being unclear. I am teaching myself Matlab and I appreciate everyone's help with this.
@John - Thank you for your post, I understand now what I need to do.

サインインしてコメントする。

質問済み:

2012 年 11 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by