How to convert an image to the cartesian X,Y coordinates?
32 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
George
el 19 de Jun. de 2013
Editada: John Kelly
el 27 de Mayo de 2014
I have a grayscale image and i want to convert to the cartesian X,Y coordinates
2 comentarios
Respuesta aceptada
Matt J
el 19 de Jun. de 2013
Editada: Matt J
el 19 de Jun. de 2013
[x,y]=meshgrid(1:size(A,1), 1:size(A,2));
result=[x(:),y(:),A(:)];
Más respuestas (2)
Alex Taylor
el 19 de Jun. de 2013
Editada: John Kelly
el 27 de Mayo de 2014
If what you are trying to do is reference a 2-D image to a cartesian coordinate system, you should look at the class imref2d that ships with the Image Processing Toolbox as of R2013a
For example, if you want to reference the image A that Matt mentioned to the default (Intrinsic) coordinate system used by MATLAB in which the center of the first pixel is located at position (1,1) and each pixel has an extent of one unit, you could use the following syntax of imref2d:
A=diag(randi(255,1,3));
imref2d(size(A))
ans =
imref2d with properties:
XWorldLimits: [0.5000 3.5000]
YWorldLimits: [0.5000 3.5000]
ImageSize: [3 3]
PixelExtentInWorldX: 1
PixelExtentInWorldY: 1
ImageExtentInWorldX: 3
ImageExtentInWorldY: 3
XIntrinsicLimits: [0.5000 3.5000]
YIntrinsicLimits: [0.5000 3.5000]
imref2d also provides other construction syntaxes and writable properties if you want to reference your image to some other cartesian system.
imref2d provides various methods for converting two and from image subscripts and locations in a continuous cartesian system:
>> methods(imref2d)
Methods for class imref2d:
contains intrinsicToWorld worldToIntrinsic
imref2d sizesMatch worldToSubscript
0 comentarios
Jeff E
el 19 de Jun. de 2013
Editada: Jeff E
el 19 de Jun. de 2013
Unimaginative solution below, possibly with extra computational overhead than a direct solution using reshape and some simple calculations for the X,Y cooridnates.
A=diag(randi(255,1,3))
A =
10 0 0
0 226 0
0 0 233
>> B = true(size(A))
B =
1 1 1
1 1 1
1 1 1
stats = regionprops(B, A, 'PixelValues' , 'PixelList');
PixelListValues = cat(2, [stats.PixelList] , [stats.PixelValues])
PixelListValues =
1 1 10
1 2 0
1 3 0
2 1 0
2 2 226
2 3 0
3 1 0
3 2 0
3 3 233
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!