我正在使用Twain Dot Net来扫描相对简单的图像,最终我使用Emgu CV来查找边缘。这是我扫描的内容的屏幕截图:
然而,我调整了图像检测中的阈值,我得到了完全相同的边缘,但它不是正确的位置(它太宽了 - 我扫描的东西是灰色的)。如果我像这样扫描一个黑色的图像,我会检测到我期望的边缘:
在这两种情况下,您都可以看到紫色边缘(真实物体上没有)。
我的感觉是,这个紫色边缘导致边缘检测对第一个做错了,因为它匹配紫色的位置,但是黑色匹配黑色的位置(因为黑色的强度是高于紫色,但灰色的强度不是)。我想这可以解释为什么调整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);