Hyper-spectral images are images with many bands $(\ge 100)$ while the normal color images have only three bands $\rm (r,g,b)$. It is not difficult to simulate an artificial gray-scale image with the following Matlab codes:
width = 200;
height = 200;
img = ones(height,width)*10;
img(floor(height/4):floor(height*3/4),floor(width/4):floor(width*3/4))= 200;
noise = 5+10*randn(height,width);
img = img+noise;
img(img<0)=0;
img(img>255)=255;
figure; imshow(img,[]);
The following simulation image can be obtained:
In the simulation image, the object is a square in the center and the rest is the background. The object is of gray-value 200, and both object and background are contaminated by Gaussian noise. It is also possible to perform blurring before adding noise. The blurring is used to simulate the system point spread function.
Then comes to my question: how can we simulate a hyper-spectral image?
For the time being, my solution is as follows:
- Find a hyper-spectral profile from the hyperspectral database for a certain object (this kind of database exists?)
- For each band get the object's gray-value from the profile, and treat this band as if it is gray-scale image when creating simulation image.
I am not sure whether this is the right way of generating simulation images. Any ideas?