c++image-processingopencv3.0feature-extractionlbph-algorithm

What is Non Redundant LBP in texture description?


I want to know about non redundant local binary pattern for texture description. What is the difference between original LBP and non-redundant LBP in texture description?

Can someone clarify the above mentioned topic through a good example?


Solution

  • Non-redundant Local Binary Patterns (NRLBP) descriptor considers the LBP code and its complement as the same pattern, and hence the number of bins in the LBP histogram is reduced by half (see this paper for further details).

    The following toy example might help you figure out how NRLBP works. Consider an image of just 3 rows and 4 columns with the intensity levels shown below:

    intensity levels

    There are only two LBP codes in this image, namely:

    LBP patterns

    Thus, the LBP representation of the image is a feature vector of 256 components. The bins corresponding to patterns 101010102=170 and 010101012=85 take the value 0.5 and the remaining bins are zero (I'm assuming that the histogram is normalized).

    The NRLBP representation of the image turns out to be a feature vector of 128 components. As both patterns are 1's complement of each other, they are actually the same pattern in this texture model and thus the only nonzero bin corresponds to the pattern code 85 and takes the value 1.