Правильный ли ответ для следующего сценария MATLAB? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть задача относительно matlab image processing toolbox. Задача следующая:

enter image description here

Мое решение этих шагов:

I = imread('Ball.jpg');

I1 = imnoise(I, 'salt&pepper', 0.2);

G = rgb2gray(I1);

C = fspecial('Laplacian',h);

imwrite(C, 'clean.jpg');

subplot(1,2,1);
imshow(I1,[]);

subplot(1,2,2);
imshow(C,[]);

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Я думаю, вы допустили несколько ошибок.

Во-первых, изображение, которое вы читаете, уже зашумлено, поскольку в нем специально не сказано " добавляет шум к изображению ". Это делает ваш второй шаг, 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 имеется множество типов фильтров, которые вы можете использовать. Попробуйте использовать фильтр Гаусса.

0 голосов
/ 12 ноября 2018

Ваше решение неполное, например, вы не применяете свой фильтр к своей шумной картинке. Вот пример, который может работать:

%% Load image (I.)
I = imread('Ball.jpg');

%% Convert image into grayscale (II.)
G = rgb2gray(I);

%% Add noise (if 'Ball.jpg' isn't already noisy)
I1 = imnoise(G, 'salt & pepper', 0.2); % NB : imnoise needs the image to be grayscale

%% Create the filter (III.)
C = fspecial('Laplacian');

%% Apply the filter (III.)
IClean = filter2(C,I1);

%% Write the picture in new file  (IV.)
imwrite(IClean, 'clean.jpg');

%% Display images (V.)
subplot(1,2,1), imshow(I1,[]);
subplot(1,2,2), imshow(IClean,[]);

В зависимости от результата вы можете подтвердить свою идею «соответствующего фильтра пространственной области» в вопросе III.

...