Author: post
Date: 2010-05-27 14:36:49 +0200 (Thu, 27 May 2010)
New Revision: 238

Modified:
   RawSpeed/RawImage.cpp
Log:
Use larger border when estimating black/white, and check result.

Modified: RawSpeed/RawImage.cpp
===================================================================
--- RawSpeed/RawImage.cpp       2010-05-27 11:41:20 UTC (rev 237)
+++ RawSpeed/RawImage.cpp       2010-05-27 12:36:49 UTC (rev 238)
@@ -117,13 +117,14 @@
 }
 
 void RawImageData::scaleBlackWhite() {
-  int gw = (dim.x - 20) * cpp;
+  const int skipBorder = 100;
+  int gw = (dim.x - skipBorder*2) * cpp;
   if (blackLevel < 0 || whitePoint == 65536) {  // Estimate
     int b = 65536;
     int m = 0;
-    for (int row = 10;row < (dim.y - 10);row++) {
-      ushort16 *pixel = (ushort16*)getData(10, row);
-      for (int col = 10 ; col < gw ; col++) {
+    for (int row = skipBorder;row < (dim.y - skipBorder);row++) {
+      ushort16 *pixel = (ushort16*)getData(skipBorder, row);
+      for (int col = skipBorder ; col < gw ; col++) {
         b = MIN(*pixel, b);
         m = MAX(*pixel, m);
         pixel++;
@@ -135,6 +136,12 @@
       whitePoint = m;
     printf("Estimated black:%d, Estimated white: %d\n", blackLevel, 
whitePoint);
   }
+
+  if (whitePoint <= blackLevel) {
+    printf("WARNING: RawImageData::scaleBlackWhite - Unable to estimate 
Black/White level, skipping scaling.\n");
+    return;
+  }
+
   float f = 65535.0f / (float)(whitePoint - blackLevel);
   scaleValues(f);
 }


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to