# image analysis: Drawing lines on curvlinear structures and dots on the tips of branches

I want to make an algorithm for:

From vascular images like this:

I want to plot lines and draw points on the tip of branches like this:

Is there any literature or reference? or any idea?

I don't know how to approach.

FYI, the definition in the paper is like this:

Green dots: We want to know just the number of filopodia

Red line: goes up and down to the very tip of the sprouts and connects the edges of the sprouting ECs, and calculate its length

Blue line: line connecting the bases of the sprouting ECs

In principle, you need to define "tips of branches" in a deterministic way. Depending on your background, the expected quality of image analysis, or the amount of efforts you want to spend, there are a number of possible choices.

1. Directly use heuristic features.

• Background requirement - low, expected quality - low, efforts -low
• For example, I think it is the center of a "Y" shape (never mind if my guess is completely wrong). If so, then a straight-forward solution is that to estimate the branch direction of a local patch, and find those places have three directions. To estimate the direction of a local patch, you may simply use the edge map feature. You may filter indifferent branches by some simple heuristics, e.g. the diameter of a branch should be in a reasonable range, say 5 to 20 pixels width. To estimate this diameter, you may count the number of white pixels along the orthogonal direction of your estimated branch direction.
• The reason why this approach will not give your satisfactory quality is "the used definition is too simple to include complicated cases". For example, it is possible a fourth direction around a tip due to a fuzzy edge map.
2. Label some data and use learnt features.

• Background requirement - moderate, expected quality - moderate, efforts - moderate
• In this approach, you do not need to label a lot of data. Several hundreds of tip and non-tip locations should be enough for training. You need to try several classic image features before you decide to use which or which feature combination, e.g. hog, lbp, sift, orb. As long as you describe a candidate location using these feature in a fixed dimension, you can train a classifier to learn what are of "tips of branches" in a supervised way.
• Note: in this machine learning approach, you do not explicitly define "tips of branches", but learn its definition in an implicit way. This requires a certain level of machine learning knowledge. If you use python, then skimage/opencv + sklearn should be your friend.
• This approach will give you better results because your decision function is defined on a set of more complicated features, and thus can handle more complicated cases.
3. Label a lot of data and use deep learning.

• Background requirement - high, expected quality - high, efforts - high
• If you never heard of deep learning or need to produce results in several days, forget about this approach. In contrast, if you already have many labeled data, and has a power GPU, you should definitely try.
• In general, you need to prepare positive and negative patches, and feed them to a convolution neural network to learn feature extraction and classification jointly. Read some CNN tutorials and learn enough before you get start.
• It may takes several days or even weeks to learn deep learning from scratch. Data labelling also time consuming and may need at least several thounsands samples, an ideal number of training samples could be several millions. In addition, even with a powerful GPU, this training stage may still last several days. Hence, you will pay a lot for deep learning, but this also means you probably will get more.
• In the second choice, could you explain in more detail or recommend any literature? I know the basic concepts of machine learning (e.g. regression), but I have no experience. Jul 21 '16 at 8:10
• Also, I added some definitions, for your information. Jul 21 '16 at 8:20