Selon yann.lepetitco...@free.fr: > > > I see that the sort_u8() func into schrofilter.c use a basic bubble > > > sort scheme > > > => is it volontary ? > > > ... > > > This is only used in the center-weighted median code, which must > > be specifically enabled. CWM is particularly bad at filtering out > > noise in video, especially the kind of noise that make video encoders > > less efficient. > > > Where is the source file that store the center-weighted median code ?
I have found a C routine that is very very speed for to find the median value at http://ndevilla.free.fr/median/median/index.html (quickselect.c) => If it's only for to find the median value, it's a lot more faster that to make a bubble sort of the **entire** array for only to can read the median value that is in the middle of the array ... > > Sorting neighboring pixel values is a particularly dumb method of > > doing a CWM filter (when all you want is the median), so fixing the > > dumb method of sorting is not really going to make the code good. > > The correct way to do CWM is roughly min(max(center,min(neighbors), > > max(neighbors)), at least for weight=4. (IIRC, this is from memory) > > ??? > > lapatoucompri :( > > What is the signication of "min(max(center,min(neighbors), max(neighbors)), > at > least for weight 4" ??? > > If I have understand, this is something like sorting color fragments > intensities for to find the median and min/max colors/intensities of a zone > for > to apply on it a more adapted denoising ? Now, I can very speedly found the min/max and median value But I always don't understand what is the signification of "min(max(center,min(neighbors),max(neighbors)), at least for weight=4" :( Perhaps because that it seem to lack a parenthesis somewhere :) > > I'm only going to apply patches to this code to a) remove it, or b) > > rewrite it in Orc. The latter clearly requires using something > > SIMDable for median filtering. Interestingly, bubble sort can be > > implemented in SIMD, which may provide insight into why it was > > originally chosen. (But my guess is that the reason why it was > > chosen is that it took <5 minutes to implement.) The quickselect.c code is **really very very speed** for to find the median value I have benchmark it with various implementation of the bubble sort, qsort, mergesort and a lot of others sorting algorithms => the quickselect.c code seem to be the fastest for to find the median value > I take a look about how to make median filtering / denoising into a SIMD way > and > come back when I have find enough interesting infos on the subject I have begin to study about the aggregation into a single byte of the hightest bit of each 8 byte generated with PCMPGTs, where this aggregated byte can be used as index into a cascade of arrays for to can automatically find the index of the median pixel if we have the same type of byte/index computed for the heights pixels around the selected pixel on a 3x3 array (so of course, this compute only the index of the median on the local 3x3 array, not for the entire picture) => I think to study this idea until the end of the next week, because perhaps that this can to give something good (but perhaps not ...) @+ Yannoo ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Schrodinger-devel mailing list Schrodinger-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/schrodinger-devel