MATLAB è Simulink íà ðóññêîì

https://hub.exponenta.ru/

Обработка сигналов и изображений\ Image Processing Toolbox

И.М.Журавель "Краткий курс теории обработки изображений"

В оглавление книги \ К предыдущему разделу \ К следующему разделу

Пространственная фильтрация

Как уже не раз отмечалось, методы обработки изображений с точки зрения реализации делятся на два основных класса – локальные и глобальные. Каждый из них имеет свои преимущества и недостатки. Преимущество методов при глобальной реализации заключается в простоте их исполнения и быстродействии. Локальные методы владеют более широкими функциональными возможностями, в частности, они могут учитывать характеристики локальных областей, т.е. быть адаптивными.

В этом материале рассмотрим некоторые методы пространственной фильтрации. Большинство из них относится к локальным методам. Реализация этих методов состоит из четырех основных этапов:

  1. формирование локальной окрестности и ее центральной точки;
  2. проведение операции на пикселями данной локальной окрестности;
  3. присвоение результата операции (п. 2) центральной точке окрестности;
  4. повторение операций, описанных в п.п. 1 – 3, для каждой точки изображения.

Далее приведем примеры применения некоторых видов пространственных фильтров.

Сначала считаем исходное изображение

L=imread('leo1.bmp');

Для лучшего понимания сути приведем реализацию метода для одной цветовой составляющей.

L=L(:,:,1);
figure, imshow(L);


Рис. 1. Исходное изображение.

Испортим исходное изображение шумом типа ”соль и перец”.

L=imnoise(L,'salt & pepper',0.01);
figure, imshow(L);


Рис. 2.

Далее применим к этому зашумленному изображению различные виды пространственных фильтров и проанализируем результат обработки.

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


– ‘P’ – границы изображения расширяются значением Р. По умолчанию значение Р=0;
– ‘replicate’ – размер изображения увеличивается повторением величин на его боковых границах;
– ‘symmetric’ – размер изображения увеличивается путем зеркального отражения через границы;
– ‘circular’ – размер изображения увеличивается периодическим повторением двумерной функции;

В этом примере будем использовать не встроенную функцию imfilter и опции расширения, а приведем детальное описание работы нескольких пространственных фильтров. Размер изображения увеличим путем зеркального отражения через границы.

%n, m – размеры локальной окрестности
n1=fix(n/2);m1=fix(m/2);
a=L(1,1);b=L(1,M);c=L(N,1);d=L(N,M);
for i=1:n1;
  for j=1:m1;
    L1(i,j)=a;
    L3(i,j)=b;
    L6(i,j)=c;
    L8(i,j)=d;
  end;
end;
   L2=L(1,1:M);
   L02=L2;
    for i=1:n1-1;
      L2=[L2;L02];
    end;
    L7=L(N,1:M);
    L07=L7;
        for i=1:n1-1;
          L7=[L7;L07];
        end;
     L4=L(1:N,1);
     L4=L4';
     L04=L4;
          for i=1:m1-1;
            L4=[L4;L04];
          end;
  L4=L4';
  L5=L(1:N,M);
  L5=L5';
  L05=L5;
    for i=1:m1-1;
      L5=[L5;L05];
    end;
     L5=L5';  L1=[L1;L4];  L1=[L1;L6];  L1=L1';  L2=[L2;L];  L2=[L2;L7];
  L2=L2';  L3=[L3;L5];  L3=[L3;L8];  L3=L3';  L1=[L1;L2];  L1=[L1;L3];
  Lr=L1';

Приведем программную реализацию непосредственно самих методов

for i=1+n1:N+n1;
    disp(i);
    for j=1+m1:M+m1;

% Формирование локальной окрестности D
                 if j==1+m1;
                        D=0;
                        for a=-n1:n1;
                        for b=-m1:m1;
                           D(n1+1+a,m1+1+b)=Lr(i+a,j+b);
                        end;
                        end;
                 end;
           if j>1+m1;
            for a=-n1:n1;
              D(n1+1+a,m+1)=Lr(i+a,j+m1);
            end;
             D=D(1:n,2:m+1);
          end;    

% Формирование результата обработки

% Контргармоническое среднее
               Lout1(i,j)=sum(sum(D.^(q+1)))/sum(sum(D.^q+eps));
% Арифметическое среднее
               Lout2(i,j)=sum(sum(D))./(m*n); 
% Геометрическое среднее               
               Lout3(i,j)=prod(prod(D)).^(1/(m*n));    
 % Гармоническое среднее           
               Lout4(i,j)=(m*n)/sum(sum(1./(D+eps))); 
  % Медиана           
               Lout5(i,j)=median(median(D)); 
 % Максимум по окрестности 
               Lout6(i,j)=max(D(:)); 
  % Минимум по окрестности 
               Lout7(i,j)=min(D(:));  
  % Срединная точка
               Lout8(i,j)=0.5*(max(D(:))+min(D(:)));         
          end;
  end;
  % а–усеченное среднее
d=6;
               Dus=sort(D(:));
               Dus=Dus(d/2+1:end-d/2);
               Lout9(i,j)=mean(Dus);

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

Lout1=Lout1(n1+1:N+n1,m1+1:M+m1);
Lout2=Lout2(n1+1:N+n1,m1+1:M+m1);
Lout3=Lout3(n1+1:N+n1,m1+1:M+m1);
Lout4=Lout4(n1+1:N+n1,m1+1:M+m1);
Lout5=Lout5(n1+1:N+n1,m1+1:M+m1);
Lout6=Lout6(n1+1:N+n1,m1+1:M+m1);
Lout7=Lout7(n1+1:N+n1,m1+1:M+m1);
Lout8=Lout8(n1+1:N+n1,m1+1:M+m1);
Lout9=Lout9(n1+1:N+n1,m1+1:M+m1);

Визуализируем полученные результаты.

figure, imshow(Lout1);
title('Контргармоническое среднее');


Контргармоническое среднее

Рис. 3. Контргармоническое среднее при q=1,5.


Контргармоническое среднее

Рис. 4. Контргармоническое среднее при q=-1,5.

Уравнение контргармонического фильтра можно представить следующим выражением:

          (1)

В зависимости от значения параметра q в выражении (1) метод приводит к удалению белых или темных импульсных выбросов (см. рис. 3).

figure, imshow(Lout2);
title('Арифметическое среднее');


Арифметическое среднее

Рис. 5. Арифметическое среднее при размере локального окна 33.


Арифметическое среднее

Рис. 6. Арифметическое среднее при размере локального окна 99.

При использовании фильтра типа арифметическое среднее качество устранения шума зависит от размеров локального окна. Увеличение размеров локального окна приводит к более качественному устранению шумовой составляющей. Недостаток этого фильтра состоит в том, что его применение приводит не только к устранению шумовой составляющей, но и размывает границы объектов, т.е. понижает качество визуального восприятия таких изображений.

figure, imshow(Lout3);
title('Геометрическое среднее');


Геометрическое среднее

Рис. 7. Геометрическое среднее при размере локального окна 33.


Геометрическое среднее

Рис. 8. Геометрическое среднее при размере локального окна 99.

Фильтр типа геометрическое среднее можно представить следующим выражением:

          (2)

На основе выражения (2) можно предположить, что результат обработки будет существенно зависеть от размеров локальной апертуры. Это подтверждают обработанные этим методом изображения, которые представлены на рис. 7 и 8.

figure, imshow(Lout4);
title('Гармоническое среднее');


Гармоническое среднее

Рис. 9. Гармоническое среднее при размере локального окна 33.


Гармоническое среднее

Рис. 10. Гармоническое среднее при размере локального окна 99.

Исходя из выражения фильтра гармонического среднего

          (3)

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

figure, imshow(Lout5);
title('Медиана');


Медиана

Рис. 11. Медиана при размере локального окна 33.


Медиана

Рис. 12. Медиана при размере локального окна 99.

Для устранения данного вида шума (‘соль и перец’) медианная фильтрация является одним из наиболее простых и эффективных методов. Размер локальной апертуры влияет на результат обработки, но не в такой степени как в других рассмотренных нами методах. Одно из основных преимуществ медианной фильтрации состоит в том, что она приводит к устранению импульсных выбросов, не размывая границ объектов (см. рис. 11, 12).

figure, imshow(Lout6);
title('Максимум по окрестности');


Максимум по окрестности

Рис. 13. Максимум по окрестности при размере локального окна 33.


Максимум по окрестности

Рис. 14. Максимум по окрестности при размере локального окна 99.

figure, imshow(Lout7);
title('Минимум по окрестности');


Минимум по окрестности

Рис. 15. Минимум по окрестности при размере локального окна 33.


Минимум по окрестности

Рис. 16. Минимум по окрестности при размере локального окна 99.

На рисунках 13–16 приведены результаты обработки изображений с помощью фильтра типа максимум (рис. 13, 14) и минимум (рис. 15, 16) по окрестности. Конечно, результаты такой обработки существенно зависят от размеров локальной апертуры.

figure, imshow(Lout8);
title('Срединная точка');


Срединная точка

Рис. 17. Срединная точка при размере локального окна 33.


Срединная точка

Рис. 18. Срединная точка при размере локального окна 99.

Фильтр типа срединная точка может быть представлен выражением

          (4)

Обработка изображений данным методом показывает его неэффективность к устранению шума типа “соль и перец”. Также из представленных на рис. 17 и 18 результатов можно сделать вывод, что работа фильтра типа срединная точка зависит от размеров локальной окрестности.

figure, imshow(Lout9);
title('a-усеченное среднее');


a-усеченное среднее

Рис. 19. a –усеченное среднее при размере локального окна 33.


a-усеченное среднее

Рис. 20. a –усеченное среднее при размере локального окна 99.

Фильтр типа a –усеченное среднее можно представить выражением

(5)

Суть работы фильтра, представленного выражением (5), можно объяснить так. Из локальной области D удаляются наибольших и наименьших значений пикселей. Оставшиеся значения усредняются и формируют результат.

