Read a reference image into the workspace.
ref = imread("office_1.jpg");
Preallocate two arrays that store a sequence of six images of the size of the reference image.
numFrames = 6;
imsOriginal = zeros([size(ref) numFrames],class(ref));
imsNoisy = zeros([size(ref) numFrames],class(ref));
Read and add images to the preallocated arrays. One array stores the original image data. The second array stores the image data with added salt and pepper noise.
for p = 1:numFrames
filename = strcat("office_",num2str(p),".jpg");
im = imread(filename);
imsOriginal(:,:,:,p) = im;
imsNoisy(:,:,:,p) = imnoise(im,"salt & pepper");
end
Display the image sequences in a montage. The first row shows the sequence with original image data. The second row shows the sequence with noisy image data.
montage(cat(4,imsOriginal,imsNoisy),"Size",[2 numFrames])
Calculate the peak PSNR of each noisy image with respect to the corresponding pristine image by specifying the data format of the input arrays as 'SSCB' (spatial, spatial, channel, batch).
peak_psnrs = psnr(imsNoisy,imsOriginal,"DataFormat","SSCB");
peak_psnrs = squeeze(peak_psnrs)
peak_psnrs = 6×1
16.3560
16.9698
17.8079
18.1843
18.0656
17.1682