Use pixel informations to create a grid on images

7 views (last 30 days)
Hi,
I have an picture of graph paper I have to use as a reference. To be clear I have to use the grid as calibration for an acquisition sistem wich I used also to acquire the picture.
I want to get the grid of this image and superimpose it on other images that are acquired during a measurement session. Is it possible? how to do it? I was thinking to count the pixel between two lines and get the coordinates of the central pixel and make a plot on the other images using this information
Thanks

Accepted Answer

Image Analyst
Image Analyst on 23 Jan 2012
Sounds reasonable. If the image is good, threshold it and find the crossings
columns = find(grayImage(rowToExamine, :) < 100);
There are more robust ways to do it where you look at more than just one line.
  2 Comments
Francesco
Francesco on 24 Jan 2012
could you give me some link with examples?
where to find the function 'rowToExamine'?
I have undefined function error.
-Sorry, but I am a really newbie
Image Analyst
Image Analyst on 24 Jan 2012
% Make all white image.
grayImage = 255 * ones(256, 'uint8');
% Put dark grid into it
grayImage(8:16:256, :) = 0; % Make dark rows
grayImage(:, 8:16:256) = 0; % Make dark columns
% Display the original gray scale image.
imshow(grayImage, []);
axis on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]); % Maximize figure.
set(gcf,'name','Demo by ImageAnalyst','numbertitle','off')
% Pick some line to examine
rowToExamine = 50;
% Find columns in line 50 that are dark.
columns = find(grayImage(rowToExamine, :) < 100)
msgbox('Demo done. Look in command window for results.');

Sign in to comment.

More Answers (2)

Francesco
Francesco on 24 Jan 2012
I managed to get the central pixel coordinates [X0,Y0] (using ginput) and the distance between two points (using imdistline). I have converted the image in a gray scale using im2double and I want to change pixel value in the first quadrant. (image is almost black) I mean I would like to set as white each pixel of every rows between 1 and Y0 with step equal to the distance calculated above and do the same for the column between X0 and 821. How to do that? (the image size is 577X821X3 double and MatLab says that 821 index exceeds matrix dimensions)
  2 Comments
Image Analyst
Image Analyst on 24 Jan 2012
You're probably mixing up row and column with x and y. Be aware that x = column, and y = row. You need to index image arrays by row and column, not x and y so it's
imageArray(row, column, colorChannel)
which is
imageArray(y, x, colorChannel)
NOT
imageArray(x, y, colorChannel)
Francesco
Francesco on 24 Jan 2012
Yes, you where right, I was mixing row and column.
Anyway using your prevoius example I did it. It is a bit of a crap to see but I have the grid I need.
thank you.

Sign in to comment.


Francesco
Francesco on 25 Jan 2012
I managed to improve the graphic aspect, now I was wondering if it is possible to make the grid with rounded shape and a fixed radius of 200 pixels...
  1 Comment
Image Analyst
Image Analyst on 25 Jan 2012
Please provide a snapshot of the rounded grid with a radius. Post it to tinypic.com. Do you mean like some kind of polar coordinates grid?

Sign in to comment.

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!