Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Aliaksandr Kuznetsou                 2:450/42.174   07 Apr 2003  15:58:52
 To : Alexey Volkov
 Subject : Корреляционные алгоритмы
 -------------------------------------------------------------------------------- 
 
 
  До меня дошло, что 07 Apr 03 в 15:31, Вы писали мне, и вот что я думаю:
 
  AK>> В функции сравнения можно поворачивать "искомое" изображение
  AK>> (если я не ошибаюсь для этого юзалась матрица поворота), заменяя
  AK>> "пустые" пиксели флагом, который не будет учитываться при
  AK>> сравнении. Для поворота нам понадобится матрица ((w^2 + h^2)^0.5)
  AK>> и размещение искомого изображения ровно по центру этогог
  AK>> изображения. Hу а потом как описано выше, только с учётом флага
  AK>> "пустоты".
  AV>  А какой-нибудь конкретный пример можно?
 
 Хез - сырцы если и есть, то дома, посмотрю, но там только для определения
 "правильности" контуров (т.е. сами цвета не учитываются).
 
  AV>  Hе совсем я понимаю как это сравнение будет происходить. Сейчас в
  AV> моем
  AV>  сознаний приблизительно следующая картина:
  AV>      1) Делаем оба изображения монохромными (Только зачем? Ведь при
  AV>  этом может быть утерена какая-то существенная информация и
  AV>  подизображение сможет быть унифицированно с более чем одним участком
  AV>  исходного. Кстати стоит заметить что соотношение исходного изображения
  AV>  и подизображения может быть очень значительным, например 1 000 000 :
  AV>  1, а то и больше. И это при том, что подизображение имеет разрешение
  AV>  приблизительно 500x500.)
 
 Для более лёгкого сравнения и учёта отклонений (естесственно теряется точность).
 Если надо очень надёжно, то можно ничего и не понижать (как я уже говорил, я
 юзал этот аглоритм только для определения "правильности контуров", а не для
 определения "правильности всего изображения")
 
  AV>      2) Далее как бы двигаем подизображение по исходному сравнивая
  AV>  участок исходного, на который наложено подизображение с этим
  AV>  подизображением. Получаем какую-то оценку полученного сравнения.
  AV>  (Каков вид этой оценочной функции?)
  AV>      3) Пройдя таким образом все исходное изображение, поворачиваем
  AV>  подизображение, допустим на один градус, и повторяем предыдущий шаг
  AV>  (2).
 
 Примерно так:
 int compare(int deltaX, int deltaY) {
     int res[360];
     for (int i=0;i<360;i++) {
         Rotate(&src_img,&dest_img,i);
         for (int y = 0;y<dest_img.width;y++)
             for (int x = 0;y<dest_img.heght;x++)
                 res[i]+= abs(dest_img.bmp[y*dest_img.width + x] -
                     full_img.bmp[(y+deltaY)*full_img.width + (x + deltaX)]);
     return наименьшее_из_res;
 }
 
 Массив res будет содержать отклонения самые маленькие из которых - самые похожие
 повороты. Т.е. заводим ещё 3 переменные (minX,minY,minD) в которые будем ложить 
 x (в minX) и y (minY) для наменьшего res из всего массива, если оно меньше того 
 что уже лежит там (в minD). Т.е.
 
 int tASSt() {
     int deltaX,deltaY,minX,minY;
     unsigned int minD = 65535;
     for (deltaY = 0;deltaY<full_img.width;deltaY++)
         for (deltaX=0;deltaX<full_img.height;deltaX++) {
             int res = compare(deltaX,deltaY);
             if (res<minD) {
                 minD = res;
                 minX = deltaX;
                 minY = deltaY;
             }
         }
     return (minD<минимальный_допуск);
 }
 
 теперь в minD - наименьшее отклонение (minX,minY - его координаты), если надо
 можно и угол запомнить, но тебе если я не ошибся надо только содержится или нет.
 Оптимизировать можно до потери пульса, но из "теории" - всё. =)
 
 return "Bye!"; // #_ЬЬЬЬЬ_#
 }              // ЯЯЯЯЯ
 --- и тишина...
  * Origin: Да здравствует Windows! Бил Гейца в президенты РБ! (2:450/42.174)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Корреляционные алгоритмы   Alexey Volkov   04 Apr 2003 13:57:20 
 Корреляционные алгоритмы   Aliaksandr Kuznetsou   04 Apr 2003 13:27:42 
 Re: Корреляционные алгоритмы   Alexey Volkov   07 Apr 2003 11:22:42 
 Корреляционные алгоритмы   Aliaksandr Kuznetsou   07 Apr 2003 12:10:22 
 Re: Корреляционные алгоритмы   Alexey Volkov   07 Apr 2003 15:31:50 
 Корреляционные алгоритмы   Aliaksandr Kuznetsou   07 Apr 2003 15:58:52 
 Re: Корреляционные алгоритмы   Alexey Volkov   08 Apr 2003 09:21:03 
 Корреляционные алгоритмы   Aliaksandr Kuznetsou   08 Apr 2003 08:50:20 
 Re: Корреляционные алгоритмы   Alexey Volkov   08 Apr 2003 11:30:30 
 Корреляционные алгоритмы   Aliaksandr Kuznetsou   08 Apr 2003 10:48:39 
 Корреляционные алгоритмы   Alex Astafiev   08 Apr 2003 00:40:09 
 Корреляционные алгоритмы   Aliaksandr Kuznetsou   08 Apr 2003 08:46:09 
 Re: Корреляционные алгоритмы   Anatoly Saveliev   09 Apr 2003 07:28:21 
 Корреляционные алгоритмы   Roman Sandakov   07 Apr 2003 15:28:40 
Архивное /ru.algorithms/33413e917e73.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional