integralFilter

Отфильтруйте изображение интеграла использования

Синтаксис

J = integralFilter(intI,H)

Описание

J = integralFilter(intI,H) фильтрует изображение, учитывая его интегральное изображение, intI, и объект фильтра, H. Функция integralKernel возвращает объект фильтра, используемый для входа к integralFilter.

Эта функция использует интегральные изображения для фильтрации изображения с фильтрами поля. Можно получить интегральное изображение, intI, путем вызывания функции integralImage. Размер фильтра не влияет на скорость операции фильтрации. Таким образом функция integralFilter идеально подходит для использования для быстрого анализа изображений в различных шкалах, как продемонстрировано алгоритмом Виолы - Джонса [1].

Советы

Поскольку корреляция использования функции integralFilter для фильтрации, фильтр не вращается прежде, чем вычислить результат.

Входные параметры

intI

Интегральное изображение. Можно получить интегральное изображение, intI, путем вызывания функции integralImage. Классом для этого значения может быть double или single.

H

Объект фильтра. Можно получить объект фильтра, H, путем вызывания функции integralKernel.

Выходные аргументы

J

Фильтрованное изображение. Отфильтрованное изображение, J, возвращает только части корреляции, которые вычисляются без дополнения. Это приводит к size (J) = size (intI) – H.Size для вертикального фильтра и size (J) = size (intI) – H.Size – [0 1] для вращаемого фильтра. Эта функция использует корреляцию для фильтрации.

Примеры

свернуть все

Считайте и отобразите входное изображение.

   I = imread('pout.tif');
   imshow(I);

Вычислите интегральное изображение.

   intImage = integralImage(I);

Примените 7 7 средний фильтр.

   avgH = integralKernel([1 1 7 7], 1/49);
   J = integralFilter(intImage, avgH);

Бросьте результат назад к тому же классу как входное изображение.

   J = uint8(J);
   figure
   imshow(J);

Создайте подобные Хаару фильтры вейвлета, чтобы найти вертикальные и горизонтальные ребра в изображении.

Читайте вход отображают и вычисляют интегральное изображение.

I = imread('pout.tif');
intImage = integralImage(I);

Создайте подобные Хаару фильтры вейвлета. Используйте запись через точку, чтобы найти вертикальный фильтр от горизонтального фильтра.

horiH = integralKernel([1 1 4 3; 1 4 4 3],[-1, 1]);
vertH = horiH.'
vertH = 
  integralKernel with properties:

    BoundingBoxes: [2x4 double]
          Weights: [-1 1]
     Coefficients: [4x6 double]
           Center: [2 3]
             Size: [4 6]
      Orientation: 'upright'

Отобразите горизонтальный фильтр.

imtool(horiH.Coefficients, 'InitialMagnification','fit');

Вычислите ответы фильтра.

horiResponse = integralFilter(intImage,horiH);
vertResponse = integralFilter(intImage,vertH);

Отобразите результаты.

figure; 
imshow(horiResponse,[]); 
title('Horizontal edge responses');

figure; 
imshow(vertResponse,[]); 
title('Vertical edge responses');

Считайте входное изображение.

I = imread('pout.tif');

Вычислите 45 ответов ребра степени изображения.

intImage = integralImage(I,'rotated');
figure;
imshow(I);
title('Original Image');

Создайте вращаемые подобные Хаару фильтры вейвлета 45 степеней.

rotH = integralKernel([2 1 2 2;4 3 2 2],[1 -1],'rotated');
rotHTrans = rotH.';

Визуализируйте фильтр Рот.

figure;
imshow(rotH.Coefficients, [],'InitialMagnification','fit');

Вычислите ответы фильтра.

rotHResponse = integralFilter(intImage,rotH);
rotHTransResponse = integralFilter(intImage,rotHTrans);

Отображение результатов.

figure;
imshow(rotHResponse, []);
title('Response for SouthWest-NorthEast edges');

figure;
imshow(rotHTransResponse, []);
title('Response for NorthWest-SouthEast edges');

Ссылки

[1] Виола, Пол и Майкл Дж. Джонс, “Быстрое Обнаружение объектов с помощью Повышенного Каскада Простых Функций”, Продолжения 2 001 Конференции Общества эпохи компьютеризации IEEE по Компьютерному зрению и Распознаванию образов, 2001. Объем: 1, pp.511–518.

Представленный в R2012a