sheetfed calibration tuning

- use sensor max resolution to do led/offset/gain calibration
- use different thresholds when detecting white/black pixels in search
  strip function
- tune device flags for DP485, DP487 and XP100
merge-requests/1/head
Stphane Voltz 2009-11-16 06:34:07 +01:00
rodzic e63118298a
commit d4079557e4
4 zmienionych plików z 21 dodań i 12 usunięć

Wyświetl plik

@ -3678,6 +3678,7 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
{ {
SANE_Status status = SANE_STATUS_GOOD; SANE_Status status = SANE_STATUS_GOOD;
SANE_Bool forward = SANE_TRUE; SANE_Bool forward = SANE_TRUE;
int xres;
DBG (DBG_proc, "genesys_sheetfed_calibration: start\n"); DBG (DBG_proc, "genesys_sheetfed_calibration: start\n");
if (dev->model->cmd_set->search_strip == NULL) if (dev->model->cmd_set->search_strip == NULL)
@ -3697,13 +3698,17 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
return status; return status;
} }
int yres;
DBG (DBG_info, "genesys_flatbed_calibration\n"); DBG (DBG_info, "genesys_flatbed_calibration\n");
yres = dev->sensor.optical_res; /* led, offset and gain calibration are influenced by scan
if (dev->settings.yres <= dev->sensor.optical_res / 2) * settings. So we set it to sensor resolution */
yres /= 2; xres = dev->sensor.optical_res;
dev->settings.xres = dev->sensor.optical_res;
/* XP200 needs to calibrate a full and half sensor's resolution */
if (dev->model->ccd_type == CIS_XP200
&& dev->settings.xres <= dev->sensor.optical_res / 2)
dev->settings.xres /= 2;
/* the afe needs to sends valid data even before calibration */ /* the afe needs to sends valid data even before calibration */
@ -3744,7 +3749,7 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
/* since all the registers are set up correctly, just use them */ /* since all the registers are set up correctly, just use them */
status = dev->model->cmd_set->coarse_gain_calibration (dev, yres); status = dev->model->cmd_set->coarse_gain_calibration (dev, xres);
if (status != SANE_STATUS_GOOD) if (status != SANE_STATUS_GOOD)
{ {
DBG (DBG_error, DBG (DBG_error,
@ -3880,6 +3885,9 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
sane_strstatus (status)); sane_strstatus (status));
return status; return status;
} }
/* resotre settings */
dev->settings.xres = xres;
DBG (DBG_proc, "genesys_sheetfed_calibration: end\n"); DBG (DBG_proc, "genesys_sheetfed_calibration: end\n");
return SANE_STATUS_GOOD; return SANE_STATUS_GOOD;
} }

Wyświetl plik

@ -1456,9 +1456,10 @@ static Genesys_Model visioneer_xp100_r3_model = {
MOTOR_ROADWARRIOR, MOTOR_ROADWARRIOR,
GENESYS_FLAG_LAZY_INIT /* Which flags are needed for this scanner? */ GENESYS_FLAG_LAZY_INIT /* Which flags are needed for this scanner? */
| GENESYS_FLAG_SKIP_WARMUP | GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_NO_CALIBRATION, | GENESYS_FLAG_OFFSET_CALIBRATION
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW, | GENESYS_FLAG_DARK_CALIBRATION,
300, GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
400 400
}; };
@ -1560,7 +1561,7 @@ static Genesys_Model syscan_docketport_485_model = {
| GENESYS_FLAG_SKIP_WARMUP | GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_CALIBRATION, | GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW, GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100, 100,
400 400
}; };
@ -1613,7 +1614,7 @@ static Genesys_Model dct_docketport_487_model = {
| GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_CALIBRATION | GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_UNTESTED, | GENESYS_FLAG_UNTESTED,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW, GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100, 100,
400 400
}; };

Wyświetl plik

@ -5040,7 +5040,7 @@ gl646_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
for (x = 0; x < settings.pixels; x++) for (x = 0; x < settings.pixels; x++)
{ {
/* when searching for black, detect white pixels */ /* when searching for black, detect white pixels */
if (black && data[y * settings.pixels + x] > 60) if (black && data[y * settings.pixels + x] > 90)
{ {
count++; count++;
} }

Wyświetl plik

@ -6073,7 +6073,7 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
for (x = 0; x < pixels; x++) for (x = 0; x < pixels; x++)
{ {
/* when searching for black, detect white pixels */ /* when searching for black, detect white pixels */
if (black && data[y * pixels + x] > 60) if (black && data[y * pixels + x] > 90)
{ {
count++; count++;
} }