Skip to content

Commit

Permalink
Merge pull request #3199 from Beep6581/xtransnew
Browse files Browse the repository at this point in the history
About 3x speed for raw false colour suppression
  • Loading branch information
heckflosse committed Mar 6, 2016
2 parents cf68a0f + 1d64c65 commit b3f6f1c
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 245 deletions.
2 changes: 1 addition & 1 deletion rtengine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ set (RTENGINESOURCEFILES colortemp.cc curves.cc flatcurves.cc diagonalcurves.cc
dfmanager.cc ffmanager.cc gauss.cc rawimage.cc image8.cc image16.cc imagefloat.cc imagedata.cc imageio.cc improcfun.cc init.cc dcrop.cc
loadinitial.cc procparams.cc rawimagesource.cc demosaic_algos.cc shmap.cc simpleprocess.cc refreshmap.cc
fast_demo.cc amaze_demosaic_RT.cc CA_correct_RT.cc cfa_linedn_RT.cc green_equil_RT.cc hilite_recon.cc expo_before_b.cc
stdimagesource.cc myfile.cc iccjpeg.cc hlmultipliers.cc improccoordinator.cc pipettebuffer.cc coord.cc
stdimagesource.cc myfile.cc iccjpeg.cc improccoordinator.cc pipettebuffer.cc coord.cc
processingjob.cc rtthumbnail.cc utils.cc labimage.cc slicer.cc cieimage.cc
iplab2rgb.cc ipsharpen.cc iptransform.cc ipresize.cc ipvibrance.cc
imagedimensions.cc jpeg_memsrc.cc jdatasrc.cc iimage.cc
Expand Down
3 changes: 0 additions & 3 deletions rtengine/improcfun.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@
#include "rtengine.h"
#include "improcfun.h"
#include "curves.h"
#include "colorclip.h"
#include "gauss.h"
#include "bilateral2.h"
#include "mytime.h"
#include "iccstore.h"
#include "impulse_denoise.h"
Expand Down
1 change: 1 addition & 0 deletions rtengine/impulse_denoise.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "cieimage.h"
#include "sleef.c"
#include "opthelper.h"
#include "gauss.h"

using namespace std;

Expand Down
261 changes: 64 additions & 197 deletions rtengine/median.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,207 +16,74 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rt_math.h"

#define SORT3(a1,a2,a3,b1,b2,b3) \
{ \
if ((a1)<(a2)) { \
if ((a2)<(a3)) { \
(b1) = (a1); (b2) = (a2); (b3) = (a3); \
} \
else if ((a1)<(a3)) { \
(b1) = (a1); (b2) = (a3); (b3) = (a2); \
} \
else { \
(b1) = (a3); (b2) = (a1); (b3) = (a2); \
} \
} \
else { \
if ((a3)<(a2)) { \
(b1) = (a3); (b2) = (a2); (b3) = (a1); \
} \
else if ((a3)<(a1)) { \
(b1) = (a2); (b2) = (a3); (b3) = (a1); \
} \
else { \
(b1) = (a2); (b2) = (a1); (b3) = (a3); \
} \
} \
b2 = min(a1,a2);\
b1 = min(b2,a3);\
b3 = max(a1,a2);\
b2 = max(b2, min(b3,a3));\
b3 = max(b3,a3);\
}

#define MERGESORT(a1,a2,a3,b1,b2,b3,c1,c2,c3,c4,c5,c6) \
{\
if (a1<b1) { \
c1 = a1; \
if (a2<b1) { \
c2 = a2; \
if (a3<b1) { \
c3 = a3; c4 = b1; c5 = b2; c6 = b3;\
}\
else {\
c3 = b1;\
if (a3<b2) {\
c4 = a3; c5 = b2; c6 = b3;\
}\
else {\
c4 = b2;\
if (a3<b3) {\
c5 = a3; c6 = b3;\
}\
else {\
c5 = b3; c6 = a3;\
}\
}\
}\
}\
else {\
c2 = b1;\
if (a2<b2) {\
c3 = a2;\
if (a3<b2) {\
c4 = a3; c5 = b2; c6 = b3;\
}\
else {\
c4 = b2;\
if (a3<b3) {\
c5 = a3; c6 = b3;\
}\
else {\
c5 = b3; c6 = a3;\
}\
}\
}\
else {\
c3 = b2;\
if (a2<b3) {\
c4 = a2;\
if (a3<b3) {\
c5 = a3; c6 = b3;\
}\
else {\
c5 = b3; c6 = a3;\
}\
}\
else {\
c4 = b3; c5 = a2; c6 = a3;\
}\
}\
}\
}\
else {\
c1 = b1;\
if (a1<b2) {\
c2 = a1;\
if (a2<b2) {\
c3 = a2;\
if (a3<b2) {\
c4 = a3; c5 = b2; c6 = b3;\
}\
else {\
c4 = b2;\
if (a3<b3) {\
c5 = a3; c6 = b3;\
}\
else {\
c5 = b3; c6 = a3;\
}\
}\
}\
else {\
c3 = b2;\
if (a2<b3) {\
c4 = a2;\
if (a3<b3) {\
c5 = a3; c6 = b3;\
}\
else {\
c5 = b3; c6 = a3;\
}\
}\
else {\
c4 = b3; c5 = a2; c6 = a3;\
}\
}\
}\
else {\
c2 = b2;\
if (a1<b3) {\
c3 = a1;\
if (a2<b3) {\
c4 = a2;\
if (a3<b3) {\
c5 = a3; c6 = b3;\
}\
else {\
c5 = b3; c6 = a3;\
}\
}\
else {\
c4 = b3; c5 = a2; c6 = a3;\
}\
}\
else {\
c3 = b3; c4 = a1; c5 = a2; c6 = a3;\
}\
}\
}\
}

#define MEDIAN7(a1,a2,a3,b1,b2,b3,b4,median) \
{ \
if (a1<b1) {\
if (a2<b1) {\
if (a3<b1) \
median = b1; \
else {\
if (a3<b2) \
median = a3;\
else \
median = b2;\
}\
}\
else {\
if (a2<b2) {\
if (a3<b2) \
median = a3;\
else \
median = b2;\
}\
else {\
if (a2<b3) \
median = a2;\
else \
median = b3;\
}\
}\
}\
else {\
if (a1<b2) {\
if (a2<b2) {\
if (a3<b2) \
median = a3;\
else\
median = b2;\
}\
else {\
if (a2<b3)\
median = a2;\
else\
median = b3;\
}\
}\
else {\
if (a1<b3) {\
if (a2<b3)\
median = a2;\
else \
median = b3; \
}\
else {\
if (a1<b4) \
median = a1;\
else\
median = b4;\
} \
}\
}\
#define NETWORKSORT4OF6(s0,s1,s2,s3,s4,s5,d0,d1,d2,d3,d4,d5,temp) \
{\
d1 = min(s1,s2);\
d2 = max(s1,s2);\
d0 = min(s0,d2);\
d2 = max(s0,d2);\
temp = min(d0,d1);\
d1 = max(d0,d1);\
d0 = temp;\
d4 = min(s4,s5);\
d5 = max(s4,s5);\
temp = min(s3,d5);\
d5 = max(s3,d5);\
d3 = temp;\
temp = min(d3,d4);\
d4 = max(d3,d4);\
d3 = temp;\
d3 = max(d0,d3);\
temp = min(d1,d4);\
d4 = max(d1,d4);\
d1 = temp;\
d2 = min(d2,d5);\
temp = min(d2,d4);\
d4 = max(d2,d4);\
d2 = temp;\
temp = min(d1,d3);\
d3 = max(d1,d3);\
d1 = temp;\
temp = min(d2,d3);\
d3 = max(d2,d3);\
d2 = temp;\
}

#define MEDIAN7(s0,s1,s2,s3,s4,s5,s6,t0,t1,t2,t3,t4,t5,t6,median) \
{\
t0 = min(s0,s5);\
t5 = max(s0,s5);\
t3 = max(t0,s3);\
t0 = min(t0,s3);\
t1 = min(s1,s6);\
t6 = max(s1,s6);\
t2 = min(s2,s4);\
t4 = max(s2,s4);\
t1 = max(t0,t1);\
median = min(t3,t5);\
t5 = max(t3,t5);\
t3 = median;\
median = min(t2,t6);\
t6 = max(t2,t6);\
t2 = median;\
t3 = max(t2,t3);\
t3 = min(t3,t6);\
t4 = min(t4,t5);\
median = min(t1,t4);\
t4 = max(t1,t4);\
t1 = median;\
t3 = max(t1,t3);\
median = min(t3,t4);\
}
Loading

0 comments on commit b3f6f1c

Please sign in to comment.