Твен, сканирующий удаление фиолетовых краев
Я использую Twain Dot Net для сканирования относительно простого изображения, и в конечном итоге я использую Emgu CV, чтобы найти края. Вот скриншот того, что я отсканировал:
Однако я настраиваю пороговые значения при обнаружении изображения, и я получаю точно такой же обнаруженный край, но это не правильная позиция (она слишком широкая - отсканированное изображение серого цвета). Если я отсканирую черное изображение вот так, я обнаружу край, который я ожидаю:
В обоих случаях вы можете увидеть фиолетовый край (которого нет на реальном объекте).
Мне кажется, что этот пурпурный край заставляет функцию обнаружения краев делать неправильную вещь для первого, потому что он совпадает с тем, где фиолетовый, а с черным - с черным (потому что интенсивность черного выше, чем фиолетовый но интенсивности серого нет). Я думаю, что это объясняет, почему настройка пороговых значений в emgu не имеет значения.
Итак, мой вопрос - есть ли двойная настройка, которую я могу установить, чтобы удалить этот фиолетовый или это функция сканера (я нашел это интересное обсуждение 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);