pythonmatlabimage-processingcomputer-visionhistogram

Pyramidal Histogram Of Oriented Gradients - Trilinear interpolation


Hello im struggling with an implementation of this article: https://www.comp.nus.edu.sg/~tancl/publications/c2014/Using%20Pyramid%20of%20Histogram%20of%20Oriented%20Gradients%20on%20Natural%20Scene%20Text%20Recognition-final.pdf

I performed bilinear interpolation over the histogram bins and the results are better with this interpolation, however on page 2 its also mentioned that a trilinear interpolation is added when the pyramid level reaches level 2. I have read this answer HOG Trilinear Interpolation of Histogram Bins and I completely understand the formula behind trilinear interpolation over 2x2 block sizes, but in this article we have a 3x3 block size and 7x7 on pyramid level 3, because these block sizes yield the best results.

The main point about trilinear interpolation is that each pixel in a cell contributes to its local cell by a weight which is defined as the position in each block. I don't know how to represent the location of a pixel in 3x3 block size or what kind of formula should i use.

Thank you for all your help!

EDIT: Another explanation with 2x2 block size http://pep.ijieee.org.in/journal_pdf/11-126-142960909718-22.pdf


Solution

  • Short answer is: you can't apply Trilinear Inerpolation.

    Let's start with 2x2x2 blocks. Each block, is represented by it's centre pixel ( 1,2,3,4 in ugly yellow on my sketch). Each pixel is located at the corner of a cell.

    A pixel (the red dot), will be shared by up to 4 blocks that overlap.

    enter image description here

    With 3x3x2 block each block centre pixel will be also a cell centre pixel. And each cell pixel will be shared with up to 9 blocks.

    enter image description here

    You can't use Trilinear interpolation. multilinear interpolations require 2^D samples. So you'll need to choose a different way to assign the weights.

    Remember that we're not interested in interpolating values, but using the interpolation coefficients as weights.

    Some options that you may use (haven't tested them).