How to remove gray background from scanned image
<p>I wrote a small Java SANE-client for Windows using <strong>jfreesane</strong> library and it worked well for some time but yesterday I found a problem with scanner <strong>CanoScan LiDE 60</strong> - when using "grayscale" mode the scanned image has gray background and I don't know how to get rid of it. Here's what I'm talking about:</p>

<p><a href="https://i.stack.imgur.com/9uaYQ.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9uaYQ.jpg" alt="enter image description here"></a></p>

<p>I ran into this problem with some other scanners and solved it by tuning the <strong>contrast</strong> parameter, however CanoScan LiDE 60 doesn't have one. Here is the full list of options from <em>"scanimage -A"</em> output (I tried all that relates to color except <strong>gamma-table</strong>):</p>

<pre><code>All options specific to device `genesys:libusb:003:002':
  Scan Mode:
    --mode Color|Gray|Lineart [Gray]
        Selects the scan mode (e.g., lineart, monochrome, or color).
    --source Flatbed|Transparency Adapter [inactive]
        Selects the scan source (such as a document-feeder).
    --preview[=(yes|no)] [no]
        Request a preview-quality scan.
    --depth 8|16 [8]
        Number of bits per sample, typical values are 1 for "line-art" and 8
        for multibit scans.
    --resolution 1200|600|300|150|75dpi [75]
        Sets the resolution of the scanned image.
  Geometry:
    -l 0..218mm [0]
        Top-left x position of scan area.
    -t 0..299mm [0]
        Top-left y position of scan area.
    -x 0..218mm [218]
        Width of scan-area.
    -y 0..299mm [299]
        Height of scan-area.
  Enhancement:
    --custom-gamma[=(yes|no)] [no]
        Determines whether a builtin or a custom gamma-table should be used.
    --gamma-table 0..65535,... [inactive]
        Gamma-correction table.  In color mode this option equally affects the
        red, green, and blue channels simultaneously (i.e., it is an intensity
        gamma table).
    --red-gamma-table 0..65535,... [inactive]
        Gamma-correction table for the red band.
    --green-gamma-table 0..65535,... [inactive]
        Gamma-correction table for the green band.
    --blue-gamma-table 0..65535,... [inactive]
        Gamma-correction table for the blue band.
    --swdeskew[=(yes|no)] [no]
        Request backend to rotate skewed pages digitally
    --swcrop[=(yes|no)] [no]
        Request backend to remove border from pages digitally
    --swdespeck[=(yes|no)] [no]
        Request backend to remove lone dots digitally
    --despeck 1..9 (in steps of 1) [1]
        Maximum diameter of lone dots to remove from scan
    --swskip 0..100% (in steps of 1) [0]
        Request driver to discard pages with low numbers of dark pixels
    --swderotate[=(yes|no)] [no]
        Request driver to detect and correct 90 degree image rotation
  Extras:
    --lamp-off-time 0..60 [15]
        The lamp will be turned off after the given time (in minutes). A value
        of 0 means, that the lamp won't be turned off.
    --lamp-off-scan[=(yes|no)] [no]
        The lamp will be turned off during scan.
    --threshold 0..100% (in steps of 1) [50]
        Select minimum-brightness to get a white point
    --threshold-curve 0..127 (in steps of 1) [50]
        Dynamic threshold curve, from light to dark, normally 50-65
    --disable-dynamic-lineart[=(yes|no)] [no]
        Disable use of a software adaptive algorithm to generate lineart
        relying instead on hardware lineart.
    --disable-interpolation[=(yes|no)] [no]
        When using high resolutions where the horizontal resolution is smaller
        than the vertical resolution this disables horizontal interpolation.
    --color-filter Red|Green|Blue|None [None]
        When using gray or lineart this option selects the used color.
  Sensors:
  Buttons:
    --clear-calibration
        Clear calibration cache
</code></pre>

<p>And here's an interesting thing:  <strong>Simple Scan</strong> (Linux scanning program) somehow manages to remove gray from image with this scanner:</p>

<p><a href="https://i.stack.imgur.com/huphn.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/huphn.jpg" alt="enter image description here"></a></p>

<p>I'm not sure if it uses some post-scan processing or if it knows how to tell the scanner about contrast. If it's the former, are there any Java libraries that can remove this gray noise?</p>