Creating a 3D surface plot from array data
24 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Steven Harkness
am 30 Apr. 2020
Kommentiert: Star Strider
am 1 Mai 2020
I have this script
clear
img = imread('cameraman.tif');
Mean = 0.01:0.01:0.05;
hsize = 3:1:25;
for m = 1:length(Mean)
for h = 1:length(hsize)
V=0.01;
noise = imnoise(img,'gaussian',Mean(m),V);
[peaksnr, snr] = psnr(noise,img);
nsr = 1/snr;
PSF = fspecial('average',hsize(h));
AverageBlur = imfilter(img,PSF,'replicate','same','conv');
NoiseyBlurred = imfilter(noise,PSF,'replicate','same','conv');
NoiseyBlurredImage = NoiseyBlurred;
BlindDeconv = deconvblind(NoiseyBlurredImage,PSF,15);
LucyFilter = deconvlucy(NoiseyBlurredImage,PSF,15);
WNRFilter = deconvwnr(NoiseyBlurredImage,PSF,nsr);
RegularFilter = deconvreg(NoiseyBlurredImage,PSF,NPowerInt);
PSNRBlurred = psnr(NoiseyBlurredImage,img);
PSNRBlind = psnr(BlindDeconv,img);
PSNRLucy = psnr(LucyFilter,img);
PSNRWNR = psnr(WNRFilter,img);
PSNRReg = psnr(RegularFilter,img);
Blur(h,m)= (40-PSNRBlurred)/40;
Blind(h,m)=PSNRBlind;
Lucy(h,m)=PSNRLucy;
WNR(h,m)=PSNRWNR;
Reg(h,m)=PSNRReg;
end
end
It saves the PSNR value for each hsize and mean in 25x5 array like this:
Lucy =
21.6467 21.4919 21.1253 20.7971 20.3298
22.2624 22.1446 21.7016 21.3296 20.7955
22.4250 22.1990 21.8411 21.4450 21.0195
Each column has 25 values which i cut short for space. The blurred error (denoted 'Blur') saves in the same way.
I am trying to plot a 3D surface/mesh of the data, where for each column PSNR vs error is plotted, rather than just a 2D line plot with 5 lines over the top of eachother. Is there a way to do this?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/289432/image.jpeg)
Edit: Attached Image of 2D plot to help with clarity of the question. Can i make a graph like this but 3D to be able to see all the lines (ideally as a surface) and with the new axis being the 'Mean'. The 5 lines are due to the 5 Mean values. The error and psnr value changes with each hsize, i.e. 23 x,y values per line. Allowing me to see how both hsize and mean affect the PSNR value.
Apologies for the lack of clarity and specificity in the original question, hopefully this helps clear things up.
0 Kommentare
Akzeptierte Antwort
Star Strider
am 30 Apr. 2020
Try this:
figure
surf(Lucy)
grid on
or:
figure
mesh(Lucy)
grid on
The ‘x’ and ‘y’ axes are in units of the relevant indices, since ‘x’ and ‘y’ vectors or matrices defining them otherwise are not provided.
6 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!