This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Convert axes coordinates to pixel coordinates


pixelCoord = axes2pix(n,extent,axesCoord)



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');

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);

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); 

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

Instrinsic 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.

Introduced before R2006a