Add optimized median25 and kill old macros (#3346)
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#include "mytime.h"
|
||||
#include "sleef.c"
|
||||
#include "opthelper.h"
|
||||
#include "median.h"
|
||||
#include "EdgePreservingDecomposition.h"
|
||||
|
||||
#ifdef _OPENMP
|
||||
@@ -50,26 +51,6 @@
|
||||
#define fTS ((TS/2+1)) // second dimension of Fourier tiles
|
||||
#define blkrad 1 // radius of block averaging
|
||||
|
||||
#define PIX_SORT(a,b) { if ((a)>(b)) {temp=(a);(a)=(b);(b)=temp;} }
|
||||
|
||||
#define med3(a0,a1,a2,a3,a4,a5,a6,a7,a8,median) { \
|
||||
pp[0]=a0; pp[1]=a1; pp[2]=a2; pp[3]=a3; pp[4]=a4; pp[5]=a5; pp[6]=a6; pp[7]=a7; pp[8]=a8; \
|
||||
PIX_SORT(pp[1],pp[2]); PIX_SORT(pp[4],pp[5]); PIX_SORT(pp[7],pp[8]); \
|
||||
PIX_SORT(pp[0],pp[1]); PIX_SORT(pp[3],pp[4]); PIX_SORT(pp[6],pp[7]); \
|
||||
PIX_SORT(pp[1],pp[2]); PIX_SORT(pp[4],pp[5]); PIX_SORT(pp[7],pp[8]); \
|
||||
PIX_SORT(pp[0],pp[3]); PIX_SORT(pp[5],pp[8]); PIX_SORT(pp[4],pp[7]); \
|
||||
PIX_SORT(pp[3],pp[6]); PIX_SORT(pp[1],pp[4]); PIX_SORT(pp[2],pp[5]); \
|
||||
PIX_SORT(pp[4],pp[7]); PIX_SORT(pp[4],pp[2]); PIX_SORT(pp[6],pp[4]); \
|
||||
PIX_SORT(pp[4],pp[2]); median=pp[4];} //pp4 = median
|
||||
|
||||
|
||||
#define med2(a0,a1,a2,a3,a4,median) { \
|
||||
pp[0]=a0; pp[1]=a1; pp[2]=a2; pp[3]=a3; pp[4]=a4; \
|
||||
PIX_SORT(pp[0],pp[1]) ; PIX_SORT(pp[3],pp[4]) ; PIX_SORT(pp[0],pp[3]) ;\
|
||||
PIX_SORT(pp[1],pp[4]) ; PIX_SORT(pp[1],pp[2]) ; PIX_SORT(pp[2],pp[3]) ;\
|
||||
PIX_SORT(pp[1],pp[2]) ; median=pp[2] ;}
|
||||
|
||||
|
||||
#define epsilon 0.001f/(TS*TS) //tolerance
|
||||
|
||||
|
||||
@@ -827,11 +808,9 @@ SSEFUNCTION void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int
|
||||
#endif
|
||||
|
||||
for (int i = 1; i < hei - 1; i++) {
|
||||
float pp[9], temp;
|
||||
|
||||
for (int j = 1; j < wid - 1; j++) {
|
||||
if((varhue[i][j] < -1.3f && varhue[i][j] > - 2.5f) && (varchro[i][j] > 15.f && varchro[i][j] < 55.f) && labco->L[i][j] > 6000.f) { //blue sky + med3x3 ==> after for more effect use denoise
|
||||
med3(labco->L[i][j] , labco->L[i - 1][j], labco->L[i + 1][j] , labco->L[i][j + 1], labco->L[i][j - 1], labco->L[i - 1][j - 1], labco->L[i - 1][j + 1], labco->L[i + 1][j - 1], labco->L[i + 1][j + 1], tmL[i][j]); //3x3
|
||||
tmL[i][j] = median(labco->L[i][j] , labco->L[i - 1][j], labco->L[i + 1][j] , labco->L[i][j + 1], labco->L[i][j - 1], labco->L[i - 1][j - 1], labco->L[i - 1][j + 1], labco->L[i + 1][j - 1], labco->L[i + 1][j + 1]); //3x3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user