How label a line plotted automatically on an image?

Below is code Ive used to process a batch of images. The functions label white and dark regions on the image followed by plotting the necessary lines over the original data, identifying the segments. I'm looking to automatically label the plotted lines as 'Segment A' 'Segment B' etc, could anyone help me in doing so?
InputFolder = fullfile(pwd, 'FlatImages');
filePattern = fullfile(InputFolder, '*.bmp');
% Lists all BMP files in wd folder
BmpFiles = dir(filePattern);
OutputFolder = fullfile(pwd, 'SegmentedImages');
for i=1:length(BmpFiles)
fname = BmpFiles(i).name;
FullFileNameInput=fullfile(InputFolder, fname);
%Reads in each BMP file on by one
A=imread(FullFileNameInput);
[s f]=get_white_edges2(A);
[s1 f1]=get_Black_edges3(A);
Fname_out=['WE_' fname];
%Plots white and black edge segments on Flat Image
figure; imshow(A); hold on; plot([s f]); hold on; plot([s1 f1]);
FullFileNameOutput=fullfile(OutputFolder, Fname_out);
% -dbmp option with the PRINT command to save the
% figure as a BMP file. gcf returns current fig. handle.
print(gcf, '-dbmp', FullFileNameOutput);
end

Answers (1)

Use the text() function.

8 Comments

the text function only works from manually positioning the labelled text does it not? Im looking to set a label to the segment automatically once plotted.
No. You don't have to manually place it. You can pass in the x,y location. I suggest you come up with some algorithm to get the x,y location, such as being at the midpoint of the line points.
ahh right ok! thanks! is there a matlab function that calculates mid points of plotted lines?
How about mean():
xMidpoint = mean(xArray);
yMidPoint = mean(yArray);
Or look at the range and pick the middle one
xMidpoint = 0.5 * (min(xArray) + max(xArray));
yMidPoint = 0.5 * (min(yArray) + max(yArray));
If I'm looking to get a midpoint of a line which is represented by a variable, say it's called 'sfit' (it's a line of best fit which moves across the image (1024 pixels wide and 1 pixel tall). this line can vary in position depending on where the white regions begin and end in the image, how will its x and y position automatically register in order to create its midpoint? for example in order for the batch processing to operate smoothly I wouldn't be able to plot each line and go and find each individuals lines position on each individual image manually in order to enter their x and y location, the system wouldn't be feasible?
Post an image so I can figure out what's going on. I don't see why you can't just figure out where the endpoints of the lines are.
I'm initially looking to find the midpoint of the 2 lines of best fit, as I mentioned earlier the gap can vary between the beginning and end (size of area) of the white region or the row in which the white regions begin also varies. once mid points are calculated I was looking to label the 2 segments as Segment A and Segment B using the 'text' function.

Sign in to comment.

Asked:

on 22 Feb 2015

Commented:

on 23 Feb 2015

Community Treasure Hunt

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

Start Hunting!