吐温扫描去除紫色边缘

时间:2012-06-12 12:22:36

标签: c# .net twain emgucv twaindotnet

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

white/gray image

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

black image

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

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

所以,我的问题是 - 是否有一个twain设置,我可以设置删除这个紫色或它是扫描仪的一个功能(我发现有关Flickr的this有趣的讨论指向硬件,但我有尝试使用三种不同的扫描仪(两种相同的型号,一种完全不同),它们都做同样的事情)?

以下是我用于扫描图像的代码:

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);

0 个答案:

没有答案