Message Boards Message Boards

2
|
2679 Views
|
3 Replies
|
5 Total Likes
View groups...
Share
Share this post:

How can I increase boundaries accuracy in satellite images?

Posted 1 year ago

I use the following codes for this work, but they have low accuracy. I would be grateful if you could help me. enter image description here

The codes are as follows

Pruning@Thinning@Closing[#, 5] &@DeleteSmallComponents[#, 500] &@
     LocalAdaptiveBinarize[#, 2] &@GaussianFilter[#, 10] &@img

enter image description here

ridges = ImageAdjust[RidgeFilter[imge, 7]]

enter image description here

bin = MorphologicalBinarize[ridges, {.1, .2}]

enter image description here

dist = DistanceTransform[ColorNegate@bin];
maxMarkers = MaxDetect[dist, 10];
HighlightImage[bin, maxMarkers]

enter image description here

watersheds = WatershedComponents[ridges, maxMarkers];
Colorize[watersheds]

enter image description here

POSTED BY: Erfan Abdi
3 Replies

Hello Erfan,

EdgeDetect[img, r] (with r = 2, 3 or 4) does a good job finding boundaries. It's sensitive and it has a good location accuracies.

However, if you are seeking a good and consistent segmentation of all the fields and roads try ClusteringComponents[img].

Training a neural net may eventually return better results, but it takes quite some effort. We are working on next generation foundation networks to provide you better solutions in upcoming versions.

POSTED BY: Markus van
Posted 1 year ago

Hello Mr. Markus, Thank you for your guidance.

POSTED BY: Erfan Abdi

Hello,

One way to improve the accuracy, in my opinion, is to train, say, Unet neural network (see how to do that here) on some data, for example, public dataset LPIS 2016 for semantic segmentation and then use WatershedComponents similar what you did to go to instance segmentation.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract