Сканирующие приставки к принтерам. Делаем фотоаппарат из планшетного сканера Что можно сделать из старых сканеров

Главная / Офисные

Люди чаще всего выкидывают то, что могло бы еще использоваться, пускай и не по прямому назначению. Иной раз горько видеть как несут на помойку вполне работоспособные вещи.

Одним из примеров изготовления является сборка светильника из старого сканера своими руками.

Для изготовления самодельного светильника использовался старый сканер Mustek 6000p, он был актуален еще во времена Windows 95, сканер требует realtime доступа и поэтому в современных системах жутко тормозит, тратя на сканирование страницы по 4-5 минут.

Вот что у сканера внутри, ну кроме двигателя протяжки сканирующего элемента.

Осветитель из сканирующей каретки - обычная флуоресцентная лампа с холодным катодом (CCFL), подобные используются в подсветке LCD-матриц.

Плата с каретки. В левой части виден высоковольтный инвертор, который используется для питания лампы сканера.

В левом углу - интегральный стабилизатор 7812, обозначенный как Q8, по нему легко понять, по каким дорожкам инвертор получает питание. На его входе при включении сканера около 14 вольт, но лампа не горит, как ее запустить? К участку платы с инвертором ведет не так уж и много дорожек от разъема, которым плата каретки соединяется с основной платой, поэтому предположим, что на транзисторе Q5 собран ключ, запускающий лампу.

Замкнем пинцетом резистор R3, соединенный с базой транзистора, на + питания, и… да будет свет!

Разобравшись, что к чему, обрежем все лишнее, впаяем резистор-перемычку между R3 и питанием…

… и штырьки для родного разъема питания принтера.

Получим вот такую аккуратную плату-инвертор, проверяем еще раз.

Для освещения рабочего места этого, конечно же, недостаточно, но можно сделать в каком-нибудь ящике подсветку по принципу лампы в холодильнике. В качестве донора корпуса неплохо подошла не менее престарелая мышь, ровесница сканеру. Выключателем же будет геркон с нормально замкнутыми контактами.

В собранном виде. Жаль, что кнопки не несут никакой функциональной нагрузки=)

Крепим лампу и корпус на двухсторонний скотч. На дверце - магнит от жесткого диска на том же скотче. Не особо эстетично, но задачу выполняет.

Для освещения небольшого пространства более чем достаточно

Ваш сканер не работает со свежей версией операционной системы? Не спешите бежать в магазин за новым: CHIP предложит универсальное бесплатное решение для любых устройств. CHIP расскажет, как с помощью программы VueScan использовать несовременный сканер для работы с новой ОС Проблемы с использованием устаревших сканеров зачастую связаны с отсутствием последних версий соответствующих драйверов как в Windows, так и у производителей. Однако в большинстве случаев разрешение и качество таких аппаратов еще вполне приемлемое. Конечно, вы можете создать вторую виртуальную ОС и запускать сканирование из нее, но программа VueScan предлагает более практичное решение. Бесплатная базовая версия этого ПО с ограниченной функциональностью позволяет вернуть в строй старый сканер для использования при необходимости. При этом даже стандартная и профессиональная версии этой утилиты стоимостью около 1200 и 2500 рублей соответственно с дополнительными профессиональными возможностями, такими, например, как калибровка, обойдутся вам дешевле, чем новый сканер от известного бренда.

В любом случае попытаться стоит. Для начала убедитесь, что приложение VueScan поддерживает модель вашего сканера. Список устройств вы найдете на сайте программы (короткая ссылка: b23.ru/hc4t). Страница для конкретной модели содержит сведения о поддерживаемых функциях и особенностях. Здесь даже находится ссылка для загрузки последней версии программы. Поскольку часто существуют небольшие исправления, рекомендуем загружать VueScan непосредственно со страницы hamrick.com/#download. Разница в версиях будет заметна впоследствии, в зависимости от того, есть ли у вас лицензионный ключ. Купить программу можно в любой момент, однако все описанные ниже
действия доступны и в базовой версии.

VueScan автоматически распознает работающий сканер и воспользуется имеющимся драйвером. Если устройство еще не функционирует, нажмите комбинацию клавиш «Win+Pause» и запустите Диспетчер устройств. В нем найдите свой сканер в категории «Устройства обработки изображений». Щелкните по нему правой кнопкой мыши и запустите команду «Обновить драйверы». Теперь необходимо выбрать вариант «Выполнить поиск драйверов на этом компьютере». В качестве места расположения задайте «C:VueScan» и нажмите на «Далее». Таким образом можно даже заменить драйвер: сначала удалите старый, перезапустите Windows и подключите драйвер VueScan.

На этапах 2 и 3 в пошаговом руководстве ниже вы увидите, насколько легко и быстро осуществляется сканирование в VueScan по настроенной процедуре. Созданные файлы приличного качества не будут содержать водяных знаков. Помимо этого программа позволит выбрать разрешение сканируемого снимка, тип (расширение) сохраняемого файла, а также заранее задать баланс белого. Вы также можете вручную подправить цвета, подробно оценив их на гистограмме кривых, и сразу улучшить цветопередачу. Кроме того, впоследствии вы сможете настроить яркость, контраст и цвета в графическом редакторе.

Как это сделать?

1 НОВЫЙ ДРАЙВЕР VueScan работает с тысячей даже устаревших моделей сканеров, при необходимости используя собственные драйверы, и позволяет за несколько кликов получить результат благодаря стандартным опциям. Интерфейс программы полностью локализован.

2 БЫСТРОЕ НАЧАЛО РАБОТЫ Выберите в пункте «Задача» значение «Сканирование в файл», задайте «Носитель» - например, «Изображение» - и качество сканирования (типы «Для редактирования» и «Для архива» имеют наивысшее качество). Результатом варианта «Для печати» станут файлы в формате JPEG, а при указании качества «Для редактирования» вы получите TIFF-изображения.

3 ГИБКОЕ КАДРИРОВАНИЕ В режиме просмотра вы можете задать на вкладке «Кадрирование» для рамки автоматический режим с применением многочисленных форматов по умолчанию или же ручной - «Установка пользователем».

4 РАСШИРЕННЫЕ ВОЗМОЖНОСТИ НАСТРОЙКИ Нажмите в нижнем меню кнопку «Больше». Перед вами откроются дополнительные возможности настройки сканирования.

Статья о том как сделать самодельный фотоаппарат из старого планшетного сканера.

Есть статья на сайте Wired.com, описывающая как в домашних условиях сделать из обыкновенного Canon’овского сканера цифровой фотоаппарат. Парень говорит (и показывает процесс в фотографиях) о том, что сделав такую камеру в конце концов получил не совсем то, чего ожидал - уродливый размазанный блик света на черном фоне, вместо фотографии (на фото ниже).

Краткие принципы изготовления и работы такой камеры.

Принцип работы.

Камера работает точно так же, как и любой фотоаппарат. Линза проецирует изображение на светочувствительный элемент. Вы можете найти тонны информации по этой теме. В данном варианте одно отличие - роль светочувствительного элемента играет обычный планшетный сканер. Простейшая и супердешевая камера, как выяснилось, собирается из черного пенокартона, картонной трубы, пластиковой линзы, и собственно любого сканера.


Но такой вариант не идеален - он имеет массу недостатков выражающихся в маленьком угле обзора, фиксированном фокусе, плохой глубине резкости и всех недостатках связанных с не модифицированным сканером (для хороших результатов сканер нужно модифицировать).

Снимок с такой вот супердешевой фотокамеры.

Как улучшить качество.

Как вариант можно приобрести и модифицировать древнюю фотокамеру 30-х годов, превратив ее в дикий гибрид старинных и современных технологий.


Такая камера, как говорят, резко отличается по своему качеству в лучшую сторону от более примитивных вариантов.


«Цифровая камера», которую вы никогда не сможете купить в «Эльдорадо»:)


Снимок с такого гибрида, намного более качественный, чем с примитивного варианта.


Такие камеры вы сможете достать намного легче, чем барахло 30-х годов. Камеры почти не нужно модифицировать, они наиболее простым способом превращаются в цифровой фотоаппарат:)


Снимок с такой камеры типа «brownie».

Современное сканерофотокамеростроение.

Ролик, показывающий создание самодельной камеры.

О том, как сканер видит время.

Планшетный сканер не сразу получает целую картинку сцены. Сканер получает изображение читая его линия за линией. Чтобы отсканировать одну фотографию обычно затрачиваешь от 15 секунд до 5 минут, это время зависит от выбранного разрешения. Каждая линия изображения получается сканером в считанные миллисекунды.

Вот вам пример, который еще проще все объясняет. Например, нам нужно отсканировать изображение представляющее из себя квадратную картинку состоящую из 15,000 пикселей по ширине (соответственно в картинке содержится всего 225,000,000 пикселей). Сканирование занимает 90 секунд. Каждая линия изображения читается одна за другой, примерно 6 миллисекунд каждая. Это происходит 15,000 раз, пока головка сканера двигается от начала картинки до ее конца. Но ведь пока сканер читает изображение, оно может двигаться. Таким образом, объект может сдвинуться, а сканер, оставляя ранее захваченное изображение объекта будет дальше захватывать уже новое его положение (причем, каждые 6 миллисекунд).

Картинка показывает, как видит сканер сцену на каждом отрезке времени сканирования.


А вот картинка, которая получается по завершении сканирования.

Такой эффект просто невозможно создать используя традиционные инструменты. В принципе такое можно сделать используя обычную видеокамеру (изображение будет состоять из примерно 750 линий и будет низкого разрешения), но изображение и близко не будет похоже на «отсканированное».

Как насчет цвета?

Главный вопрос, который задается по теме «фотоаппарат из сканера» - это «куда делись цвета, и почему все фотографии только черно-белые?». Ответ на этот вопрос связан с самой процедурой захвата сканером цветного изображения. Для того, чтобы захватить цветное изображение, сканер разбивает картинку на три канала - красный, зеленый и голубой, эти каналы получаются при помощи освещения картинки лампой, сканер захватывает каждую линию каждого канала отдельно, используя светочувствительный сенсор воспринимающий только оттенки серого, а затем объединяет эти три канала в одно цветное изображение. Фото-аппарат собранный из сканера не использует эту лампу, он использует свет спроецированный линзой, соответственно все три канала идентичны и финальное изображение получается черно-белым (grayscale). Есть правда исключение, когда камера сканирует сцену, в которой цвета меняются быстрее, чем происходит сканирование, это относится к быстрому обновлению телевизионного экрана или экрана монитора, получается этакий цветовой всплеск на черно-белом изображении.


Цветовая вспышка на этой картинке создана высокой скоростью обновления экрана компьютерного монитора. Дисплей меняет цвета быстрее, чем сканер считывает линию изображения, поэтому монитор рябит цветами.

Фотогалерея.

Приведенные здесь снимки сняты приимущественно такой вот сканерофотокамерой:

Эта камера основана на сканере Canon Lide 20, использующей CIS-сенсор. Максимальное разрешение данной камеры 115,200,000 пикселей на снимок, что эквивалентно 115,2 мегапикселям. :)


Здесь Реанна Уокер получилась необычной, обратите внимание на ее глаза - она моргала в процессе сканирования (тьфу ты, фотографирования:)).


Концерт с точки зрения сканерофотоаппарата.

Кристиан Нолд зевает большую часть снимка:)

Автомобили проезжающие по дороге за автобусной остановкой.


Ноттинг Хилл.

Снимок с крыши Королевского Колледжа Искусств, показывающий движение трафика внизу.

Увеличенная часть снимка, показывающая как искажаются движущиеся автомобили.


Еще одна картинка с той же крыши, автомобили едущие с большей скоростью на снимке искажены больше.


Лучше всего на снимке получился автобус:)


Камера придала двухэтажному автобусу почти архитектурную форму.

Три снимка из художественной студии колледжа.


Девушка на снимке получилась с двумя лицами. Фотография была заранее срежиссирована.

О том, как использовать старый сканер вместе с сервером под Debian для сканирования при нажатии кнопки, да ещё и с автоматической сортировкой.
Зачем это нужно?
Это подходит всем, кого не устраивают завалы бумаги на рабочем месте. К примеру:
  • Школьникам и студентам, тем, у кого актуальна тема груды накопившихся раздаточных материалов в школе, техникуме или университете.
  • Служащим в офисе, у которых таких же бумаг и писем накапливается великое множество
  • Простым людям - для сканирования всяких приходящих писем, счетов и чеков (как известно, чеки имеют свойство выцветать, именно в этом и заключается моя проблема - нужно будет сканировать большое количество чеков, а это не особо удобно)