Из приведенных на рис. 19 и 20 изображений видно, что фильтр типа α–усеченное среднее является эффективным инструментом для удаления импульсных шумов. Конечно, нужно подобрать соответствующий размер локальной апертуры.

В данной работе приведены примеры работы нескольких наиболее известных методов пространственной фильтрации. Также в этой работе мы показали влияние изменения размеров локальной апертуры на результат обработки.

Литература.

  1. Прэтт У. Цифровая обработка изображений – М.: Мир, 1982. – 790 с.
  2. Гонсалес Р., Вудс Р., Эддтис С. Цифровая обработка изображений в среде MATLAB. Москва: Техносфера, 2006. – 616 с.

Программная реализация приведенных в материале методов (m-файл).

clear;
L=imread('leo1.bmp');
L=L(:,:,1);
figure, imshow(L);
[N M]=size(L);
L=imnoise(L,'salt & pepper',0.01);
figure, imshow(L);
L=double(L)./255;
q=1.5;n=3; m=n;
 
n1=fix(n/2);m1=fix(m/2);
a=L(1,1);b=L(1,M);c=L(N,1);d=L(N,M);
for i=1:n1;  for j=1:m1;
    L1(i,j)=a;    L3(i,j)=b;    L6(i,j)=c;    L8(i,j)=d;
end;end;
   L2=L(1,1:M);   L02=L2;
    for i=1:n1-1;      L2=[L2;L02];    end;
    L7=L(N,1:M);    L07=L7;
        for i=1:n1-1;          L7=[L7;L07];        end;
     L4=L(1:N,1);     L4=L4';     L04=L4;
          for i=1:m1-1;            L4=[L4;L04];          end;
       L4=L4';  L5=L(1:N,M);  L5=L5';   L05=L5;
    for i=1:m1-1;      L5=[L5;L05];    end;
     L5=L5';  L1=[L1;L4];  L1=[L1;L6];  L1=L1';  L2=[L2;L];  L2=[L2;L7];
  L2=L2';  L3=[L3;L5];  L3=[L3;L8];  L3=L3';  L1=[L1;L2];  L1=[L1;L3];
  Lr=L1';
  clear L1;  clear L2;  clear L3;  clear L4;  
    clear L5;  clear L6;  clear L7;  clear L8;
  
for i=1+n1:N+n1;
    disp(i);
    for j=1+m1:M+m1;
                 if j==1+m1;
                        D=0;
                        for a=-n1:n1;
                        for b=-m1:m1;
                           D(n1+1+a,m1+1+b)=Lr(i+a,j+b);
                        end;
                        end;
                 end;
           if j>1+m1;
            for a=-n1:n1;
              D(n1+1+a,m+1)=Lr(i+a,j+m1);
            end;
             D=D(1:n,2:m+1);
          end;            

Lout1(i,j)=sum(sum(D.^(q+1)))/sum(sum(D.^q+eps));	%Контргармоническое среднее
Lout2(i,j)=sum(sum(D))./(m*n);				%Арифметическое среднее
Lout3(i,j)=prod(prod(D)).^(1/(m*n));			%Геометрическое среднее
Lout4(i,j)=(m*n)/sum(sum(1./(D+eps)));			%Гармоническое среднее
Lout5(i,j)=median(median(D));				%медиана
Lout6(i,j)=max(D(:));					%max
Lout7(i,j)=min(D(:));					%min
Lout8(i,j)=0.5*(max(D(:))+min(D(:)));			%срединная точка 
   d=6;
   Dus=sort(D(:));
   Dus=Dus(d/2+1:end-d/2);
Lout9(i,j)=mean(Dus);					%а–усеченное среднее
          end;
  end;
          
Lout1=Lout1(n1+1:N+n1,m1+1:M+m1);
Lout2=Lout2(n1+1:N+n1,m1+1:M+m1);
Lout3=Lout3(n1+1:N+n1,m1+1:M+m1);
Lout4=Lout4(n1+1:N+n1,m1+1:M+m1);
Lout5=Lout5(n1+1:N+n1,m1+1:M+m1);
Lout6=Lout6(n1+1:N+n1,m1+1:M+m1);
Lout7=Lout7(n1+1:N+n1,m1+1:M+m1);
Lout8=Lout8(n1+1:N+n1,m1+1:M+m1);
Lout9=Lout9(n1+1:N+n1,m1+1:M+m1);

figure, imshow(Lout1);title('Контргармоническое среднее');
figure, imshow(Lout2);title('Арифметическое среднее');
figure, imshow(Lout3);title('Геометрическое среднее');
figure, imshow(Lout4);title('Гармоническое среднее');
figure, imshow(Lout5);title('Медиана');
figure, imshow(Lout6);title('Максимум по окрестности');
figure, imshow(Lout7);title('Минимум по окрестности');
figure, imshow(Lout8);title('Срединная точка');
figure, imshow(Lout9);title('a-усеченное среднее');

В оглавление книги \ К предыдущему разделу \ К следующему разделу


Поиск по сайту:


Система Orphus