CarVac / librtprocess

A project to make RawTherapee's processing algorithms more readily available.
Other
51 stars 23 forks source link

Document the API #12

Open CarVac opened 5 years ago

CarVac commented 5 years ago

Well, we need to document what everything does.

butcherg commented 5 years ago

Toward this end, I branched rawproc to code up inclusion of librtprocess. In trying to use vng4, I am getting this error: librtprocess : Wrong color filter for 4 colors array: 0 1 1 2 I couldn't find any guidance or indication in the code with respect to constructing cfarray, so I just assumed 0=r, 1=g, and 2=b. Apparently, bad assumption...

heckflosse commented 5 years ago

@butcherg I will add a comment.

vng4 needs a color matrix with 4 different colors (2 different greens). For example 0 1 3 2

butcherg commented 5 years ago

Ah, thanks. Also, I neglected to scale my rawData to the 16-bit integer range, from the float 0.0-1.0...

So, would doxygen-parsed comments be an acceptable approach? After I make it work in rawproc, I think I'll know enough to start incorporating such...

heckflosse commented 5 years ago

@butcherg

Also, I neglected to scale my rawData to the 16-bit integer range, from the float 0.0-1.0...

Currently the only demosaicer where input and output scale are arguments is amaze. I will add the functionality to the other demosaicers too.

butcherg commented 5 years ago

Ok, so all will expect rawData as float, 0.0-1.0?

On January 24, 2019 8:29:21 AM MST, Ingo Weyrich notifications@github.com wrote:

@butcherg

Also, I neglected to scale my rawData to the 16-bit integer range, from the float 0.0-1.0...

Currently the only demosaicer where input and output scale are arguments is amaze. I will add the functionality to the other demosaicers too.

-- You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub: https://github.com/CarVac/librtprocess/issues/12#issuecomment-457238362

-- Sent from my Android device with K-9 Mail. Please excuse my brevity.

heckflosse commented 5 years ago

@butcherg Currently most of the demosaicers expect rawdata as float [0.0;65535.0] with the exception of amaze, where you can pass scaleIn and scaleOut. So, if your data is in float [0.0;1.0] range and you want to use amaze, just pass 1.0 as scaleIn and scaleOut. I will add that for the other demosaciers too.

btw: about vng4: you can just set one of the greens from 1 to 3 and it will work.

heckflosse commented 5 years ago

@butcherg Imho, though I may miss something, the vng4 algorithm should work in whatever range [0;1], [0;65535], [0;10000000000] because there is no epsilon and no hard clippling involved. Can you confirm this from your side using it in RawProc?

If so, that would save me some time :smiley:

butcherg commented 5 years ago

I'm actually struggling with my C skills, can't seem to make a rawData array that vng4 won't segfault upon. It needs to be float , AFAIK, so can I new float[size] and declare a float pointer to that? Or should I just malloc....

Vincent-FA commented 4 years ago

It would be nice to have the scaling factor, mentioned for vng4 above, in all demosaicing functions. And if some demosaicing function do support a [0, 1] range, it'd be nice to know too, to avoid a conversion.

I need help with the arguments of some demosaicing functions, those that do not exist in all functions, could you document it please or tell it here?

Is superpixel supported? What kind of implementation is bayerfast_demosaic? Is there a simple bilinear interpolation somewhere? What kind of interpolation does xtransfast_demosaic use?

@butcherg if you need help with malloc I probably can help you.

butcherg commented 4 years ago

@Vincent-FA, thanks for the offer; the message I sent yesterday reflects the help I got from @heckflosse subsequent to my lament... :D

@heckflosse, I've tried AHD and VNG without doing the 65536 scaling, and I can't see a visible difference in the outcome... ??