我正在使用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);