Add a GUI to initially point to the rosette positions.

* src/manualRosetteDetect/annotation_gui.fig: New file represengint the gui
layout.
* src/manualRosetteDetect/annotation_gui.m: New file with GUI logic. It is
able to paint squares on top of images. This will serve as initial starting
points for the automatic algorithm.
Exit window Only, when pressing exit
Place more logic on func put_image_in_axis

* src/manualRosetteDetect/annotation_gui.m(put_image_in_axis): We have removed
all its arguments, except for hObject. This function now executes uigetfile
and puts the image in the axis. In this way the call is simpler and cleaner.
Remove a guidata call from button_press_on_line.

* src/manualRosetteDetect/annotation_gui.m(button_press_on_line): Remove
guidata call; it was causing warnings/errors. Since the delete is executed, we
wont have any problems with not updating handles.
Make user choose a file at initialization

* src/manualRosetteDetect/annotation_gui.m(annotation_gui_OpeningFcn): Execute
put_image_in_axis after all initialization variables are set. This will show
the file selector before any interaction begins.
Force the user to select a file.

* src/manualRosetteDetect/annotation_gui.m(put_image_in_axis): If the user
hits cancel a message will appear telling him to select a file.
Add button to start segmentation.

* src/manualRosetteDetect/annotation_gui.m(segment_Callback): New function
that will take care of the callback for the segment button.
* src/manualRosetteDetect/annotation_gui.fig: Added segment button that starts
the segmentation process.
Add square center to the UserData line property

* src/manualRosetteDetect/annotation_gui.m(figure1_WindowButtonDownFcn): We
add the coordinate where the user clicked to the UserData line property so we
can access when we are doing the segmentations.
New file

First version of the file containing logic that will create rosette masks in
the overall image.

* src/manualRosetteDetect/findSegmentedRosette.m(findSegmentedRosette): This
function will return a mask and an offset where the mask fits into the parent
image.
(getKMeansMask): New function that takes a subimage and analyzes it in the
Excess green space. The idea is to separate the green from the plants from
whatever else is in the subimage.
Adjust rosette return values so we can paint them

* src/manualRosetteDetect/annotation_gui.m(put_image_in_axis): Put image in
handles.img so we can reference and change it in other places.
(segment_Callback): call findSegmentedRosette for all the squares (line
objects) contained in handles.figure1. With the returned offset and mask,
change the image in the axis in order to reflect the detected area.
* src/manualRosetteDetect/findSegmentedRosette.m (findSegmentedRosette): Add
imgOffset as one of the returned arguments. This will contain the offset where
the mask is located within the original image.
* src/manualRosetteDetect/rosettedetect_gui.m: New file renamed from
annotation_gui.m
(rosettedetect_gui): New function, changed from annotation_gui.
(rosettedetect_gui_OpeningFcn): Likewise.
(rosettedetect_gui_OutputFcn): Likewise.
* src/manualRosetteDetect/rosettedetect_gui.fig: New file renamed from
annotation_gui.fig. There are some internal changes that are additional to the
name.
Document findSegmentedRosette function and subfunction.

* src/manualRosetteDetect/findSegmentedRosette.m(getKMeansMask): Make sure we
are documenting the arguments, assumptions and general steps.
(findSegmentedRosette): Likewise.
Add two steps to individual rosette mask creation

* src/manualRosetteDetect/findSegmentedRosette.m(findSegmentedRosette): Use a
morphological close to remove small noise responses and will bring together
large forground connected components.
(findSegmentedRosette): Stop iterative search for rosette once we have seen
that there is not foreground at the image edge.
findSegmentedRosette general var out of for loop.

* src/manualRosetteDetect/findSegmentedRosette.m(findSegmentedRosette): Take
the rc variable out of the for loop. This var does not change and needs to be
assigned only once.
Fix Bug, remove si on every loop

* src/manualRosetteDetect/rosettedetect_gui.m (segment_Callback): Remove si
staging matrix so it is ready for the next iteration.
Add exceptions and calculate maxGrowth

* src/manualRosetteDetect/findSegmentedRosette.m (findSegmentedRosette): New
variable maxGrowth that defines the maximum size that the evaluating square
can grow to.
(findSegmentedRosette): New variable foundRosette that identifies when we were
successfull at finding a good separation with the k-means.
(findSegmentedRosette): Two new exceptions for when maxGrowth is less than 5
and when we are not able to finde a rosette.
Catch error when findSegmentedRosette fails.

* src/manualRosetteDetect/rosettedetect_gui.m(findSegmentedRosette): Catch the
error where a rosette is not found and output its relative coordinate.
Continue with execution after rosette not found err.

* src/manualRosetteDetect/rosettedetect_gui.m(segment_Callback): Add a
'continue' statement on error in rosette detection.
Minimize the enclosing mask square.

* src/manualRosetteDetect/findSegmentedRosette.m(findSegmentedRosette): The
enclosing square will be one pixel larger than the contained connected
components. This means that there will be no 'extra' background when returning
subimg.
Fix bug. Correctly keep track of the image.

This is painfull: in put_image_in_axis we need to return the changed handle to
the calling function. We cannot just use guidata call :(.
* src/manualRosetteDetect/rosettedetect_gui.m(rosettedetect_gui_OpeningFcn):
Call put_image_in_axis just after a guidata call. Additionally, call guidata
after the put_image_in_axis call.
(put_image_in_axis): Return the modified handles object.
(figure1_WindowKeyPressFcn): Do not trust the handles object that we receive,
it is not the same, take it out with a guidata(hObjects) call.
(segment_Callback): Likewise.