Я пытаюсь реализовать простой фильтр нижних частот, используя функцию «ones» как фильтр и «conv2» для вычисления свертки обеих матриц (исходное изображение и фильтр), который является фильтрованным изображением, которое я хочу получить, но результат imshow (filterImage) - это просто пустое белое изображение вместо отфильтрованного изображения.MATLAB: применить фильтр нижних частот к изображению
Я проверил матрицу отфильтрованного изображения, это двойной размер 256x256, но я не знаю, почему он отображается неправильно.
I = imread('cameraman.tif');
filteredImage = conv2(double(I), double(ones(3,3)), 'same');
figure; subplot(1,2,1); imshow(filteredImage);title('filtered');
subplot(1,2,2); imshow(I); title('original');
EDIT: Я также попытался преобразовать его в два раза, прежде чем вычисления свертки, как это было более 1, но это не дает эффект фильтра низких частот, но контрастность изображения был увеличен вместо.
I = imread('cameraman.tif');
I1 = im2double(I);
filteredImage = conv2(I1, ones(2,2), 'same');
figure; subplot(1,2,1); imshow(filteredImage);title('filtered');
subplot(1,2,2); imshow(I1); title('original');
Ожидается, что изображения типа 'double' будут иметь значения от' 0' до '1'. Ваш 'filterImage', вероятно, превышает это. – beaker
@beaker Да, это было превышать это, но я преобразовал его в двойное сначала с помощью «im2double», но он слишком белый, а не размытый. –
Итак, теперь вы достигли второй проблемы. Каков диапазон значений в 'filterImage'? В вашем отредактированном коде я бы хотел поспорить, что они находятся между '0' и' 4'. – beaker