Создание программы для работы со сканером
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
Таврический национальный университет
им. В.И.Вернадского
Экономико-гуманитарный факультет
Кафедра информатики и математики
КУРСОВАЯ РАБОТА
На тему: Создание программы для работы со сканером
Выполнил:
Иванов Евгений Андреевич
Научный руководитель
ст.пр. Меркуш А.А.
Мелитополь, 2008
содержание
Введение
Раздел 1 ПРИНЦИПЫ ПОЛУЧЕНИЯ ЭЛЕКТРОННЫХ КОПИЙ
1.1 История создания сканера
1.2 Принцип действия
1.3 Виды сканеров
1.3.1 Планшетные
1.3.2 Ручные сканеры
1.3.3 Барабанные сканеры
1.3.4 Листопротяжные сканеры
1.3.5 Планетарные сканеры
1.3.6 Книжные сканеры
1.4 Характеристики сканеров
1.4.1 Разрешение
1.4.2 Интерполированное разрешение
1.4.3 Скорость работы
1.4.4 Глубина цвета
Раздел 2 ВЫБОР СРЕДЫ ПРОГРАМИРОВАНИЯ
2.1. Визуальное программирование
2.2. Среда программирования Delphi
2.3. Достоинства языка C++
2.4. Недостатки языка C++
Раздел 3 ОПИСАНИЕ РАЗРАБОТАННОЙ ПРОГРАММЫ
3.1 Описание структуры программы
3.2 Инструкция пользователю
3.3.1 Использование TWAIN
3.3.2 Структура программы и используемые функции
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
ВВЕДЕНИЕ
Для автоматического преобразования графического изображения на бумаге или слайде в электронное изображение и ввода его в компьютер используется специальное устройство называемое сканером.
Сканер (англ. scanner) — устройство, которое, анализируя какой-либо объект (изображение, текст…) создаёт цифровую копию изображения объекта. Процесс получения этой копии называется сканированием.
Современные модели профессиональных сканеров позволяют значительно повысить сохранность документов в архивах, благодаря очень деликатному обращению с оригиналами. Современные технологии, используемые при сканировании книг и сшитых документов, позволяют добиваться высоких результатов.
Таким образом, для работы с данными устройствами создаются программы, которые упрощают использование данных приспособлений.
Темой данной курсовой работы является разработка программы для работы со сканером.
Целью данной курсовой работы является разработка программы для сканирования изображения и текста.
Предмет исследования – методы автоматического преобразования графического изображения на бумаге или слайде в электронное изображение и ввода его в компьютер.
Объект исследования - разработка программа для визуального ввода данных в компьютер с помощью сканера.
РАЗДЕЛ 1
ПРИНЦИПЫ ПОЛУЧЕНИЯ ЭЛЕКТРОННЫХ КОПИЙ ДОКУМЕНТОВ
1.1. История создания сканера
В 1857 году флорентийский аббат Джованни Казелли (Giovanni Caselli) изобрёл прибор для передачи изображения на расстояние, названный впоследствии пантелеграф. Передаваемая картинка наносилась на барабан токопроводящими чернилами и считывалась с помощью иглы.
В 1902 году, немецким физиком Артуром Корном (Arthur Korn) была запатентована технология фотоэлектрического сканирования, получившая впоследствии название телефакс. Передаваемое изображение закреплялось на прозрачном вращающемся барабане, луч света от лампы, перемещающейся вдоль оси барабана, проходил сквозь оригинал и через расположенные на оси барабана призму и объектив попадал на селеновый фотоприёмник. Эта технология до сих пор применяется в барабанных сканерах.
В дальнейшем, с развитием полупроводников, усовершенствовался фотоприёмник, был изобретён планшетный способ сканирования, но сам принцип оцифровки изображения остается почти неизменным.
1.2 Принцип действия сканера
Рассмотрим принцип действия планшетных сканеров, как наиболее распространенных моделей. Сканируемый объект кладется на стекло планшета сканируемой поверхностью вниз. Под стеклом располагается подвижная лампа, движение которой регулируется шаговым двигателем.
Рис. 1.2.1 Схема работы планшетного сканера
Свет, отраженный от объекта, через систему зеркал попадает на чувствительную матрицу (англ. CCD — Couple-Charged Device), далее на АЦП и передается в компьютер. За каждый шаг двигателя сканируется полоска объекта, которые потом объединяются программным обеспечением в общее изображение.
Изображение всегда сканируется в формат RAW — а затем конвертируется в обычный графический формат с применением текущих настроек яркости, контрастности, и т. д. Эта конвертация осуществляется либо в самом сканере, либо в компьютере — в зависимости от модели конкретного сканера. На параметры и качество RAW-данных влияют такие аппаратные настройки сканера, как время экспозиции матрицы, уровни калибровки белого и чёрного, и т. п.
Все бытовые сканеры содержат собственные микропроцессоры, иногда это совмещённые с АЦП микропроцессоры, а иногда это микропроцессоры общего вида.
1.3 Виды сканеров.
1.3.1 Планшетные сканеры
Планшетные — наиболее распространённый вид сканеров, поскольку обеспечивает максимальное удобство для пользователя — высокое качество и приемлемую скорость сканирования. Представляет собой планшет, внутри которого под прозрачным стеклом расположен механизм сканирования.
1.3.2 Ручные сканеры
Ручные — в них отсутствует двигатель, следовательно, объект приходится сканировать пользователю вручную, единственным его плюсом является дешевизна и мобильность, при этом он имеет массу недостатков — низкое разрешение, малую скорость работы, узкая полоса сканирования, возможны перекосы изображения, поскольку пользователю будет трудно перемещать сканер с постоянной скоростью.
1.3.3 Барабанные сканеры
Барабанные сканеры — применяются в полиграфии, имеют большое разрешение (около 10 тысяч точек на дюйм). Оригинал располагается на внутренней или внешней стенке прозрачного цилиндра (барабана).
1.3.4 Листопротяжные сканеры
Листопротяжные — лист бумаги вставляется в щель и протягивается по направляющим роликам внутри сканера мимо лампы. Имеет меньшие размеры, по сравнению с планшетным, однако может сканировать только отдельные листы, что ограничивает его применение в основном офисами компаний. Многие модели имеют устройство автоматической подачи, что позволяет быстро сканировать большое количество документов.
1.3.5 Планетарные сканеры
Планетарные сканеры — применяются для сканирования книг или легко повреждающихся документов. При сканировании нет контакта со сканируемым объектом (как в планшетных сканерах).
1.3.6 Книжные сканеры
Книжные сканеры - предназначены для сканирования брошюрованных документов. Сканирование производится лицевой стороной вверх - таким образом, Ваши действия по сканированию неотличимы от перелистывания страниц при обычном чтении. Это предотвращает их повреждение и позволяет пользователю видеть документ в процессе сканирования. Забудьте о монотонной работе по книжному сканированию, теперь библиотеки, архивы, станции по сканированию смогут вздохнуть свободно - появились системы сканирования книг, которые затрачивают на сканирование одного разворота не более секунды. Это уменьшает время при сканировании книг и позволяет потратить его более эффективно. Благодаря современным книжным сканерам, вы можете переводить в электронный вид десятки книг и папок с документами за смену, а при подключении внешнего принтера - создавать качественные бумажные копии объемных оригиналов. Теперь, где стояло несколько книжных сканеров - можно поставить один без потери производительности. Использование в книжных сканерах моторизированной колыбели и ножной педали для управления позволяет облегчить работу оператора. Программное обеспечение, используемое в книжных сканерах позволяет устранять дефекты, сглаживать искажения, редактировать полученные отсканированные страницы. Книжные сканеры обладают уникальной функцией "устранения перегиба" книги, которая обеспечивает отличное качество отсканированного (или напечатанного) изображения.
Книжные сканеры с V-образной колыбелью на основе цифровых фотоаппаратов. Являются подвидом планетарных сканеров, однако имеют ряд отличий, среди которых - V-образная колыбель, позволяющая сканировать книгу не раскрывая ее полностью, в режиме бережного сканирования, поэтому часто используется библиотеками. Прижимное стекло, входящее в состав конструкции, обеспечивает выпрямление страниц книги, и, следовательно, изображения без искажений.
1.4 Характеристики сканеров:
1.4.1 Разрешение.
Оптическое разрешение. Разрешение измеряется в точках на дюйм (англ. Dots per inch — dpi). Является основной характеристикой сканера. Сканер снимает изображение не целиком, а по строчкам. По вертикали планшетного сканера движется полоска светочувствительных элементов и снимает по точкам изображение строку за строкой. Чем больше светочувствительных элементов у сканера, тем больше точек он может снять с каждой горизонтальной полосы изображения. Это и называется оптическим разрешением. Оно определяется количеством светочувствительных элементов (фотодатчиков), приходящихся на дюйм горизонтали сканируемого изображения. Обычно его считают по количеству точек на дюйм — dpi (dots per inch). Сегодня считается нормой уровень разрешение не менее 600 dpi. Увеличивать разрешение еще дальше — значит, применять более дорогую оптику, более дорогие светочувствительные элементы, а также многократно затягивать время сканирования. Для обработки слайдов необходимо более высокое разрешение: не менее 1200 dpi.
Cледует отметить, что разрешение, о котором сказано выше называется оптическим, или физическим, или реальным. Оно описывает количество точек на дюйм, которые сканер в самом деле получает с объекта в процессе работы. Однако создаваемый сканером файл может оказаться и более высокого разрешения. Это разрешение, полученное при помощи математической обработки изображения называется уже интерполированным. Не все сканеры выполняют интерполяцию и, как правило, при сравнении сканеров сравнивают именно оптическое разрешение, так как именно от него более всего зависит качество изображения.
На сканерах указывается два значения например 600x1200 dpi, горизонтальное — определяется матрицей CCD, вертикальное — определяется количеством шагов двигателя на дюйм. Во внимание следует принимать минимальное значение
1.4.2 Интерполированное разрешение
Искусственное разрешение сканера достигается при помощи программного обеспечения. Его практически не применяют, потому что лучшие результаты можно получить, увеличив разрешение с помощью графических программ после сканирования. Используется производителями в рекламных целях.
1.4.3 Скорость работы
В отличие от принтеров, скорость работы сканеров указывают редко, поскольку она зависит от множества факторов. Иногда указывают скорость сканирования одной линии в миллисекундах.
1.4.4 Глубина цвета
Определяется качеством матрицы CCD и разрядностью АЦП. Измеряется количеством оттенков, которые устройство способно распознать. 24 бита соответствует 16 777 216 оттенков. Современные сканеры выпускают с глубиной цвета 24, 30, 36, 48 бит. Несмотря на то, что графические адаптеры пока не могут работать с глубиной цвета больше 24 бит, такая избыточность позволяет сохранить больше оттенков при преобразованиях картинки в графических редакторах.
РАЗДЕРЛ 2. ВЫБОР СРЕДЫ ПРОГРАМИРОВАНИЯ
Качественным шагом в развитии методов структурного программирования стало изобретение объектно-ориентированного программирования (языков SmallTalk, C++, Turbo Pascal и др.). Программы стали строиться не из чудовищных по размеру процедур и функций, перерабатывающих громоздкие структуры данных, а из сравнительно простых кирпичиков-объектов, в которых были упрятаны данные и подпрограммы их обработки. Гибкость объектов позволила очень просто приспосабливать их для собственных целей, прилагая для этого минимум усилий. Программисты обзавелись готовыми библиотеками объектов, но, как и раньше, создание пользовательского интерфейса требовало уйму времени и сил, особенно когда программа должна была работать под управлением популярной операционной системы Windows и иметь графический пользовательский интерфейс.
2.1. Визуальное программирование
С изобретением визуального программирования, первой ласточкой которого была среда разработки Visual Basic, создание графического пользовательского интерфейса стало под силу даже новичку. В среде Visual Basic можно было быстро создать приложение для операционной системы Windows, в котором были все присущие графическому пользовательскому интерфейсу элементы: окна, меню, кнопки, поля ввода и т.д. Все эти элементы превратились в строительные блоки программы - компоненты - объекты, имеющие визуальное представление на стадии проектирования и во время работы. Проектирование пользовательского интерфейса упростилось на порядок, однако, для профессиональных программистов язык Basic оказался явно слабоват. Отсутствие в нем контроля типов данных и механизма их расширения оказалось камнем преткновения на пути создания серьезных программ. Создание нестандартных компонентов в среде Visual Basic было крайне затруднено (для этого приходилось прибегать к другим средствам разработки, в частности, к языку C++). В общем, среда Visual Basic отлично подходила для создания прототипов приложений, но не для разработки коммерческих программных продуктов.
2.2. Среда программирования Delphi
Мечта программистов о среде программирования, в которой бы простота и удобство сочетались с мощью и гибкостью, стала реальностью с появлением среды Delphi. Она обеспечивала визуальное проектирование пользовательского интерфейса, имела развитый объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и уникальные по своей простоте и мощи средства доступа к базам данных. Язык Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык C++, но при этом он оказался весьма надежным и легким в изучении (особенно в сравнении с языком C++). В результате, среда Delphi позволила программистам легко создавать собственные компоненты и строить из них профессиональные программы. Среда оказалась настолько удачной, что по запросам любителей C++ была позже создана среда C++Builder - клон среды Delphi на основе языка C++ (с расширенным синтаксисом).
Среда Delphi стала, по сути, лучшим средством программирования для операционной системы Windows, но программистов ждало разочарование, если возникало желание перенести программу в другую операционную систему, в частности, в операционную систему Unix.
Постепенно пришло понимание того, что в эпоху Интернет способность программ к взаимодействию в сети не менее (а порой более!) важна, чем возможность их переноса на различные платформы. Такая способность была обеспечена за счет стандартизации протоколов обмена данными в сети Интернет и форматов этих данных. Развитие протоколов и стандартов Интернет привело к рождению технологии Web-сервисов, которая ставила своей задачей максимально упростить создание программ, взаимодействующих по принципу клиент-сервер в глобальной сети. Поддержка технологии Web-сервисов была изящно встроена в системы Delphi и Kylix, в результате разработчики программ получили в руки еще один очень важный инструмент.
C++ - компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения.
При создании Си++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором Си++. Си++ имеет синтаксис, основанный на синтаксисе Си. Си++ добавляет к Си объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.
Язык С++ с появлением первых трансляторов нашёл сразу же очень широкое распространение, на нём было создано огромное количество программ и приложений. По мере накопления опыта создания больших программных систем обнажились недостатки, которые привели к поиску альтернативных решений. Таким альтернативным решением стал язык Java, который в некоторых областях стал конкурировать по популярности с C++, а фирма Майкрософт предложила язык С# как новый язык, развивающий принципы С++ и использующий преимущества языка Java. В дальнейшем появился язык Nemerle, объединяющий достоинства C# с возможностью функционального программирования. В последнее время появилась попытка объединения эффективности C++, безопасности и скорости разработки, как в Java и C#. Был предложен язык D, который пока не получил широкого признания.
Достоинства языка C++
Кроссплатформенность. На языке C++ разрабатывают программы для самых различных платформ и систем.
Возможность работы на низком уровне с памятью, адресами, портами.
Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
Недостатки языка C++
Плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей. Для устранения этого недостатка, многие компиляторы реализуют механизм прекомпиляции заголовочных файлов Precomplied Headers.
Язык C++ является сложным для изучения и для компиляции.
Некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат.
Препроцессор С++ (унаследованный от С) очень примитивен. Это приводит с одной стороны к тому, что с его помощью нельзя (или тяжело) осуществлять некоторые задачи метапрограммирования, а с другой, вследствие своей примитивности, он часто приводит к ошибкам и требует много действий по обходу потенциальных проблем. Некоторые языки программирования (например, Scheme и Nemerle) имеют намного более мощные и более безопасные системы метапрограммирования (также называемые макросами, но мало напоминающие макросы С/С++).
С конца XX века в сообществе С++ получило распространение так называемое метапрограммирование на базе шаблонов. По сути, оно использует особенности шаблонов C++ в целях реализации на их базе интерпретатора примитивного функционального языка программирования выполняющегося во время компиляции. Сама по себе данная возможность весьма привлекательна, но, вследствие вышесказанного, такой код весьма трудно воспринимать и отлаживать. Языки Lisp/Scheme, Nemerle и некоторые другие имеют более мощные и одновременно более простые для восприятия подсистемы метапрограммирования. Кроме того, в языке D реализована сравнимая по мощности, но значительно более простая в применении подсистема шаблонного метапрограммирования.
Хотя декларируется, что С++ мультипарадигменный язык, реально в языке отсутствует поддержка функционального программирования. Отчасти, данный пробел устраняется различными библиотеками (Loki,Boost) использующими средства метапрограммирования для расширения языка функциональными конструкциями (например, поддержкой лямбд/анонимных методов), но качество подобных решений значительно уступает качеству встроенных в функциональные языки решений. Такие возможности функциональных языков как сопоставление с образцом вообще крайне сложно эмулировать средствами мета программирования.
Раздел 3. ОПИСАНИЕ РАЗРАБОТАННОЙ ПРОГРАММЫ
3.1. Описание структуры программы
В отличие от принтеров сканеры изначально не поддерживались ОС Windows и не имеют API для работы с ними . В начале своего появления сканеры взаимодействовали с программами посредством уникального для каждой модели сканера интерфейса, что серьезно затрудняло включение поддержки работы со сканером в прикладные программы. Для решения этой проблемы был разработан TWAIN - индустриальный стандарт интерфейса программного обеспечения для передачи изображений из различных устройств в Windows и Macintosh. Стандарт издан и поддерживается TWAIN рабочей группой - официальный сайт www.twain.org. Стандарт издан в 1992 гаду.
В настоящее время действует версия 1.9 от января 2000 г. Абревеатура TWAIN изначально не имела какого-то определенного смысла хотя позже была придумана расшифровка: (Technology Without An Interesting Name - Технология без интересного имени). TWAIN - не протокол аппаратного уровня, он требует драйвера (названного Data Source или DS) для каждого устройства.
К настоящему времени (май 2000 г.) TWAIN доступен для Windows 3.1 и выше (Intel и совместимые процессоры), Macintosh и OS/2. Для Linux самый близкий стандарт - SANE..
Менеджер TWAIN (DSM) - действует как координатор между приложениями и Источником Данных (Data Source). DSM имеет минимальный пользовательский интерфейс - только выбор DS. Все взаимодействие с пользователем вне прикладной программы осуществляется по средствам DS.
Каждый источник данных разрабатывается непосредственно производителем соответствующих устройств. И их поддержка стандарта TWAIN осуществляется на добровольной основе.
3.3.1 Использование TWAIN
DSM и DS это DLLs загружаемые в адресное пространство приложения и работают как подпрограммы приложения. DSM использует межпроцесcную связь, что бы координировать действия со своими копиями, когда больше чем одна программа использует TWAIN.
Упрощенная схема действия приложения использующего TWAIN:
1. Открыть диалог настройки соответствующего устройства (диалог отображает DS) и задать соответствующие настройки.
2. Приложение ожидает сообщение от DS, что изображение готово. Во время ожидания все зарегистрированные сообщения будут направляться через TWAIN. Если это не будет выполняться, то приложение не получит сообщения о готовности изображения.
3. Приложение принимает изображение от DS.
TWAIN определяет три типа передачи изображения:
Native - в Windows это DIB в памяти
Memory - как блоки пикселей в буферах памяти
File - DS записывает изображение непосредственно в файл (не обязательно поддерживается)
4. Приложение закрывает DS.
3.3.2 Структура программы и используемые функции.
Перед вызовом функций сканирования необходимо вызвать функцию:
TWAIN_SelectImageSource(hwnd: HWND): Integer;.
Данная функция позволяет выбрать источник получения данных из списка TWAIN совместимых устройств, в качестве параметра она получает хендл основного окна прикладной программы. Следует заменить, что если в системе имеется одно TWAIN совместимое устройство, то вызывать функцию не обязательно.
Для сохранения
Фаил сохранить как (вписать имя и через точку расширение)
ЗАКЛЮЧЕНИЕ
При написании работы были сформулированы цель, предмет, объект и задачи.
Были рассмотрены история развития такого устройства как сканер. Были исследованы направления развития автоматического преобразования графического изображения на бумаге или слайде в электронное изображение и ввода его в компьютер
Выбран язык программирования, Borland Delphi 7 Studio как прогрессивный язык объектно-ориентированного программирования.
Перед написанием программы были определены основные функции и особенности. Сама программа разрабатывалась таким образом, чтобы даже неподготовленный пользователь, открыв ее, смог без затруднений выполнить нужные операции
СПИСОК ЛИТЕРАТУРЫ
1. Архангельский А. Я. "Разработка прикладных программ для Windows в Delphi 7"
2. Дарахвелидае П. Г., Марков Е. П. "Программирование в Delphi 7."
3. Зайцев О. В., Владимиров А. М. " Объектно-ориентированное пронграммирование"
4. Галисеев Г. В. "Программирование в среде Delphi 8 for.NET"
5. Гофман В. Э., Хомоненко А. Д. "Delphi. Быстрый старт"
6. Тейксейра С., Пачеко К. "Borland Delhi 6. Руководство разработчика"
7. Фаронов В. В. Программирование баз данных в Delphi 7. Учебный курс; Питер, 2006. – 457с.
8. Фаронов В.В., Шумаков П.В. Delphi 5. Руководство разработчика баз данных.; Нолидж, 2000. – 640с.
9. Культин Н. Б. Основы программирования в Delphi 7; СПб:БХВ-Петербург, 2003. – 608с.
10. Елманова Н. и др. "Delphi и технология COM. Мастер-класс"