Better stretch non full range images like CR2

This commit is contained in:
2023-11-15 10:12:55 +01:00
parent 8e3c1b35db
commit 35d5934227
+7 -4
View File
@@ -114,18 +114,21 @@ void StretchToolbar::stretchImage(Image *img)
float max2 = 0; float max2 = 0;
for(; i < ch; i++) for(; i < ch; i++)
{ {
double median, mad; double median, mad, max;
median = stats.m_median[i]; median = stats.m_median[i];
mad = stats.m_mad[i]; mad = stats.m_mad[i];
max = stats.m_max[i];
median /= img->rawImage()->norm(); median /= img->rawImage()->norm();
mad /= img->rawImage()->norm(); mad /= img->rawImage()->norm();
max /= img->rawImage()->norm();
float bp = median + mad * BLACK_POINT_SIGMA * MAD_TO_SIGMA; float bp = median + mad * BLACK_POINT_SIGMA * MAD_TO_SIGMA;
float mid = MTF(median - bp, TARGET_BACKGROUND); float mid = MTF(median - bp, TARGET_BACKGROUND);
m_mtfParam.blackPoint[i-o] = bp; m_mtfParam.blackPoint[i-o] = bp;
m_mtfParam.midPoint[i-o] = mid; m_mtfParam.midPoint[i-o] = mid / max;
m_mtfParam.whitePoint[i-o] = 1.0f; m_mtfParam.whitePoint[i-o] = max;
bp2 += bp; bp2 += bp;
mid2 += mid; mid2 += mid;
max2 = max > max2 ? max : max2;
} }
if(ch == 1) 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.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.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]); m_stfSlider->setMTFParams(m_mtfParam.blackPoint[0], m_mtfParam.midPoint[0], m_mtfParam.whitePoint[0]);
} }
else else