MATLAB Answers

jhz
0

Normalize Matrix to 512?

Asked by jhz
on 21 May 2019
Latest activity Commented on by jhz
on 30 May 2019
Dearl all, I have to normalize a matrix to some number (512).
Exactly, my question is related to feature descriptor matrix which I want to normalize to 512. Actually, I have to import feature descriptor into another program that only accepts feature descriptors that are normalized to 512. But I don't get how to normalize the feature descriptor matrix or what does it mean by normalized to 512. I found normalize function in matlab but I don't know how can I use it for this purpose.
Below is the exact line what program asked and I have to do.
[Descriptor Data] is a npoint x 128 unsigned char matrix.
Note the feature descriptors are normalized to 512.

  0 Comments

Sign in to comment.

1 Answer

Adam Danz
Answer by Adam Danz
on 21 May 2019
 Accepted Answer

I know next to nothing about .sift files but if you search for "512" in this link, you'll find the same instructions you shared but it doesn't describe the normalization process.
According to this resource (again, search for "512" on that page), the sift-based descriptors are L2-Normalized and subsequently multiplied by 512, then rounded to the nearest integer. The description also provides a way to verify that normalization was done correctly.
So, what is L2-normalization? It is a regularization method in machine learning that is better described by this site. Previous answers in this forum have shown that L2-Normalization is straightforward to perform in matlab.
Given all of that information, the normalization would look something like this
% v is your vector
vnorm = round(v/norm(v) * 512);
but you'll need to verify that this is correct by diving into the methods on Koen's website (the 2nd link I shared). I want to be clear that this is where I'd start if I were you but by no means am I inserting confidence that this is what your program (which I've never used) requires. Note that this topic was also discussed here and here (search for "512" on those pages) and those reference agree with the above.

  10 Comments

jhz
on 28 May 2019
Hello, thank you again. Yes you were right that SURF features are not the right data to be normalized. Actually, I tried the same process to normalize the SIFT feature descriptors found using the original sift binary in MATLAB and it worked (I matched temp.key file provided by Lowe in the sift folder and my features files and both are same). It means the SURF 'features' are not the right data to normalize.
But the questions is how they are different than SIFT descriptors and how can I convert SURF 'features' to SIFT descriptors?
Adam Danz
on 28 May 2019
I suggest you start a new question on that topic so others might see it. Maybe someone who has experience working with those files can chip in.
jhz
on 30 May 2019
I followed your suggestion and poted new question here.

Sign in to comment.