Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

ippiDeconvLR

Adriaan_van_Os
New Contributor I
207 Views

I get nice results wit large numbers of iterations of ippiDeconvLR. However, because of the large number of iterations, it takes a long time and triggers the following questions:

1. User-friendly software implies that the user can stop (and is informed about) lengthy operations. So, how do I interrupt ippiDeconvLR ? Run it in a separate thread and then kill the thread ? Seems rather crude (and an invitation to memory leaks).

2. Is ippiDeconvLR threaded internally ? Threading it externally simply by tiling, is not possible, see https://lmb.informatik.uni-freiburg.de/Publications/2010/Tem10a/LucyRichardsonDeconvolution.pdf

Sincerely,

Adriaan van Os

0 Kudos
6 Replies
Adriaan_van_Os
New Contributor I
207 Views
Additional question about ippiDeconvLR. 3. Is N times ippiDeconvLR(with M iterations) equal to 1 time ippiDeconvLR(with M*N iterations) when using the same pDeconvLR state record ? Sincerely, Adriaan van Os
Gennady_F_Intel
Moderator
207 Views

you are right, the IPP's API doesn't allow a user to interrupt the computation till the very end.

ippiDeconvLR is not threaded internally.

 

Adriaan_van_Os
New Contributor I
207 Views

Then I have to reimplement ippiDeconvLR in application code as it does give good results, but is unpractical to use.

What LR method uses ippiDeconvLR ? Additive or multiplicative ? See e.g. https://www.strollswithmydog.com/richardson-lucy-algorithm for the difference.

Regards,

Adriaan van Os

Adriaan_van_Os
New Contributor I
207 Views

In the mean time, I implemented the multiplicative Lucy-Richardson iteration in application code. Unlike ippiDeconvLR, it is interruptible and fully threaded. And faster.

Also, it doesn't suffer from edge effects, as in attached photo. The way that Intel can fix the edge artifacts in ippiDeconvLR is by changing the border type used internally from ippBorderConst to ippBorderRepl or ippBorderMirror. That is, I get the same edge artifacts if I use ippBorderConst and changing it to ippBorderRepl or ippBorderMirror fixes the problem.

Regards,

Adriaan van Os

Ruqiu_C_Intel
Employee
207 Views

Hello Andriaan van Os,

Thank you for diving into research IPP functionalities and sent out your comments! We will investigate ippiDeconvLR internally, and back to here if there is any update.

Best Regards,

Ruqiu

Adriaan_van_Os
New Contributor I
207 Views

Depending on the passed  kernel, the actual number of Lucy-Richardson iterations - before the quality of the resulting image starts to decrease - is between 1 and 10000. I don't see how this number can be known beforehand. Therefore, the number of iterations must be steerable, either by the user or by an automated assessment algorithm. In other words, a Lucy-Richardson iteration is useless, unless it is actually stoppable and continuable.

Regards,

Adriaan van Os

 

Reply