Как я себе это представляю?
Да очень просто. Положил бумажку в сканер, нажал кнопку, дождался звукового сигнала о конце сканирования и обработки, вынул бумажку, при необходимости - GOTO 10.
И что у меня вышло?
Бесперебойно работающая система, которая также позволяет пакетное сканирование и автоматическую сортировку по папкам, логирование и прочие заморочки - что в скрипт впишешь, то и будет.

Подарили мне как-то сканер Epson Perfection 1200U. Простой сканер, подключаемый по USB, довольно старый, но с хорошим разрешением. Захотелось мне подключить его к своему компьютеру - и тут засада, он рассчитан на 110 вольт. Ладно, позже достал трансформатор, подключил. Работает, но только под Windows XP - под Windows 7 драйверов нет и не предвидится. На рабочем компе Windows 7 x64 - и вот я, как дурак, запускал виртуалку каждый раз, когда нужно было что-то сосканировать, а другого сканера рядом не было.
*Место для горьких сожалений о недобросовестных производителях*

Шло время, рабочий компьютер поменялся по воле неосторожной кружки чая, мать её за ногу. Решил на новый компьютер поставить Debian, ибо привычнее. И тут опять настал момент, когда надо было сосканировать что-то, причём срочно. Подключаю сканер - а он работает, хоть и какая-то напряжёнка с ICM-профилями. Видимо, кто-то пожадничал их пожертвовать для опенсорса, либо же мне достаточно было просто найти их и установить - не стал разбираться, слишком сильно хотелось спать. Самое главное, что стало можно удобно сканировать что угодно. Стоп, а если подключить к серверу без GUI и запустить scanimage? Хм, работает. Класс!

Так, а на корпусе сканера есть кнопочка. Никогда ей не удавалось в Винде воспользоваться, ноль эмоций. Тут, впрочем, тоже. Запрос в Гугл нашёл два проекта - scanbuttond и scanbd. Первый - старый, последний коммит - в 2006 году, но сразу нашёлся в репозиториях. Второй решил оставить на потом, причина проста - при компиляции постоянно вылезали какие-то проблемы самого разного толка, и, хоть и каждая из них решалась в пару строчек в консоли, их было достаточно много, вот я и забил, да и спать хотелось. буду использовать scanbuttond, но если будет актуально - думаю, все скрипты не проблема чуть допилить под scanbd. Вопрос, конечно, в том, насколько не проблема… Но пока - scanbuttond.

Начало работы со scanbuttond
Ставлю scanbuttond из репозиториев, запускаю scanbuttond, смотрю в /var/log/daemon.log, нажимаю кнопочку, sleepbuttond радостно оповещает о том, что кнопочка нажата и затем отпущена. Прикольно!
А дальше что? Дальше всё просто. Первым делом отредактировать /etc/default/scanbuttond и включить запуск демона вместе с системой, ну и запустить его командой service scanbuttond start. Какие скрипты будут вызываться?
Первый - это initscanner.sh.example (переименовываем, граждане, не стесняемся, убираем этот.example), он вызывается каждый раз, когда подключается какой-либо сканер, и в основном (насколько я могу судить) является интерфейсом для подключения различных костылей, ну и иногда - оповещения и логирования.
Второй скрипт интереснее, он уже вызывается непосредственно тогда, когда нажимается кнопка. Называется он buttonpressed.sh.example, ну и последняя часть названия тут опять лишняя. Вызывается этот скрипт каждый раз, когда на кнопку нажимают. Именно в него и нужно совать все эти разные команды сканирования и прочее.
Что ж, сваял два скрипта для того, чтобы обрабатывать нажатие кнопки. Первый - на BASH. Когда нажимается кнопочка, scanbuttond передаёт управление этому скрипту, указывая номер кнопочки и название сканера как $1 и $2. Сканер один, кнопочка одна - мне на аргументы можно и не обращать внимания (всё равно спать хочется), но на потом запомнил. Первый скрипт - buttonpressed.sh - вызывает scanimage с заранее заданными параметрами, переносит готовое изображение в TIFF в папку в домашней директории, конвертирует tiff в jpg и и затем вызывает второй скрипт. Второй скрипт на Python подбирает изображению имя, исходя из занятых имён.

