Added new calibration algorithm.

merge-requests/1/head
Frank Zago 2003-04-24 03:17:16 +00:00
rodzic e7783dc8e3
commit 3057afd6bf
2 zmienionych plików z 38 dodań i 2 usunięć

Wyświetl plik

@ -22,11 +22,11 @@ The scanners that should work with this backend are:
.br
Primax Jewel 4800 VM356A tested
Primax Profi 19200 VM6586 tested
Primax Profi 9600 VM6575 tested
Relisys APOLLO Express 12 ? untested
Primax Profi 19200 VM6586 tested
Relisys APOLLO Express 3 VM356A tested
Relisys APOLLO Express 6 VM6565 tested
Relisys APOLLO Express 12 ? untested
Relisys AVEC II S3 VM3564 tested
Relisys AVEC Super 3 VM3575 tested
Relisys SCORPIO Pro VM6575 tested
@ -144,6 +144,11 @@ If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. E.g.,
a value of 128 requests all debug output to be printed. Smaller levels
reduce verbosity.
.TP
.B SANE_TECO2_CAL_ALGO
Either 0 or 1. Selects the algorithm for the calibration. A
value of 1 seems to give better scans on the VM3575. Feedback on it
is welcome.
.SH LIMITATIONS

Wyświetl plik

@ -206,3 +206,34 @@ calibration
TECO VM3575 reads 12 lines of calibration
TECO VM656A reads 8 lines of calibration
TECO VM6586 ??
Algorithms used (text from Alex Wulms):
The old algorithm was based on the assumption that the calibration value needs
to be an offset, to go from the value obtained during input to the average
value (0x800).
E.g., if the input value is 0x800, the calibration value must be 0x800 (0x1000
- 0x800).
Likewise, if the input value is 0x700, the calibration value must be 0x900
(0x1000 - 0x700)
And if the input value is 0x600, the calibration value must be 0xA00
The new algorithm is based on the assumption that the calibration needs to be
a multiplication factor, to compensate for the too strong or too weak pixel
in the sensor. Again, we want to obtain the average value (approximately
0x800) for every pixel read during calibration.
E.g., if the input value is 0x800, the calibration value must be 0x800
(0x800*0x800 / 0x800).
Likewise, if the input value is 0x700, the calibration value must be 0x924
(0x800*0x800 / 0x700).
And if the input value is 0x600, the calibration value must 0xAAA (0x800*0x800
/ 0x600)
Though, carefull comparison with scans done under windows has shown that the
factor is slightly different from 0x800*0x800(=0x400000) but in stead it
seems to be approximately 0x40302f (which would mean that the average value
is approximately 0x803 in stead of 0x800).
Hope this is clarifies the new algorithm.