Skip to content

Task01 Ирина Дынина ИТМО#3

Open
IrDIE wants to merge 1 commit intoPhotogrammetryCourse:task01from
IrDIE:task01
Open

Task01 Ирина Дынина ИТМО#3
IrDIE wants to merge 1 commit intoPhotogrammetryCourse:task01from
IrDIE:task01

Conversation

@IrDIE
Copy link

@IrDIE IrDIE commented Feb 25, 2026

Перечислите идеи и коротко обозначьте мысли которые у вас возникали по мере выполнения задания, в частности попробуйте ответить на вопросы:

  1. Почему SIFT менее точно угадывает средний угол отклонения? изменяется ли ситуация если выкрутить параметр ORIENTATION_VOTES_PEAK_RATIO=0.999? почему?
    --->> всё относительно. мне кажется правильнее спросить не почему sift хуже, а почему orb лучше. ORB использует подход с центроидами, и насколько я знаю не может на 1 keypoint раздвоить точку (как в sift с бинами)
    delta in ORIENTATION_VOTES_PEAK_RATIO::

  2. Как надежно замерить во сколько раз распараллеливание через OpenMP ускоряет ваш вариант SIFT? Попробуйте сделать это на вашем компьютере, какое ускорение относительно однопоточной версии оказалось? Сколько у вашего процессора ядер и сколько потоков?

  3. Правда ли можно строить каждый слой в Gaussian пирамиде из самого первого слоя этой октавы? Или нужно обязательно делать так как предложено в статье - дополняя размытие предыдущего слоя этой октавы? Совпадают ли пирамиды визуально?
    --->> мы можем либо начинать с base изображения каждый раз пересчитываю сигму на основе current_oct_id | current_layer_in_oct. Или основываться на sigma_prev (которая меняется пока мы спускаемся по пирамиде). Кажется результат один и тот же

  4. Какие ожидания от картинок в Gaussian пирамиде можно придумать? Как проверить что работает корректно? С какой другой картинкой предыдущей октавы должна визуально совпадать конкретная картинка конкретной октавы? Как их визуально сравнить, ведь они разного размера?
    --->> размытие увеличивается, первая картинка октавы == последней предыдущей октавы. Resize бОльшей картинки к размеру меньшей

  5. Почему в октаве Gaussian пирамиды s+3 картинки а не s+2 например?
    --->> вот поэтому https://t.me/c/3808617323/151

  6. Какие ожидания от картинок в DoG пирамиде можно придумать?
    --->> делая разность раздности мы ожидаем получить какие то пики

  7. Почему порог контрастности должен уменьшаться при увеличении числа слоев в октаве?
    --->> больше слоёв => меньше отличие между самими изображениями => не так контрастно

  8. Какая строка ответственна за определение сигмы (или что почти то же самое - радиуса) которая задает окрестность по которой определяется ориентация ключевой точки?

        int radius = (int)std::round(3.f * sigma_win);
        // radius of a point refers to the size of the region 
        // around the keypoint that is considered for further processing
  1. За какой строки вашего кода дескриптор инвариантен к повороту картинки?
float mag = std::sqrt(gx * gx + gy * gy);
float angle = std::atan2(gy, gx);
/* I had a question about why we need gradient both for computeOrientation and computeDescriptors:

Why Can't We Reuse the Gradients and Angles?
        Different Neighborhoods:
        In computeOrientations, the gradients are computed over a circular region around the keypoint to determine the dominant orientation.
        In computeDescriptors, the gradients are computed over a larger rectangular region divided into spatial bins to build the descriptor.
        
        Different Uses:
        In computeOrientations, the gradients are used to build an orientation histogram.
        In computeDescriptors, the gradients are used to populate the spatial and orientation bins of the descriptor.
        
        Rotation Adjustment:
        In computeDescriptors, the gradient angles are adjusted relative to the keypoint's dominant orientation. This adjustment is not needed in computeOrientations.
        Performance Considerations:

    */

// инвариантность к повороту: повернем направление градиента на угол ключевой точки
float angle_invariant = angle - kp_angle_rad;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant