2016-12-27 3 views
0

Я пытаюсь реализовать простой фильтр нижних частот, используя функцию «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'); 
+0

Ожидается, что изображения типа 'double' будут иметь значения от' 0' до '1'. Ваш 'filterImage', вероятно, превышает это. – beaker

+0

@beaker Да, это было превышать это, но я преобразовал его в двойное сначала с помощью «im2double», но он слишком белый, а не размытый. –

+0

Итак, теперь вы достигли второй проблемы. Каков диапазон значений в 'filterImage'? В вашем отредактированном коде я бы хотел поспорить, что они находятся между '0' и' 4'. – beaker

ответ

0

следующее решение зафиксировал проблему диапазона, другие решения, которые были даны были о конкретном типе фильтров нижних частот, который является усреднение Filte:

Img1 = imread('cameraman.tif'); 
Im=im2double(Img1); 
filteredImage = conv2(Im, ones(3,3)); 
figure; subplot(1,2,1); imshow(filteredImage, []);title('filtered'); 
subplot(1,2,2); imshow(Im); title('original'); 

Вместо деления на ядро, я использовал imshow (отфильтрованное изображение, []).

Смежные вопросы