Main Content


Convert axes coordinates to pixel coordinates



pixelCoord = axes2pix(n,extent,axesCoord) converts an axes coordinate into an intrinsic ("pixel") coordinate.


The imref2d object has several methods that facilitate conversion between intrinsic coordinates, world coordinates and array indices.


collapse all

Display image.

h = imshow('pout.tif');

Figure contains an axes object. The axes object contains an object of type image.

Get the size of the image.

[nrows,ncols] = size(get(h,'CData'));

Get the image XData and YData.

xdata = get(h,'XData')
xdata = 1×2

     1   240

ydata = get(h,'YData')
ydata = 1×2

     1   291

Convert an axes coordinate into an intrinsic coordinate for the x and y dimensions.

px = axes2pix(ncols,xdata,30)
px = 30
py = axes2pix(nrows,ydata,30)
py = 30

Read an image and display it. Get the size of the image.

I = imread('pout.tif');
[nrows,ncols] = size(I)
nrows = 291
ncols = 240

Create a spatial referencing object for this image, with default property settings. By default, the upper-left corner of the image has intrinsic coordinate (1,1).

RI = imref2d(size(I));
h = imshow(I,RI);

Figure contains an axes object. The axes object contains an object of type image.

xData = get(h,'XData')
xData = 1×2

     1   240

yData = get(h,'YData')
yData = 1×2

     1   291

For illustrative purposes, specify an arbitrary image extent in the x- and y-directions. This example shifts the image up by 20 pixels and to the right by 400 pixels. The example also shifts the image to the right by 100 pixels and compresses the image horizontally by a factor of 2.

xWorldLimits = 0.5*xData + 400;
yWorldLimits = yData - 20;
RA = imref2d(size(I),xWorldLimits,yWorldLimits); 

Figure contains an axes object. The axes object contains an object of type image.

Select a pixel, such as a pixel near the nose of the child. This pixel occurs around the axes coordinate (x, y) = (450, 90) in the modified image.

Convert the axes coordinate to an intrinsic coordinate.

px = axes2pix(ncols,xWorldLimits,450)
px = 100
py = axes2pix(nrows,yWorldLimits,90)
py = 110

The intrinsic coordinate of the point is at (100, 110). This agrees with the location of the nose in the original image.

Input Arguments

collapse all

Number of image rows or columns, specified as a positive integer. n is the number of image columns for the x-coordinate, or the number of image rows for the y-coordinate.

Image world extent, specified as a 2-element numeric vector. extent is returned by get(image_handle,'XData') or get(image_handle,'YData').

Axes coordinate to convert to intrinsic coordinates, specified as a numeric vector.

Output Arguments

collapse all

Intrinsic coordinates, returned as a numeric vector.

Data Types: double


  • axes2pix performs minimal checking on the validity of the n, axesCoord, or extent arguments. For example, axes2pix can extrapolate from extent to return a negative coordinate. The function calling axes2pix bears responsibility for error checking.

Version History

Introduced before R2006a