Acutally, it is quite simple (and faster) to do it without rotating
the image. You can compute the derivative in any direction by
rotating the derivative in x and y. That is
dv = c dx + s dy
where c and s are the cosine and sine of the direction. If i remember
right, this is the way it is done in openSURF. Also, resampling is
one of the few image algorithms that we actually have ;-)
> i.e :
>>
>> - Convert the code to work with the native libmv image class.
>>
>> I have also done some test on the integration of the "Fast corner
>> detector". It works well.
>> - I can update it in third party and write the wrapper to use it with
>> the "Array3Du" image class.
>
> That would be great. I wish the FAST code wasn't such a black box.
> Essentially, the C code they provide is generated by scripts that are not
> provided.
>
>>
>> The image class of libmv suffer of important basic image tools :
>> - a. Convertion from color to gray,
>>
>> - b. Basic drawing operation are not present (circle, segment...),
>>
>> I can take care of the point a and b.
>
> Yes, image handling is a sore point for libmv.
Agree.
Two basic things that I would change (even if i wrote them myself ;-)
1- I would use reference counted views instead of image objects that
own data. This way complete images, image crops, or image planes can
all be accessed as image views. Btw, when we first though about it,
we dismissed reference counting because (i) google style said so, and
because (ii) boost's shared_array was the simplest way of reference
counting, but we didn't want to depend on boost. Do we still care
about these show stoppers?
2- This is just a matter of taste, but I wish I had written
image(x,y) instead of image(y,x). Even if it is standard in python or
matlab, i still find image(y,x) to be a pain.
Also, I would forget about the ArrayNd stuff for a while, since we are
not using it.
> I would be happy to move to
> an external image library, but they all have flaws relating either to
> portability or licensing. The one I'm most interested in is vision workbench
> (also, I work with the author), because it has a beautiful design and API.
> Sadly, the license is truly weird and not usable for a library, or even GPL
> compatible.
> I'm open to suggestions.
If using vision workbench is not doable, we can simply clone its
ImageView type. They certainly thought more than us to find the good
image API. So cloning their API (or its main features) should save us
time. Implementing the actual code should be much easier than
deciding a good API.
cheers,
pau