Improvment to softradius clarity
This commit is contained in:
@@ -1046,7 +1046,41 @@ void Crop::update(int todo)
|
|||||||
WaveParams.expedge = proedge;
|
WaveParams.expedge = proedge;
|
||||||
WaveParams.expfinal = profin;
|
WaveParams.expfinal = profin;
|
||||||
WaveParams.exptoning = proton;
|
WaveParams.exptoning = proton;
|
||||||
WaveParams.expnoise = pronois;
|
WaveParams.expnoise = pronois;
|
||||||
|
if (WaveParams.softrad > 0.f) {
|
||||||
|
array2D<float> ble(labnCrop->W, labnCrop->H);
|
||||||
|
array2D<float> guid(labnCrop->W, labnCrop->H);
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < labnCrop->H ; ir++)
|
||||||
|
for (int jr = 0; jr < labnCrop->W; jr++) {
|
||||||
|
ble[ir][jr] = (labnCrop->L[ir][jr]) / 32768.f;
|
||||||
|
guid[ir][jr] = provradius->L[ir][jr] / 32768.f;
|
||||||
|
}
|
||||||
|
double epsilmax = 0.0001;
|
||||||
|
double epsilmin = 0.00001;
|
||||||
|
double aepsil = (epsilmax - epsilmin) / 90.f;
|
||||||
|
double bepsil = epsilmax - 100.f * aepsil;
|
||||||
|
double epsil = aepsil * WaveParams.softrad + bepsil;
|
||||||
|
|
||||||
|
float blur = 10.f / skip * (0.0001f + 0.8f * WaveParams.softrad);
|
||||||
|
rtengine::guidedFilter(guid, ble, ble, blur, epsil, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < labnCrop->H; ir++)
|
||||||
|
for (int jr = 0; jr < labnCrop->W; jr++) {
|
||||||
|
labnCrop->L[ir][jr] = 32768.f * ble[ir][jr];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1082,41 +1116,6 @@ void Crop::update(int todo)
|
|||||||
|
|
||||||
delete unshar;
|
delete unshar;
|
||||||
unshar = NULL;
|
unshar = NULL;
|
||||||
|
|
||||||
if (WaveParams.softrad > 0.f) {
|
|
||||||
array2D<float> ble(labnCrop->W, labnCrop->H);
|
|
||||||
array2D<float> guid(labnCrop->W, labnCrop->H);
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel for
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int ir = 0; ir < labnCrop->H ; ir++)
|
|
||||||
for (int jr = 0; jr < labnCrop->W; jr++) {
|
|
||||||
ble[ir][jr] = (labnCrop->L[ir][jr] - provradius->L[ir][jr]) / 32768.f;
|
|
||||||
guid[ir][jr] = provradius->L[ir][jr] / 32768.f;
|
|
||||||
}
|
|
||||||
double epsilmax = 0.001;
|
|
||||||
double epsilmin = 0.0001;
|
|
||||||
double aepsil = (epsilmax - epsilmin) / 90.f;
|
|
||||||
double bepsil = epsilmax - 100.f * aepsil;
|
|
||||||
double epsil = aepsil * WaveParams.softrad + bepsil;
|
|
||||||
|
|
||||||
float blur = 10.f / skip * (0.001f + 0.8f * WaveParams.softrad);
|
|
||||||
rtengine::guidedFilter(guid, ble, ble, blur, epsil, false);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel for
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int ir = 0; ir < labnCrop->H; ir++)
|
|
||||||
for (int jr = 0; jr < labnCrop->W; jr++) {
|
|
||||||
labnCrop->L[ir][jr] = provradius->L[ir][jr] + 32768.f * ble[ir][jr];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
delete provradius;
|
delete provradius;
|
||||||
provradius = NULL;
|
provradius = NULL;
|
||||||
|
|||||||
@@ -911,7 +911,42 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
WaveParams.expedge = proedge;
|
WaveParams.expedge = proedge;
|
||||||
WaveParams.expfinal = profin;
|
WaveParams.expfinal = profin;
|
||||||
WaveParams.exptoning = proton;
|
WaveParams.exptoning = proton;
|
||||||
WaveParams.expnoise = pronois;
|
WaveParams.expnoise = pronois;
|
||||||
|
|
||||||
|
if (WaveParams.softrad > 0.f) {
|
||||||
|
array2D<float> ble(pW, pH);
|
||||||
|
array2D<float> guid(pW, pH);
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < pH; ir++)
|
||||||
|
for (int jr = 0; jr < pW; jr++) {
|
||||||
|
ble[ir][jr] = (nprevl->L[ir][jr]) / 32768.f;
|
||||||
|
guid[ir][jr] = provradius->L[ir][jr] / 32768.f;
|
||||||
|
}
|
||||||
|
double epsilmax = 0.0001;
|
||||||
|
double epsilmin = 0.00001;
|
||||||
|
double aepsil = (epsilmax - epsilmin) / 90.f;
|
||||||
|
double bepsil = epsilmax - 100.f * aepsil;
|
||||||
|
double epsil = aepsil * WaveParams.softrad + bepsil;
|
||||||
|
|
||||||
|
float blur = 10.f / scale * (0.0001f + 0.8f * WaveParams.softrad);
|
||||||
|
// rtengine::guidedFilter(guid, ble, ble, blur, 0.001, multiTh);
|
||||||
|
rtengine::guidedFilter(guid, ble, ble, blur, epsil, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < pH; ir++)
|
||||||
|
for (int jr = 0; jr < pW; jr++) {
|
||||||
|
nprevl->L[ir][jr] = 32768.f * ble[ir][jr];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
||||||
@@ -920,6 +955,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
float mL0;
|
float mL0;
|
||||||
float mC0;
|
float mC0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ((WaveParams.CLmethod == "one" || WaveParams.CLmethod == "inf") && WaveParams.Backmethod == "black") {
|
if ((WaveParams.CLmethod == "one" || WaveParams.CLmethod == "inf") && WaveParams.Backmethod == "black") {
|
||||||
mL0 = mC0 = 0.f;
|
mL0 = mC0 = 0.f;
|
||||||
mL = -mL;
|
mL = -mL;
|
||||||
@@ -945,7 +982,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
|
|
||||||
delete unshar;
|
delete unshar;
|
||||||
unshar = NULL;
|
unshar = NULL;
|
||||||
|
/*
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
array2D<float> ble(pW, pH);
|
array2D<float> ble(pW, pH);
|
||||||
array2D<float> guid(pW, pH);
|
array2D<float> guid(pW, pH);
|
||||||
@@ -979,7 +1016,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
nprevl->L[ir][jr] = provradius->L[ir][jr] + 32768.f * ble[ir][jr];
|
nprevl->L[ir][jr] = provradius->L[ir][jr] + 32768.f * ble[ir][jr];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
delete provradius;
|
delete provradius;
|
||||||
provradius = NULL;
|
provradius = NULL;
|
||||||
@@ -987,7 +1024,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ipf.softLight(nprevl);
|
ipf.softLight(nprevl);
|
||||||
|
|||||||
@@ -1177,7 +1177,53 @@ private:
|
|||||||
WaveParams.expedge = proedge;
|
WaveParams.expedge = proedge;
|
||||||
WaveParams.expfinal = profin;
|
WaveParams.expfinal = profin;
|
||||||
WaveParams.exptoning = proton;
|
WaveParams.exptoning = proton;
|
||||||
WaveParams.expnoise = pronois;
|
WaveParams.expnoise = pronois;
|
||||||
|
|
||||||
|
if (WaveParams.softrad > 0.f) {
|
||||||
|
array2D<float> ble(fw, fh);
|
||||||
|
array2D<float> guid(fw, fh);
|
||||||
|
/*
|
||||||
|
#ifdef _OPENMP
|
||||||
|
const int numThreads = omp_get_max_threads();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool multiTh = false;
|
||||||
|
|
||||||
|
if (numThreads > 1) {
|
||||||
|
multiTh = true;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < fh; ir++)
|
||||||
|
for (int jr = 0; jr < fw; jr++) {
|
||||||
|
ble[ir][jr] = (labView->L[ir][jr]) / 32768.f;
|
||||||
|
guid[ir][jr] = provradius->L[ir][jr] / 32768.f;
|
||||||
|
}
|
||||||
|
double epsilmax = 0.0001;
|
||||||
|
double epsilmin = 0.00001;
|
||||||
|
double aepsil = (epsilmax - epsilmin) / 90.f;
|
||||||
|
double bepsil = epsilmax - 100.f * aepsil;
|
||||||
|
double epsil = aepsil * WaveParams.softrad + bepsil;
|
||||||
|
|
||||||
|
float blur = 10.f / 1 * (0.0001f + 0.8f * WaveParams.softrad);
|
||||||
|
// rtengine::guidedFilter(guid, ble, ble, blur, 0.001, multiTh);
|
||||||
|
rtengine::guidedFilter(guid, ble, ble, blur, epsil, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < fh; ir++)
|
||||||
|
for (int jr = 0; jr < fw; jr++) {
|
||||||
|
labView->L[ir][jr] = 32768.f * ble[ir][jr];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
||||||
@@ -1212,51 +1258,6 @@ private:
|
|||||||
delete unshar;
|
delete unshar;
|
||||||
unshar = NULL;
|
unshar = NULL;
|
||||||
|
|
||||||
if (WaveParams.softrad > 0.f) {
|
|
||||||
array2D<float> ble(fw, fh);
|
|
||||||
array2D<float> guid(fw, fh);
|
|
||||||
/*
|
|
||||||
#ifdef _OPENMP
|
|
||||||
const int numThreads = omp_get_max_threads();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool multiTh = false;
|
|
||||||
|
|
||||||
if (numThreads > 1) {
|
|
||||||
multiTh = true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel for
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int ir = 0; ir < fh; ir++)
|
|
||||||
for (int jr = 0; jr < fw; jr++) {
|
|
||||||
ble[ir][jr] = (labView->L[ir][jr] - provradius->L[ir][jr]) / 32768.f;
|
|
||||||
guid[ir][jr] = provradius->L[ir][jr] / 32768.f;
|
|
||||||
}
|
|
||||||
double epsilmax = 0.001;
|
|
||||||
double epsilmin = 0.0001;
|
|
||||||
double aepsil = (epsilmax - epsilmin) / 90.f;
|
|
||||||
double bepsil = epsilmax - 100.f * aepsil;
|
|
||||||
double epsil = aepsil * WaveParams.softrad + bepsil;
|
|
||||||
|
|
||||||
float blur = 10.f / 1 * (0.001f + 0.8f * WaveParams.softrad);
|
|
||||||
// rtengine::guidedFilter(guid, ble, ble, blur, 0.001, multiTh);
|
|
||||||
rtengine::guidedFilter(guid, ble, ble, blur, epsil, false);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel for
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int ir = 0; ir < fh; ir++)
|
|
||||||
for (int jr = 0; jr < fw; jr++) {
|
|
||||||
labView->L[ir][jr] = provradius->L[ir][jr] + 32768.f * ble[ir][jr];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
delete provradius;
|
delete provradius;
|
||||||
provradius = NULL;
|
provradius = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user