diff --git a/stretchtoolbar.cpp b/stretchtoolbar.cpp index 1a52804..a4b6711 100644 --- a/stretchtoolbar.cpp +++ b/stretchtoolbar.cpp @@ -114,18 +114,21 @@ void StretchToolbar::stretchImage(Image *img) float max2 = 0; for(; i < ch; i++) { - double median, mad; + double median, mad, max; median = stats.m_median[i]; mad = stats.m_mad[i]; + max = stats.m_max[i]; median /= img->rawImage()->norm(); mad /= img->rawImage()->norm(); + max /= img->rawImage()->norm(); float bp = median + mad * BLACK_POINT_SIGMA * MAD_TO_SIGMA; float mid = MTF(median - bp, TARGET_BACKGROUND); m_mtfParam.blackPoint[i-o] = bp; - m_mtfParam.midPoint[i-o] = mid; - m_mtfParam.whitePoint[i-o] = 1.0f; + m_mtfParam.midPoint[i-o] = mid / max; + m_mtfParam.whitePoint[i-o] = max; bp2 += bp; mid2 += mid; + max2 = max > max2 ? max : max2; } if(ch == 1) { @@ -137,7 +140,7 @@ void StretchToolbar::stretchImage(Image *img) { m_mtfParam.blackPoint[0] = m_mtfParam.blackPoint[1] = m_mtfParam.blackPoint[2] = bp2 / ch; m_mtfParam.midPoint[0] = m_mtfParam.midPoint[1] = m_mtfParam.midPoint[2] = mid2 / ch; - m_mtfParam.whitePoint[0] = m_mtfParam.whitePoint[1] = m_mtfParam.whitePoint[2] = 1.0f; + m_mtfParam.whitePoint[0] = m_mtfParam.whitePoint[1] = m_mtfParam.whitePoint[2] = max2; m_stfSlider->setMTFParams(m_mtfParam.blackPoint[0], m_mtfParam.midPoint[0], m_mtfParam.whitePoint[0]); } else