How to make a vector of multiple images in double form by using function?
2 次查看(过去 30 天)
显示 更早的评论
clc;
clear all;
close all;
for i=1:10
c{i}=imread(sprintf('s%d.jpg',i));
w = rgb2gray(c{i});
im = imresize(w,0.25);
mi = double(im);
q= im2vec(mi);
J = imnoise(mi,'salt & pepper')
figure,
imshow(mi)
medianFilteredImage = medfilt2(mi, [50 50]);
figure,
%imshow(medianFilteredImage)
% Find the noise. It will have a gray level of either 0 or 255.
noiseImage = (mi == 0 | mi == 255);
% Get rid of the noise by replacing with median.
noiseFreeImage = noiseImage; % Initialize
noiseFreeImage(noiseImage) = medianFilteredImage(noiseImage); % Replace.
imshow(noiseFreeImage);
end
%Function
function mi=im2vec(im)
[N M]=size(im);
% for i=1:N
% for j=1:N
% mi((i-1)*N+j)=im(i, j);
% end
% end
for i=1:N
mi(1, (i-1)*M+1:M+(i-1)*M)=im(i,:);
end
- Use rgb2gray command.
- Resize to size 50x50 (using imresizecommand).
- Make a vector (function is provided, also make it in double form).
- Add salt and pepper noise.
- Display noisy images.
- Remove the noise using a suitable filter.
- Display the noise free images.
3 个评论
Jan
2018-11-26
So is all you want to convert:
mi = double(im);
to
mi = double(im(:));
? What exactly is your quiestion? Attaching the images does not clear this detail.
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!