класс integralKernel

Задайте фильтр для использования с интегральными изображениями

Описание

Этот объект описывает фильтры поля для использования с интегральными изображениями.

Конструкция

пример

intKernel = integralKernel(bbox,weights) задает вертикальный фильтр поля с помощью M-by-4 матрица ограничительных рамок и их соответствующих весов.

пример

intKernel = integralKernel(bbox,weights,orientation) заданная ориентация.

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

развернуть все

Ограничительные рамки, заданные как любой с 4 элементами [x, y, width, height] вектор или M-by-4 матрица отдельных ограничительных рамок. Ограничительная рамка задает фильтр. (x, y) координаты представляют самый верхний угол ядра. (width, height) элементы представляют ширину и высоту соответственно. При определении ограничительных рамок, когда M-by-4 матрица особенно полезен для построения подобных Хаару функций, состоявших из нескольких прямоугольников.

Суммы вычисляются по областям, заданным bbox. Ограничительные рамки могут наложиться. Смотрите Задают 11 11 Средний Фильтр для примера того, как задать фильтр поля.

Веса, заданные как M - вектор длины весов, соответствующих ограничительным рамкам.

Например, обычный фильтр с коэффициентами:

и две области:

область 1: x=1, y=1, ширина = 4, высота = 2
область 2: x=1, y=3, ширина = 4, высота = 2
может быть задан как
boxH = integralKernel([1 1 4 2; 1 3 4 2], [1, -1])

Отфильтруйте ориентацию, заданную как вектор символов 'upright' или 'rotated'. Когда вы устанавливаете ориентацию на 'rotated', (x, y), компоненты относятся к местоположению верхнего левого угла ограничительной рамки. (width, height) компоненты относятся к строке на 45 градусов от верхнего левого угла ограничительной рамки.

Свойства

развернуть все

Эти свойства только для чтения.

Ограничительные рамки, сохраненные как любой с 4 элементами [x, y, width, height] вектор или M-by-4 матрица отдельных ограничительных рамок.

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

Отфильтруйте коэффициенты, сохраненные как числовое значение.

Центр фильтра, сохраненный как [x, y] координаты. Центр фильтра представляет центр ограничительного прямоугольника. Это вычисляется путем сокращения вдвое размерностей прямоугольника. Для даже размерных прямоугольников центр размещается в субпиксельные местоположения. Следовательно, это окружено к следующему целому числу.

Например, для этого фильтра, центр в [3,3].

Эти координаты находятся на пробеле ядра, где верхний левый угол (1,1). Чтобы разместить центр в другое место, обеспечьте соответствующую спецификацию ограничительной рамки. Для этого фильтра лучший рабочий процесс должен был бы создать вертикальное ядро и затем вызвать метод rot45, чтобы обеспечить вращаемую версию.

Отфильтруйте размер, сохраненный как вектор с 2 элементами. Размер ядра вычисляется, чтобы быть размерностями прямоугольника, который ограничивает ядро. Для одного вектора ограничительной рамки [x, y, width, height], ядро ограничено в прямоугольнике размерностей [(width +height) (width +height)-1].

Для каскадных прямоугольников самый низкий угол самого нижнего прямоугольника задает размер. Например, фильтр со спецификацией ограничительной рамки [3 1 3 3], с набором весов к 1, производит 6 5 фильтр с этим ядром:

Отфильтруйте ориентацию, сохраненную как вектор символов 'upright' или 'rotated'.

Методы

rot45Вращает вертикальное ядро по часовой стрелке 45 градусами
перемещениеТранспонируйте фильтр

Примеры

свернуть все

 avgH = integralKernel([1 1 11 11], 1/11^2);
ydH = integralKernel([1,1,5,9;1,4,5,3], [1, -3]);

Можно также задать этот фильтр как integralKernel ([1,1,5,3; 1,4,5,3; 1,7,5,3], [1,-2, 1]); |. Это определение фильтра менее эффективно, потому что требуется три ограничительных рамки.

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

ydH.Coefficients
ans = 9×5

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
    -2    -2    -2    -2    -2
    -2    -2    -2    -2    -2
    -2    -2    -2    -2    -2
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

Создайте фильтр.

K = integralKernel([3,1,3,3;6 4 3 3], [1 -1], 'rotated');

Визуализируйте фильтр и отметьте центр.

    imshow(K.Coefficients, [], 'InitialMagnification', 'fit');
    hold on;
    plot(K.Center(2),K.Center(1), 'r*');
    impixelregion;

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

   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);

Больше о

 Вычисление Интегрального Изображения и Используя его для Фильтрации с Фильтрами Поля

Ссылки

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

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