Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.01.2010, 00:30
гость

 
Сообщений: n/a

Автокорреляторы
Горбань в своей статье рассказывает как можно к примеру в сети Хопфилда добиться инвариантности относительно сдвигов вот отрывок с этой статьи
------
Для того, чтобы при обработке переводить визуальные образов, отличающиеся только положением в рамке изображения, в один эталон, применяется следующий прием. Преобразуем исходное изображение в некоторый вектор величин, не изменяющихся при сдвиге (вектор инвариантов). Простейший набор инвариантов дают автокорреляторы - скалярные произведения образа на сдвинутый образ, рассматриваемые как функции вектора сдвига.
В качестве примера рассмотрим вычисление сдвигового автокоррелятора для черно-белых изображений. Пусть дан двумерный образ S размером pxq=n. Обозначим точки образа как S[i,j]. Элементами автокоррелятора Ac(S)будут величины a[k,l]=(for(int i=1;i<=p;i++){for(int j=1;j<=q;j++)s[i,j]*s[i+k,j+l]}) (вместо циклов в статье конечно Σ стоит и теже пределы суммирования это было просто для наглядности), где S[i,j]=0 при выполнении любого из неравенств i<1, i>p, j<1, j>q. Легко проверить, что автокорреляторы любых двух образов, отличающихся только расположением в рамке, совпадают. Отметим, что при всех ij, a[i,j]=a[-i,-j],a[i,j]=0, и при выполнении любого из неравенств i<1-p, i>p-1, j<1-q,j>q-1. Таким образом, можно считать, что размер автокоррелятора равен p×2q+1.
-------
очень странно у меня что-то не получается по этим указаниям получить одинаковый автокорреллятор для сдвинутых образов может кто уже считал подскажите что не так плиз.. вот мой код
---
<code>
for(int k=1;k<n;k++){
for(int l=1;l<n;l++){
int tempS=0;
for(int i=1;i<n;i++){
for(int j=1;j<n;j++){
if(((i+k)>n)||((j+l)>n));
else tempS+=s[i,j]*s[i+k,j+l];
}
}
a[k,l]=tempS;
}
}
</code>
---
но почему то получаются различные автокоррелляторы может я не правильно понял сам алгоритм.. я тестировал на
-11-1
-11-1
-11-1
и сдвигал единичный блок влево вправо но матрицы были другими не одинаковыми.. вот...
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра