The DPI doesn't matter at all when dealing with images. Images are measured in pixels so this is what you need to adjust. You can safely disregard DPI as it has no sense in this context.
Scaling won't help you here - remember you are working with a pixel device, not vectors, so the canvas need to be already in the size you want to use for print etc. or you will have reduced quality due to interpolation when scaling it.
You need to pre-calulate your canvas size in pixels in relation to what size you want in the final stage.
Lets say you want to print a 15 x 10 cm image (or about 6 x 4 inches) @ 300DPI output. You then calculate the pixels:
Width : 10 cm * 300 / 2.54 = 1181 pixels
Height: 15 cm * 300 / 2.54 = 1772 pixels
Width : 4 in * 300 = 1200 pixels
Height: 6 in * 300 = 1800 pixels
26.45 cm * 300 DPI / 2.54 inches = 3124 pixels.
To display that canvas in a smaller area on screen you use CSS to display the element, for example -
<canvas width="3124" height="3124" style="width:600px;height:600px;"></canvas>
You can now draw to the canvas at its actual pixel position and it will show up scaled down on screen (but retain all information on the canvas itself). If you use mouse coordinates you just scale the mouse position proportionally (canvas pos = mouse coord * 3124px / 600px).
For zooming etc it becomes a tad more complicated, but the principle remains: the final size of your image must be that of the final result.
About DPI: if this image was 72 DPI or 300 DPI the numbers of pixels would be the exact same. The reason as already mentioned is that images are measured in pixels.
DPI is an arbitrary value when it comes to pixel devices (bitmaps, monitors, cameras etc.) and is only used for a DTP software to get a hint on dimension for final print which will use this information only to pre-scale the image in relation to the page you using to set the print with.
@K3N: I followed your suggestion, but I am stuck on a problem, the texts which are being placed are very small.please look at the fiddle jsfiddle.net/Q3TMA/1042
@Abhinav the font size must be scaled up in advance before drawn. You can use scale() for this or try with the font height directly. The latter is not always linear due to how font are made, but you should be able to get close.
But still the sized controls are appearing small, and what can be done for images?
@Abhinav I suggest you open this as a new question. My answer here only covers the underlying principle.