私はTwainDotNetを使用して比較的単純な画像をスキャンし、最終的にはEmguCVを使用してエッジを見つけています。これが私がスキャンしたもののスクリーンショットです:
ただし、画像検出でしきい値を調整すると、まったく同じエッジが検出されますが、正しい位置ではありません(幅が広すぎます。スキャンしたものは灰色です)。このように黒い画像をスキャンすると、期待どおりのエッジが検出されます。
どちらの場合も、紫色のエッジが表示されます(実際のオブジェクトにはありません)。
私の感じでは、この紫色のエッジは、紫色の場所と一致するため、最初のエッジ検出で間違った処理を実行しますが、黒のエッジは、黒の場所と一致します(黒の強度が紫色よりも高いため)しかし、灰色の強度はそうではありません)。emguでしきい値を調整しても違いがない理由を説明できると思います。
だから、私の質問は-この紫色を取り除くために設定できる2つの設定がありますか、それともスキャナーの機能ですか(ハードウェアを指すFlickrに関するこの興味深い議論を見つけましたが、3つの異なるスキャナーで試しました( 2つの同じモデル、1つは完全に異なる)そしてそれらはすべて同じことをしますか?
画像のスキャンに使用しているコードは次のとおりです。
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);