1

私は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);
4

0 に答える 0