Я пытаюсь реализовать простой фильтр нижних частот, используя функцию «единицы» в качестве фильтра и «conv2» для вычисления свертки обеих матриц (исходного изображения и фильтра), которое является отфильтрованным изображением, которое я хочу получить, но результатом imshow(filteredImage) является просто пустое белое изображение вместо отфильтрованного изображения.
Я проверил матрицу отфильтрованного изображения, это дубль 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');
РЕДАКТИРОВАТЬ: я также попытался сначала преобразовать его в двойное перед вычислением свертки, поскольку она превышала 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
. ВашfilteredImage
, вероятно, превышает это значение. - person beaker   schedule 28.12.2016filteredImage
? Готов поспорить, что в вашем отредактированном коде они находятся между0
и4
. - person beaker   schedule 28.12.2016double(ones(3,3))/9
. - person beaker   schedule 28.12.2016