Increase the pixel size (decrease the spatial resolution) of a satellite image by applying a Gaussian filter with a (large) width

14 views (last 30 days)
The goal
I am trying to simulate coarse data as though they were measured with a coarse PSF (point spread function).
The data
I have a satellite image with 15m pixel size and I want to upscale it to 460 using a Gaussian filter. To do this I need to apply a transfer function (TF; e.g., Gaussian) to the fine data, but with a very large width. This produces the coarse data.
I came across the function
iamgaussfilt
but the output is an image with the same pixel size as my input. Is there any other function that takes as input a fine resolution image, applies a Gaussian TF and produces a coarse spatial resolution image?
To make my problem even more clear, I am following the paper 'The effect of the point spread function on downscaling continua'. All in all, the authors wanted to downscale a coarse satellite image using an ancillary fine spatial resolution variable. The downscaling consists of two steps:
  1. regression
  2. kriging on regressions residuals
During the regression, they had to upscale the fine resolution image to match the pixel size of the coarse resolution image and then they performed the regression. This upscaling had to be done using the PSF.
From here you can download my image (https://drive.google.com/drive/folders/18_1Kshb8WbT04gwOw4d_xhfQenULDXdB?usp=sharing).

Answers (2)

Image Analyst
Image Analyst on 21 Sep 2022
"Is there any other function that takes as input a fine resolution image, applies a Gaussian TF and produces a coarse spatial resolution image?" <== Yes, you can use conv2 or imfilter
  1 Comment
Nikolaos Tziokas
Nikolaos Tziokas on 22 Sep 2022
Edited: Nikolaos Tziokas on 22 Sep 2022
I am trying to use the
imfilter
function but the output seems to be the same as the input in terms of dimensions (i.e., pixel size). But, I have found this post where they use the
imresize
function to change the resolution of the filtered image. I was wondering if that's the right way to upscale (decrease the spatial resolution) an image using a Gaussian filter or I can do it, only by using the
imfilter
.Here is my code, based on the post I found:
ntl = imread('ntl.tif');
r = imread('pan15.tif');
figure()
imshow(r);
kernel = fspecial('gaussian', [7 7], 1.6);
blurredImage = imfilter(r, kernel);
downSample = imresize(blurredImage, [91 48]); % dimensions based on the ntl img
imshow(downSample);
figure()
imshow(downSample);
And here is the output:
Many thanks.

Sign in to comment.


Image Analyst
Image Analyst on 22 Sep 2022
See video on super resolution:
Particulalry starting around 2:29.
Could be very useful in forensics for enhancing surveillance videos.
  5 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by