find the average pixel value of matrix of images
15 次查看(过去 30 天)
显示 更早的评论
hi i was wondering how to put a group of 10 images that are 1920 x 1080 into a matrix that is size 1920x1080x10. Im doing this to keep track of values for each pixel.
i have tried
for i = 1:10
outputFileName = sprintf('bwImage%d.jpg', i);
allImages{i} = imread(outputFileName);
end
B = mean(allImages);
but this creates and matrix size 1 x 10.
This matrix will be used to calculate the average value at each pixel location
0 个评论
回答(1 个)
Konrad
2021-12-17
编辑:Konrad
2021-12-17
Hi Michael,
allImages{i} = ... creates a cell-array containing the images.
If your images are all grayscale and of the same size you can use a 3-d array:
for i = 1:10
outputFileName = sprintf('bwImage%d.jpg', i);
allImages(:,:,i) = imread(outputFileName); % concatenate images in 3rd dimension
end
B = mean(allImages,3); % average across 3rd dimension
Best, K.
2 个评论
Image Analyst
2021-12-17
You left out the allocation and some other robustness
numImages = 10;
allImages = zeros(1080, 1920, numImages, 'uint8'); % HDTV resolution -- 1080 lines (rows)
counter = 1;
for k = 1 : numImages
outputFileName = sprintf('bwImage%d.jpg', k);
fprintf('Reading in %s.\n', outputFileName);
if isfile(outputFileName)
allImages(:, :, counter) = imread(outputFileName); % concatenate images in 3rd dimension
counter = counter + 1;
else
message = sprintf('File not found : ', outputFileName)
uiwait(warndlg(message));
end
end
% Crop if some images were missing.
if counter < numImages + 1
allImages = allImages(:, :, 1:counter);
end
% Compute mean over all images of those images that we were able to read in.
meanImage = mean(allImages, 3); % average across 3rd dimension
% Display the image.
imshow(meanImage, []);
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!