Я думаю, вы допустили несколько ошибок.
Во-первых, изображение, которое вы читаете, уже зашумлено, поскольку в нем специально не сказано " добавляет шум к изображению ". Это делает ваш второй шаг, imnoise
, излишним.
Во-вторых, используя fspecial
, вы создаете фильтр. В этом случае его тип представляет собой фильтр Laplacian
для данной альфа alpha
(от 0 до 1). Одно это не фильтрует ваше изображение. Вы должны использовать функцию imfilter
для обработки изображения.
I = imread('Ball.jpg');
G = rgb2gray(I);
h = fspecial('Laplacian',0.7); % 0.1 is the alpha, try out which one suits your case the most
C = imfilter(G,h);
imwrite(C, 'clean.jpg');
subplot(1,2,1);
imshow(I,[]);
subplot(1,2,2);
imshow(C,[]);
Обратите внимание, что фильтр Laplacian
не обязательно должен быть наиболее подходящим для вас. В документации MatLab имеется множество типов фильтров, которые вы можете использовать. Попробуйте использовать фильтр Гаусса.