1

I have several thousand aerial photographs which have been scanned in and orthorectified, but the image borders and fiducial markers remain on the image. I am looking to identify these parts of the images and later remove them.

To this point, I have attempted to perform k-means clustering on the original raster, but have found that the pixel values for the border are often so close to pixel values in the image that I lose quite a lot of the image.

I have also attempted to use https://github.com/gina-alaska/dans-gdal-scripts/wiki/Gdal_trace_outline which takes a global threshold value and applies this to the image. This is better but each image requires a different threshold value which cannot be calculated using the histogram (as the peaks often correspond to regions within the image) or a percentage-area approach as, due to scanning errors, I may only have a partial image, changing the percentage of the tif that is 'actual image'.

The best approach that I have found so far is to use mean-shift segmentation to break up the image into regions, and assign zonal statistics to each polygon based on the underlying raster. While this feels like a step forward, I still need to somehow select the regions which relate to the border. In the image below, I am talking about the darker red border areas not the blue outer region.

false-colour segmented image

The images are grayscale, but I have colourised the segmented image based on mean pixel value to make it easier to differentiate between regions. To a human, it seems obvious which polygons relate to the border, but there are several issues in programmatically selecting the relevant areas:

The border is not always complete The border is not always complete

The border polygons may be 'contained' within the outer polygon boundary The border polygons may be 'contained' within the outer polygon boundary

The mean pixel value for border polygons may be similar to the image value The mean pixel value for border polygons may be similar to the image value

This means I can't select polygons on the edge, or based on a threshold value, to identify the borders.

The test image is here

Is there another approach which may help in separating out the image and border regions?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.