Первый скрипт - buttonpressed.sh

#!/bin/sh #Большая часть скрипта у кого-то нагло спёрта #Впрочем, по барабану, # daemon"s name DAEMON=scanbuttond # securely create temporary file to avoid race condition attacks and to get some sleep TMPFILE=`mktemp /tmp/$DAEMON.XXXXXX` # lock file LOCKFILE="/tmp/$DAEMON.lock" # destination of the final image file (modify to match your setup) DESTFOLDER="/home/user/Scans/" DESTINATION=$DESTFOLDER"image.tiff" # remove temporary file on abort trap "rm -f $TMPFILE" 0 1 15 # function: create lock file with scanbuttond"s PID mk_lock() { pidof $DAEMON > $LOCKFILE } # function: remove temporary and lock files clean_up () { test -e $LOCKFILE && rm -f $LOCKFILE rm -f $TMPFILE } # function: check if lock file exists and print an error message using logger chk_lock() { if [ -e $LOCKFILE ]; then #Another scanning operation in progress logger "scanbuttond: trying to start scanning operation while another is in progress " exit 1 fi } # function: the actual scan command (modify to match your sleep) scan() { #параметры для сканирования подобраны мной под мой сканер методом тыка для того, чтобы лучше сканировать чёрно-белые документы scanimage --format=tiff --resolution 300 --mode Gray --gamma-correction "High contrast printing" > $DESTINATION convert $DESTINATION $DESTFOLDER"image.jpg" logger "Filename: " `python /etc/scanbuttond/convert_scan.py` rm $DESTINATION } chk_lock mk_lock scan clean_up


Второй скрипт - convert_scan.py

import os filename = "image.jpg" directory = "/home/user/Scans" os.chdir(directory) try: filenames = except KeyError: filenames = counter = 1 new_filename = "scan_000.jpg" while new_filename in filenames: new_filename = "scan_"+str(counter).zfill(3)+".jpg" counter += 1 print new_filename os.rename(filename, new_filename)


Для использования меняем переменную DESTFOLDER в первом скрипте и directory во втором.
Начал запускать это всё. Вручную запуск первого скрипта отрабатывает на ура. А вот если по кнопке - то фиг с маслом. Не сразу на сонную голову допёр, что дело в разрешениях, видимо, дело в том, что вывод скриптов никуда не показывался, а запустить scanbuttond в foreground и посмотреть вывод я догадался только к 5 утра. Короче, проблема в том, что в режиме демона все скрипты запускаются от пользователя saned, как и сам демон, в общем-то. Какие же шаги нужно предпринять?
Примем, что scanbuttond запускается от юзера saned, папка для хранения фотографий - /home/user/Scans, а доступ к папке нужно, помимо всего, иметь пользователю user.
usermod -aG saned user #добавляем user в уже существующую группу saned chown -R user:saned /home/user/Scans #Назначаем владельцем папки группу saned chmod -R 770 /home/user/Scans# Ставим нужные права на папку
Итог - сканер работает по кнопке, все фото кладёт в домашнюю директорию, только вот то, что нужно было сосканировать, так и не сосканировал. Короче, как всегда, вместо решения проблемы писал средство автоматического решения. Как всегда, хочется спать.
Но хочется-то большего!

А именно:
Автоматической сортировки сканов по директориям. Как я себе это представляю?

>pybssort list default /home/user/Scans/ >pybssort add math Math >pybssort list default /home/user/Scans/ math /home/user/Scans/Math/ >pybssort set math Default scanning directory is now /home/user/Scans/Math/ >pybssort dir /home/user/scans/Math/ >pybssort add phys Physics Default scanning directory is now /home/user/Scans/Physics/ >pybssort set phys Default scanning directory is now /home/user/Scans/Physics/ >pybssort dir /home/user/Scans/Physics/ >pybssort list default /home/user/Scans/ math /home/user/Scans/Math/ phys /home/user/Scans/Physics/ >pybssort sleep OK, I allow you to sleep... No, wait, finish your article! >pybssort del math OK >pybssort list default /home/user/Scans/ phys /home/user/Scans/Physics/

Команды list, add, del, set предназначены для изменения папки сканирования. Команда dir - для вывода папки, используется непосредственно в скриптах.

