Adding noise to hyperspectral image (.mat file)

3 次查看(过去 30 天)
I have to apply various noises(Gaussian blurr, AWGN) to a hyperspectral image(available in .mat format)( Let's take indian pines HS image for instance) . I read that Gaussian blurr is applied on the grayscale image of an rgb image with varying sigma (variance) and for applying AWGN, we need to vary standard deviations. My first question is that how to apply these noises in case of HS images as its dimension is 100x100x200 ( it's not any rgb image of mxnx3 size). For Gaussian blurr, do I need to convert the Hyperspectral image to rgb format and then grayscale format and then apply the noise? or do I convert HS image directly to grayscale image and apply noise? I'm confused. Please tell me how to do that. And how to apply AWGN to it too.( and visualizing the images )
It would be very helpful if explained through codes.( Let's take indian pines HS image for instance)
Thanks a lot in advance.
  1 个评论
Bjorn Gustavsson
Bjorn Gustavsson 2019-3-8
编辑:Bjorn Gustavsson 2019-3-8
So what part of my advice did you not understand?
To repeat:
An image, HS or not, is just an array of pixels with photon counts for intensity. If you see it for what it is things become less muddled by conventions and notation, such as RGB-images being either doubles scaled between 0-1 or uint8 between 0 and 255, those are just scaling-discretizations of much larger photon-counts. So if you want to add a Gaussian noise to layer 45 of that image you just add normal-distributed random numbers with standard deviation of 10 % to each pixel:
Inoisy_layer = Iideal(:,:,45) + 0.1*Iideal(:,:,45).*randn(size(Iideal(:,:,45)));

请先登录,再进行评论。

回答(1 个)

Bjorn Gustavsson
Bjorn Gustavsson 2019-3-8
Gaussian blur is just a convolution of your image with a 2-D Gaussian PSF for normal images (for an RGB image it might be slightly different widths for red green and blue light if the optical system is not achromatic). For your case you might have to do either a 3-D convolution of your 200x200x100 image with one constant 2-D Gaussian, or wiht a 3-D Gaussian if you're asked to model bluring in the third dimension too - possibly with completely different width.
If you want to add normal-distributed noise then it is nothing more than adding a normal-distributed radnom number to each pixel, take a look at randn and modify the standard deviation of your noise to fit your needs, for approximating Poisson-distributed noise (Image photon counts typically well above 100) I typical do:
Inoisy = Iideal + Iideal.^.5.*randn(size(Iideal));
HTH

类别

Help CenterFile Exchange 中查找有关 Hyperspectral Image Processing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by