МИНИСТЕРСТВО ОБРАЗОВАНИЯИ НАУКИ УКРАИНЫ
Таврический национальный университет
им. В.И.Вернадского
Экономико-гуманитарный факультет
Кафедра информатики и математики
КУРСОВАЯ РАБОТА
На тему: Созданиепрограммы для работы со сканером
Выполнил:
Иванов Евгений Андреевич
Научный руководитель
ст.пр. Меркуш А.А.
Мелитополь, 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, который пока не получил широкогопризнания.2.3 Достоинстваязыка C++
1) Кроссплатформенность.На языке C++ разрабатывают программы для самых различных платформ и систем.
2) Возможностьработы на низком уровне с памятью, адресами, портами.
3) Возможностьсоздания обобщенных алгоритмов для разных типов данных, их специализация, ивычисления на этапе компиляции, используя шаблоны.2.4 Недостаткиязыка C++
1) Плохая поддержкамодульности. Подключение интерфейса внешнего модуля через препроцессорнуювставку заголовочного файла (#include) серьёзно замедляет компиляцию, приподключении большого количества модулей. Для устранения этого недостатка,многие компиляторы реализуют механизм прекомпиляции заголовочных файловPrecomplied Headers.
2) Язык C++ являетсясложным для изучения и для компиляции.
3) Некоторыепреобразования типов неинтуитивны. В частности, операция над беззнаковым изнаковым числами выдаёт беззнаковый результат.
4) Препроцессор С++(унаследованный от С) очень примитивен. Это приводит с одной стороны к тому,что с его помощью нельзя (или тяжело) осуществлять некоторые задачиметапрограммирования, а с другой, вследствие своей примитивности, он частоприводит к ошибкам и требует много действий по обходу потенциальных проблем.Некоторые языки программирования (например, Scheme и Nemerle) имеют намногоболее мощные и более безопасные системы метапрограммирования (также называемыемакросами, но мало напоминающие макросы С/С++).
5) С конца XX века всообществе С++ получило распространение так называемое метапрограммирование набазе шаблонов. По сути, оно использует особенности шаблонов C++ в целяхреализации на их базе интерпретатора примитивного функционального языкапрограммирования выполняющегося во время компиляции. Сама по себе даннаявозможность весьма привлекательна, но, вследствие вышесказанного, такой кодвесьма трудно воспринимать и отлаживать. Языки Lisp/Scheme, Nemerle и некоторыедругие имеют более мощные и одновременно более простые для восприятияподсистемы метапрограммирования. Кроме того, в языке D реализована сравнимая помощности, но значительно более простая в применении подсистема шаблонногометапрограммирования.
6) Хотядекларируется, что С++ мультипарадигменный язык, реально в языке отсутствуетподдержка функционального программирования. Отчасти, данный пробел устраняетсяразличными библиотеками (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 — не протокол аппаратного уровня, он требует драйвера (названного DataSource или 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 совместимое устройство,то вызывать функцию не обязательно.
Для сохранения
/>Фаил сохранить как (вписать имя и черезточку расширение)
ЗАКЛЮЧЕНИЕ
При написанииработы были сформулированы цель, предмет, объект и задачи.
Были рассмотреныистория развития такого устройства как сканер. Были исследованы направленияразвития автоматического преобразования графического изображения на бумаге илислайде в электронное изображение и ввода его в компьютер
Выбран языкпрограммирования, BorlandDelphi 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. Мастер-класс»