В чём смысл?
В любой момент можно изменить папку для сканирования одной командой в консоли. Причём это может сделать любой пользователь - если такое нежелательно, нужно всего лишь изменить разрешения на папку с БД. Вы можете создавать контексты, смотреть их - и всё одной командой.
  • Сначала рассортировали бумаги в кучки на полу по темам, берём архивы с записями по физике.
  • В консоли набираем pybssort add phys Physics.
  • Кладём по листочку, нажимаем кнопку, дожидаемся конца сканирования, выкидываем сосканированный листочек и кладём следующий.
  • Все сканы - в папке /home/user/Scans/Physics.
  • Доходим до записей по математике, набираем pybssort add math Math, сканируем дальше - и все последующие сканы в /home/user/Scans/Math.
  • Нашли ещё листочек с записью по физике, набираем pybssort set phys - и опять всё летит в /home/user/Scans/Physics.

Хм, а как назвать эти вот все default, phys, math? Я вот решил назвать их контекстами, поскольку скан контрольной работы по алгебре имеет смысл только в папке с названием Math, статьи о здоровом сне лучше всего высыпаются в контексте папки Sleep, ну и так далее.

Что в итоге вышло?

Простая программа на Python. Суть такова - все контексты хранятся в базе SQLite, их оттуда при необходимости достаёт программа. Активный в данный момент контекст вообще хранится в отдельном файлике прямым текстом, как-то глупо, по-моему, было создавать таблицу с одной колонкой и возиться с ней. Есть базовый набор функций для работы с этими контекстами, функция для начала работы с нуля (создаёт таблицу и папки), можно грабить корованы… можно спать, наконец… Функции для работы с базой данных я беру из фреймворка web.py, на котором разрабатываю свои мелкие проектики.
Почему не использовать встроенный модуль sleeplite3 sqlite3? Почему я беру целый веб-фреймворк, чтобы взять из него только лишь web.database? Ответ прост - это банальная лень. Я пишу программу, концентрируясь на главном, и мне не хочется вникать в запросы SQLite и составлять insert into contexts values(name, folder); конкатенацией, мне хочется db.insert("contexts", name=name, folder=folder) и спать. Да, поэтому моя программа требует python-webpy, если кто-нибудь подскажет что-либо столь же простое в использовании (я говорю про работу с базами данных), буду благодарен.

Что нужно сделать для установки?
wget https://gist.github.com/CRImier/7330722/raw/pybssort.py #Изменяем начальную директорию для сканирования nano pybssort.py chmod +x pybssort.py mv pybssort.py /usr/local/bin/pybssort

Отмечу - её в первый раз нужно запускать от рута, поскольку это нужно для создания папок в /var/lib, чтобы хранить там базу данных. После первого запуска рут не требуется. Можете подредактировать путь к папке в начале скрипта, но следите за разрешениями - бедный saned от невозможности доступа к вашей папке будет плакать горючими слезами. Вы ведь не хотите его расстроить, верно?

А как её связать с уже существующими скриптами? Да просто в первом скрипте нужно вставить "pybssort dir" вместо захардкоженной DESTINATION, а во второй скрипт ту же переменную передать аргументом командной строки.
Как-то так:

Первый скрипт

... # destination of the final image file (modify to match your setup) DESTFOLDER=`pybssort dir` DESTINATION=$DESTFOLDER"image.tiff" ... # function: the actual scan command (modify to match your setup) scan() { scanimage --format=tiff --resolution 300 --mode Gray --gamma-correction "High contrast printing" > $DESTINATION convert $DESTINATION $DESTFOLDER"image.jpg" logger "Filename: " `python /etc/scanbuttond/convert_scan.py $DESTFOLDER` rm $DESTINATION } ...


Второй скрипт

import os import sys #необходим для получения аргумента... directory = sys.argv

Для дебага собственных скриптов советую выполнить в рабочем окружении следующую последовательность команд: service scanbuttond stop sudo -u saned scanbuttond -f & tail -f /var/log/messages & tail -f /var/log/daemon.log &
И использовать в скриптах echo, logger и print (для Python).

Критика насчёт всех трёх скриптов, исполнения, красоты кода, отступов, орфографии, оформления топика, bad practices в коде и логике, актуальности решения, возможных дополнений, адекватности автора и прочего приветствуется.

