I need to extract the road and railway features from the Landsat TM and ETM + data.considering the whole image at a time, I want to know some algorithm to perform the process. If anybody have any idea regarding this ?
Kan Jang replied elsewhere "I published a paper named "River Delineation from Remotely Sensed Imagery Using a Multi-Scale Classification Approach" in IEEE JSTARS (2014), which focused on automatic complete river network delineation. This method is easy to use, and I'm pleased to share the codes."
Yes, it is possible, but it will be challenging. Object-based image segmentation and fuzzy rule based classification of eCognition can be used. Segmentation should be carried out in sub-object segmentation mode.
If you have a 30m resolution, it will be more than challenging, it will be impossible !
You will be able to detect the network when there is big enough differences in radiometry between the network (road or railway) and the surroundings. In this case, your 30m pixels will be a mix of radiometries and their aspect will be slighty different than the others.
Yes e-cognition with sub-object segmentation may work in some cases (large roads, highways...)
Yes, with Landsat TM resolution of 30m it will basically be impossible to detect many of the roads and few if any of the railroads. I think that much higher resolution satellite images with at least 5 m to 2m pixels will be required. Of course, for very large areas this may just be way to much data to handle. Also, are you wanting to visually detect and map the roads and railroads or do it 'automatically'. It will be very difficult again to detect them automatically even with edge/texture enhancements because other non-road surfaces can have similar characteristics (both spectral and spatial signatures).
If you plan to do the job manually, you can recognize some of the biggest linear structures but automatically you need to work with much smaller resolutions (5 to 2m), and so you need to process much higher amount of data ...
It is better if you use Landsat 8 (30 m), because the band 8 (panchromatic) allows you to detect all infrastructures (road). After you can use the free software "ImageJ" to find edges:
Its really difficult to find out roads and railways from 30 m resolution image as even roads are rarely 30 m in width (tertiary roads). Only primary and trunk roads can be visualize and that too in in some parts of the image. I can suggest you one method if you really want to extract roads from LANDSAT only(Not a standard research practise). For example in the below Landsat Image you can easily see the highways and trunk roads. Firstly you do the enhancement of your landsat image using: either: guassian, linear or equal area stretch.In all these three the image display will be different .As in the below image the trunk road can be easily visible. Now do the VIS (Veg, Impervious, Soil) classification of your image using supervised classification technique. Choose the training area wisely. Since Landsat 7 is multispectral image use various band information for better classifcation. There are standard classification trechniques to do that. Ranging from NDVI, NDBI, soil index etc. Use all these things as secondary information to improve the classification accuracy. It will prefer to use SVM classifier to do the same. You can also use Maximum likelihood or K-Neighbors but SVM accuracy is normally good. I am also attaching the classified image for the same. The classified image consists of more area as its the original image result and the landsat image that i have shared is the cropped part of main image to show you the roads.
Ok, now you can see that classified image shows only the impervious surface with nice trunk roads. Now come the stupid part. How to extract road from this impervious surface(roads are also impervious surface only and you have classified it by choosing appropriate training area.). So go to open street maps download the data of that LANDSAT area. Since its vector data extract the roads from there using QGIS(open source) Make your classified image geo referenced overlay the road data with geo referenced classified image and use clliper tool to extract Landsat impervious surface which is road.
Note: Why to do such hard work simply convert open street road network to raster. But this depends on your application that what you require.
You can do all above stuff using python which is having rich libraries for all these things.
Above suggestions are excellent. Also keep in mind that a road is not always spatially or spectrally the same, with a link also to the vegetation and general complexity of the region that you are working in. A road can be a dirt path, topped with gravel, or paved. The more narrow of these roads can also be overtopped by vegetation or not. These differing characteristics would need to be covered off in your modeling and / or rules.
Also good to check with regional spatial data libraries that you might have available. For instance, in Canada there are open geospatial datasets that can be used to aid with a mapping problem such as you describe (see link, can also search for rail lines).