Fix some edge cases when stretch
This commit is contained in:
+7
-4
@@ -120,12 +120,15 @@ void StretchToolbar::stretchImage(Image *img)
|
|||||||
mad = stats.m_mad[i];
|
mad = stats.m_mad[i];
|
||||||
max = stats.m_max[i];
|
max = stats.m_max[i];
|
||||||
median /= img->rawImage()->norm();
|
median /= img->rawImage()->norm();
|
||||||
|
bool a = median > 0.5 ? true : false;
|
||||||
mad /= img->rawImage()->norm();
|
mad /= img->rawImage()->norm();
|
||||||
max /= img->rawImage()->norm();
|
max = 1.0f;// /= img->rawImage()->norm();
|
||||||
float bp = median + mad * BLACK_POINT_SIGMA * MAD_TO_SIGMA;
|
float bp = a || mad == 0.0f ? 0.0f : std::clamp(median + mad * BLACK_POINT_SIGMA * MAD_TO_SIGMA, 0.0, 1.0);
|
||||||
float mid = MTF(median - bp, TARGET_BACKGROUND);
|
if(a && mad != 0.0f)
|
||||||
|
max = std::clamp(median - mad * BLACK_POINT_SIGMA * MAD_TO_SIGMA, 0.0, 1.0);
|
||||||
|
float mid = !a ? MTF(median - bp, TARGET_BACKGROUND) : MTF(TARGET_BACKGROUND, max - median);
|
||||||
m_mtfParam.blackPoint[i-o] = bp;
|
m_mtfParam.blackPoint[i-o] = bp;
|
||||||
m_mtfParam.midPoint[i-o] = mid / max;
|
m_mtfParam.midPoint[i-o] = mid;// / max;
|
||||||
m_mtfParam.whitePoint[i-o] = max;
|
m_mtfParam.whitePoint[i-o] = max;
|
||||||
bp2 += bp;
|
bp2 += bp;
|
||||||
mid2 += mid;
|
mid2 += mid;
|
||||||
|
|||||||
Reference in New Issue
Block a user