0xfaded / pislam

Real-time feature extraction on the Raspberry Pi 3
GNU General Public License v3.0
116 stars 34 forks source link

How can I use an Array of pyramid images instead of one large collage!? #9

Open Fredrum opened 4 years ago

Fredrum commented 4 years ago

Hi,

I'm trying to use Pislam with an image pyramid that is a array/Vector of Mat's, instead of how it's currently working with one big collage of the images in the pyramids 'stuck together'.

I'm getting compiler errors when I try to invoke, pislam::fastDetect<iter_width, 16>(levelWidth, levelHeight, imgPtr, outPtr, 20);

it seems the system needs to compile in the value of 'iter_width' at build time and it can't change when I run?

Is this a part of the optimized code or is there a way around this?

Cheers Fred

0xfaded commented 4 years ago

Yes, the templates width is an optimization (although it's dubious if it gives much benefit).

I see three options:

  1. Use the pyramiding function multiple times with just one level, and map each level into a cv::Mat.

  2. Take the single image, and map the area of each level to a different cv::Mat using the CV::Mat(h, w, type, data_ptr, step) constructor.

  3. Rewrite the code to not rely on the width template.

2020年7月5日(日) 4:57 Blueroom VR notifications@github.com:

Hi,

I'm trying to use Pislam with an image pyramid that is a array/Vector of Mat's, instead of how it's currently working with one big collage of the images in the pyramids 'stuck together'.

I'm getting compiler errors when I try to invoke, pislam::fastDetect<iter_width, 16>(levelWidth, levelHeight, imgPtr, outPtr, 20);

it seems the system needs to compile in the value of 'iter_width' at build time and it can't change when I run?

Is this a part of the optimized code or is there a way around this?

Cheers Fred

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/0xfaded/pislam/issues/9, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABFEXJL2E5IJGJYXUHGSXTRZ7T2TANCNFSM4OQVJBAA .

Fredrum commented 4 years ago

Hi and thank you. I managed to find an inbetween where I just pad the width of each pyramid slice to the IMG_W width. It'll do for now as I still need to figure out how I will optimally generate the pyramid on the fly.

I see that the original ORB2 code seems to apply the Gaussian blur only just before doing that 'ComputeDescriptors' and before that it uses the raw images, if I understand correctly.

While you are using the blurred images from the start and throughout the full process.

Am I getting that right? I know it's been a while since you wrote this so you might not remember.

Cheers