image analysis: Drawing lines on curvlinear structures and dots on the tips of branches
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.


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. 

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.  

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.