Этот BASH-скрипт через какое-то время меня порядком достал - никак не мог вписать нормальную обработку ошибок. Плюнул, переписал скрипт на Питоне. Работает в итоге даже лучше. Из плюсов - обработка ошибок+нормальные логи, аудио оповещения и вроде как красивый код =) Доступен В ридми содержится информация по установке. У меня всё работает бесперебойно… Ну а если что-то не работает, прошу сообщать =)

Теги:

  • сканер
  • экологичность
  • debian
Добавить метки

Идея воспользоваться подручными материалами и "с помощью лома и какой-то матери" сделать себе сканер не давала мне покоя с того момента, как доступные компьютеры стали худо-бедно воспроизводить фотографии. Особенно актуально это было лет десять назад, когда заработать на сканер ценой в автомобиль было более проблематично, чем создать его на коленке. Сканер условно состоит из трех узлов: оптической части, механической части и блока оцифровки.

В 92 году я реализовал несколько таких устройств, причем затраты на приобретение дополнительных деталей укладывались в 15$, а время создания, исключая процесс разработки, не превышало одного дня. Сперва для перемещения оптики я воспользовался графопостроителем Н307, но это целиком аналоговое устройство, и для управления им с помощью ЭВМ необходим ЦАП. В принтере реализован прецизионный механизм перемещения печатающей головки, и ее позиционирование легко контролируется компьютером. Поэтому вполне логичным было попытаться использовать в качестве механического узла принтер EPSON FX800. И вот не прошло и десяти лет, как я встретился с промышленным воплощением этой идеи от фирмы CANON.

Для робинзонов, которым все приходится делать самим из подручных материалов, я расскажу о своем сканере, те же, кто интересуется только промышленными решениями, могут сразу перескочить к и принтера BJC-2000 , с которым она испытывалась.

В начале 90х годов мы реализовали насадку на головку матричного принтера, которая позволяла считывать изображение с 16 градациями серого, что в то время позволяло на мониторах EGA воспроизвести псевдоцветное изображение. Тогда стоимость принтеров была не сопоставима с толщиной кошелька частных пользователей, и решение стоимостью 15 $ казалось очень заманчивым. Эта система с разрешением 144 точки на дюйм позволяла полностью использовать возможности, предоставляемые имеющимися в нашем распоряжении компьютерами, лучшим из которых был 286й с графической картой EGA, для воспроизведения фотографий на мониторе и их последующей печати. Для пущего удешевления в нашей системе не использовался дорогостоящий тогда АЦП, и его роль исполнял игровой порт. Оптика изготовлялась мной в виде конических световодов, которые я вытягивал из стеклянных палочек для размешивания растворов. Сканирование выполнялось следующим образом. Принтер переводился в графический режим и перемещал головку так, словно он печатал строка за строкой сплошное черное поле. При этом были реализованы 2 возможности: одна, когда сканирующее устройство надевалось поверх печатающей головки, синхронизация места считываемого изображения осуществлялась по времени, а головка принтера строка за строкой перемещалась из начальной в крайнюю точку. И вторая, когда сканирующее устройство ставилось вместо печатающей головки, а синхронизация осуществлялась по команде печати точки. Фотография помещалась в прозрачный пакет и вставлялась в принтер. Инфракрасный светодиод АЛ 107 через конический световод со сферической линзой на конце засвечивал часть изображения, весь отраженный от которого свет воспринимался фотоприемником, в качестве которого использовались все те же светодиоды АЛ 107. Однако в данном случае они использовались в качестве фотодиодов. Сигнал от фотоприемников после элементарного преобразования на одном операционном усилителе, питание для которого (5В) бралось от того же игрового порта, подавался на вход игрового порта. Сам игровой порт анализирует время зарядки емкости, которое варьируется в зависимости от сопротивления в джойстике, в нашем случае время зарядки емкости зависит от светового потока, отраженного от фотографии. В принципе, хотя и не столь успешно, в качестве АЦП можно использовать и любой порт компьютера, повесив на один из его контактов емкость и анализируя время ее зарядки до напряжения, соответствующего единице, а потом, разряжая ее через другой контакт порта, подавая на него ноль. Программное обеспечение для проведения сканирования было написано на QuickBASIC 4.5 и только для XT пришлось для обеспечения необходимого быстродействия написать несколько подпрограмм на ассемблере.

