# Image Processing: Graphical Input

Here we have a sample data array ** A** which looks like dark sky with some bright stars:

imagesc(A)

This is the typical situation you may face: you have a very large data array with only a tiny part that are meaningful, and
it takes a long time for you to find out where are those pixels which contain information you want. MATLAB provides a nice
function called ** ginput**, which allows you to obtain information from pixels you are interested in.

After the image is showed, type

ginput

and then you can select points from the figure using the mouse for cursor positioning (just click your mouse button when the
cursor is on the point you want). After you select all points you want, press the **Return** key on your keyboard.

This returns the x- and y-coordinates of those points you have selected.

ans = 68.8180 63.8041 25.0392 80.1784 17.2051 44.7982 82.1820 35.4415

You can also specify the number of points you want to select:

ginput(2)

So that the function is automatically terminated after three points are selected.

ans = 68.8180 63.8041 25.0392 80.1784

If you want to save the coordinates for future use, you can save them in the vectors ** x** and

**:**

`y`[x, y] = ginput

x = 68.8180 25.0392 17.2051 82.1820 y = 63.8041 80.1784 44.7982 35.4415

Again, use the **Reture** key to terminate the input, or use

[x, y] = ginput(2)

to specify the number of points you want to select. The coordinate of the first point you select is ** (x(1), y(1))**, the second is

**, and so on.**

`(x(2), y(2))`x = 68.8180 25.0392 y = 63.8041 80.1784

For example, now you can calculate the distance between the first two points you select (in the unit of pixel length):

D_Horizontal = x(2) - x(1)

D_Horizontal = -43.7788

D_Vertical = y(2) - y(1)

D_Vertical = 16.3743

D = sqrt(D_Horizontal^2 + D_Vertical^2)

D = 46.7408

Note that, the first coordinate (**x**-) actually corresponds to the *second* dimension (column number) of the data array, and the second coordinate (**y**-) corresponds to the *first* dimension (row number). As a result, if you find the coordinate of a point is ** (a, b)**, then the location of this pixel in the data array is actually

**(round down to integer).**

`(b, a)`