The satellite imagery i am rendering is not realistic does not look good. So i was planning to improve things through code(like adding noise to data or using different overlay texture for different objects for improving their realism ). I don't have any concrete ideas to start on this. Can any anybody point to some resources or ideas that have helped them in dealing with this problem. I am using C++ and osgearth (If thats relevant). Thanks
Have you tried to perform any histogram stretching? If you are using a raw satellite image it will be less visually appealing without any stretching. If you are thinking of using osgearth I would assume that you are using the satellite image for a 3D application? I have worked in the 3D visualization industry for the better part of a decade and all raw satellite images we have dealt with required a histogram stretch. I have been using a Standard Deviation stretch with a value of 2 to 3.5. The value will depend on the terrain you are dealing with (water, forest, inter tidal, snow etc.).
you can check out my answer here about adding noise with python. This may not be fully answer you wanted, but it can may help you...
i hope it helps you...
As you want to procedurally generate an image, noise may not be what you want, certainly not by itself.
I suggest you use your vector data with a polygon patern fill to represent the texture you need for the landcover (I've had success with this in the past, just not with Mapnik2 as per my most recent post). At the edges of the polygons I suggest 'stamping' the perimeter with a semi-transparent overlay to help blend between landcover-types. Such a stamp will also help you control how the blending happens.
To do this you need a series of tileable textures one for each landcover type. Use Photoshop or GIMP to create your textures (say about 256x256 or even less), but make sure you make them seamless to avoid horrible edges when tiling! Depending on your terrain you could also have a baselayer 'wash' of a coloured DTM height map, which you can then blend with the polygon fills. Using your dtm, you could also identify steep slopes and add a scree texture at these locations.
A refinement on this is 'splatting'. This is where you effectively do the same thing as a polygon pattern fill but instead you use a random sample portion of a larger texture that is increasingly trasnparent away from the centre. You then apply a random rotation to that and apply that at regular intervals across the polygon. My explanation isn't great but do a search on splatting and you'll find lots of documentation on it.
And now the easy way: You could also try using software like Terragen, World Construction Set or L3DT. All of these have methods for procedurally defining textures based on height, slope, landcover etc. plus some lighting effects and much more. They have different levels of 'free-ness' though.