Средний фильтр без встроенной функции - PullRequest
0 голосов
/ 01 ноября 2018

У меня проблема с выводом. Я использую фильтр 5 * 5, чтобы сделать изображение гладким. Средний фильтр сглаживает наше изображение, но этот делает изображение более скучным. Кто-нибудь может мне помочь с этой проблемой?

Входное изображение:

image

img_2 = imread('White-Bars.png');
filter = ones(5 , 5)/25;
working_img = img_2(:,:,1);
img_4 = img_2(:,:,1);
[rows,cols] = size(working_img); sum=0;
for row=4:(rows-3) 
  for col=4:(cols-3)
    for rowindex=(-2): (3) 
      for colindex=(-2): (3)
        img_4(row,col) = mean2(double(working_img(row+rowindex,col+colindex)) * filter(1:5,1:5));
      end
    end
  end
end
subplot(1,2,1);
imshow(working_img);
subplot(1,2,2);
imshow(img_4);

Итак, это вывод:

image

1 Ответ

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

Вы не понимаете, что делаете!

Это явно домашнее задание, поэтому я не предоставляю полный код. Вы делаете свертку изображения, что вы можете сделать с помощью лучшего кода (fft, conv2, imfilter и т. Д.), Но я предполагаю, что вы делаете это для обучения.

Сначала сядьте со своими конспектами и узнайте, что такое фильтрация. Когда вы применяете фильтр к пикселю (первые 2 цикла предназначены для выбора каждого пикселя на изображении), вы хотите умножить выбранный вами фильтр на этот пиксель и на все окружающие пиксели и накапливать результат этого в выходное изображение.

Как только вы находитесь в определенном пикселе (row, col), вы выполняете итерацию вокруг всех соседних пикселей (смещение rowindex, colindex). Для каждого из них вы хотите умножить текущий пиксель на фильтр в этом конкретном месте , то есть на значение 1, и добавить его к результату. Зависит от фильтра, он будет делать что-то другое. В вашем случае фильтр с тем же значением будет делать среднее. Вам не нужно использовать функцию mean2, математика, которую вы применяете, выполняет фильтрацию .

Короче говоря, эта строка неверна:

img_4(row,col) = mean2(double(working_img(row+rowindex,col+colindex)) * filter(1:5,1:5));

И использование mean2 и индекс для переменной filter.

Видео, объясняющее свертку: https://www.youtube.com/watch?v=C_zFhWdM4ic

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...