Но, как и всякая идея, она имела ограниченное время жизни, ручной труд дешев только для робинзона, а при массовом производстве даже довольно сложное решение становится очень дешевым.

Картридж сканера цветных изображенийIS-22

И вот фирма Canon разместила в корпусе, напоминающем картридж с чернилами, линзы, ПЗС линейку, 3 цветных осветителя и АЦП. Теперь при замене чернильницы на сканирующий модуль вы можете ввести в компьютер фотографии, помещенные в прозрачный пакет. При этом у вас последовательно сканируется изображение при освещении зеленым, синим и красным светодиодами. Время сканирования сопоставимо со временем печати. Драйверы управления сканированием позволяют вам быстро посмотреть, правильно ли вы разместили фотографии, проведя сканирование в 2-битовом режиме с повышенной скоростью. Так как разрешение у принтеров сегодня достигло 360 точек на дюйм, то и сканирование позволяет получить такой же результат. Следует отметить, что при сканировании на хорошем планшетном сканере с тем же разрешением результат будет лучше, поскольку дополнительное горизонтальное перемещение сканирующего узла в принтере приводит к появлению слабо заметной полосчатости в особенности в однородных светлых местах.

Итак, как происходит сканирование, и что оно нам дает.

Я проводил испытания сканирующего модуля IS-22 фирмы Сanon совместно с принтером BJC 2000 . В комплекте со сканирующей головкой поставляется и защитная коробка для картриджа. Подготовка принтера к работе в роли сканера занимает менее минуты. Вы достаете печатающую головку, помещаете ее в защитную коробку, а на ее место помещаете сканирующий модуль, переключаете флажок установки толщины бумаги в среднее положение, и принтер превратился в сканер. Для сканирования вы помещаете сканируемый объект, фотографию или лист текста, в специальный пакет из двух листов пластика, один из которых белый, а другой прозрачный. После этого вы вставляете пакет в принтер, как обычный лист бумаги. Для сканирования вы можете воспользоваться программой IS Scan, которая является абсолютно автономной, или вызвать TWAIN модуль из любого графического редактора. На самом деле в обоих случаях вызывается один и тот же интерфейс , только в одном случае вам предлагается сохранить полученный результат сканирования в виде файла в формате TIFF или BMP, а во втором случае - передать изображение в соответствующий графический редактор. Программа сканирования позволяет вам, как сканировать целиком заданные наперед форматы, начиная с А4, так и произвести предварительное сканирование, а потом выбрать область для подробного сканирования. Предварительное сканирование занимает 34 сек, при этом на экране у вас появляется двухцветное изображение, а лист проскакивает через принтер, так что для последующего сканирования вам надо снова вставить его в принтер, проследив при этом, чтобы фотография внутри пакта не сдвинулась. Сканирование листа формата А4 целиком занимает 3 мин 30 сек в режиме градации серого, при этом изображение освещается зеленым светом. Цветное сканирование листа А4 с разрешением 360 dpi занимает 10 мин 30 сек. Если вы провели предварительное сканирование и затем выделили изображение размером 10х15 см, то его сканирование займет ровно 3 минуты, независимо от ориентации выделенного прямоугольника. Для сравнения скажу, что планшетный сканер NEUHAUS 9600 проводит предварительный просмотр за 24 сек., а время сканирования прямоугольника размером 10х15 см с разрешением 360 dpi составляет у него 1 мин 18 сек.

IS-22 NEUHAUS 9600

Проблема конкурентоспособности состоит в том, что за те 10 лет, которые ушли на реализацию идеи сканирующих приставок, механика сканеров и принтеров и оптика сканеров так сильно подешевели за счет их массового и повсеместного выпуска, что хотя стоимость сканирующей головки 90$ и сравнима со стоимостью чернильницы, но сегодня за эти деньги можно купить и планшетный сканер, который обладает большими возможностями. Поэтому применение этой системы может вызвать интерес лишь у тех, у кого места на рабочем столе так мало, что установка любого дополнительного устройства может оказаться чрезмерной роскошью. Впрочем, обладатели принтеров BJC-4650 формата А3, вероятно, будут рады получить возможность сканировать большие документы и за эти деньги.

© 2024 kotaliti.ru -- Интернет. Безопасность. Программы. Изображения. Полезные советы