1

我正在使用Twain Dot Net扫描相对简单的图像,最终我使用Emgu CV来查找边缘。这是我扫描的东西的屏幕截图:

白色/灰色图像

但是,我调整了图像检测中的阈值,我得到了完全相同的边缘检测,但它不是正确的位置(它太宽 - 我扫描的东西是灰色的)。如果我像这样扫描黑色图像,我会检测到我期望的边缘:

黑色图像

在这两种情况下,您都可以看到紫色边缘(真实物体上不存在)。

我的感觉是,这个紫色边缘导致边缘检测对第一个边缘检测做错事,因为它匹配紫色的位置,但对于黑色它匹配黑色的位置(因为黑色的强度高于紫色但灰色的强度不是)。我认为这可以解释为什么调整 emgu 中的阈值没有任何区别。

所以,我的问题是——我可以设置一个 twain 设置来移除这个紫色,还是它是扫描仪的一个功能(我在 Flickr 上发现了这个指向硬件的有趣讨论,但我已经用三种不同的扫描仪进行了尝试(两个相同的模型,一个完全不同的)并且它们都做同样的)?

这是我用来扫描图像的代码:

var resolution = new ResolutionSettings
{
    Dpi = 2400,
    ColourSetting = ColourSetting.Colour
};

var rotation = new RotationSettings
{
    AutomaticBorderDetection = false,
    AutomaticDeskew = false,
    AutomaticRotate = false,
    FlipSideRotation = FlipRotation.FanFold
};

var areaSettings = new AreaSettings(Units.Centimeters, 
    4.0f,
    0.0f, 
    6.0f, 
    19.0f)

var twainSettings = new TwainScanSettings
{
    UseDocumentFeeder = null,
    ShowTwainUI = false,
    ShowProgressIndicatorUI = false,
    UseDuplex = false,
    Resolution = resolution,
    Area = areaSettings,
    AdditionalLight = true,
    Rotation = rotation
};

var scanner = new TwainEngine(new WinFormsWindowMessageHook(form.Handle));
scanner.SelectSource("Microtek ScanWizard EZ");
scanner.TransferImage += (tsender, targs) =>
{
    targs.Image.Save(@"c:\Users\Public\out.bmp",
        System.Drawing.Imaging.ImageFormat.MemoryBmp);
};

scanner.StartScanning(twainSettings);
4

0 回答 0