Martin Kurz
Ввод изображений в компьютер и его дальнейшая цифровая обработка
так или иначе требует довольно больших капиталовложений. Самым
дорогим прибором здесь, пожалуй, является видеокамера, сигнал с которой
считывается, запоминается и оцифровывается компьютером.
Самый дорогостоящий, но по качеству и самый лучший метод для ввода
изображеня — это оцифровка выходного сигнала с бытовой видеокамеры.
Но при этом схемотехнические затраты здесь все равно значительны. Так
как тут необходим высокоскоростной цифро-аналоговый преобразователь,
быстродействующее запоминающее устройство и соответствующий интерфейс
к персональному компьютеру. Для любительских экспериментов это довольно
дорогостоящий путь. Телевизионная передающая камера с компьютерным интерфейсом слишком дорога, и может значительно подорвать бюджет радиолюбителя.
Выходом из сложившегося положения явилось нетрадиционное применение кристалла динамической памяти. Оказывается, что DRAM может использоваться как чувствительный оптический датчик. Несколько лет назад фирма Micron Technology (американский производитель интегральной схемы на монокристалле) выпустила специальную версию 64k-DRAMS с контрольным окошком, которая продается как сенсор изображения. Так как геометрия кристалла в микросхеме известна, то приложив некоторые усилия можно было сделать видеокамеру. К сожалению эти чипы перестали продавать, что явилось преградой к созданию компьютерной камеры.
Тем не менее, я разобрал компьютерную плату с микросхемами памяти DRAMS, которые имели керамический корпус с металлической крышечкой. Металлическую крышку я убрал довольно быстро, под ней оказалось защитное стекло. Что же делать дальше? Чтобы успешно продолжить эксперимент, было решено использовать параллельный порт персонального компьютера, который как нельзя лучше подходил для ввода/вывода информации. Для управления были написаны две небольшие программы на Ассемблере. И — о чудо! — после нескольких испытаний на дисплее компьютера можно было увидеть какое-то изображение.
Как же это работает?
64k-DRAM содержит 65536 ячеек памяти, которые расположены в
форме матрицы, имеющей обычный доступ. В данном случае здесь использовалась микросхема D4164 фирмы NEC, представляющая собой четыре матрицы по 64×256 ячейки памяти.
Каждая ячейка памяти состоит из конденсатора и
комплементарных транзисторов. В конденсаторе аккумулируется
информация в форме электрического заряда. Комплементарные транзисторы осуществляют доступ (производят коммутацию) к этому конденсатору.
Рис.1. Схема ячейки памяти.
Если выбрана строка матрицы, то переключая поочередно все 256 комплементарных транзисторов этой строки соединяют нужный конденсатор (ячейку) с одним из 256 усилителей. Если напряжение в усилителе выше определенного уровня, то принимается, что это логическая 1, в противном случае на выходе усилителя будет логический 0. Отсчитывая один из 256 усилителей в данной строке (т.е. выбирая адрес столбца), мы выбираем необходимый сигнал на выходе DRAM.
Так как конденсаторы на кристалле памяти имеют утечку (медленно, но неизбежно разряжаются), то они должны постоянно регенерироваться (подзаряжаться), чтобы не потерять свою информацию. Если они перестанут регенерироваться, то через некоторое время заряд в ячейке конденсатора пропадет и соответствующий бит опрокидывается.
Засветкой (экспонированием) конденсатора этот эффект будет усилен, конденсатор разрядится значительно быстрее, результатом будет опрокидывание бита информации. Время разряда конденсатора будет являтся главной величиной интенсивности света в этой ячейке памяти.
Для использования этого эффекта необходимы следующие шаги:
— Сначала все конденсаторы памяти заряжаются.
— Потом в течение некоторого времени идет облучение ячеек памяти.
— Все ячейки памяти опрашиваются и анализируются. Каждая ячейка (фотоэлемент), просматривается на предмет инвертирования первоначального состояния, что будет расцениваться как засветка.
DRAM является микросхемой памяти, поэтому распределение логического адреса должно соответствует физическому месту на кристалле. Чтобы узнавать это распределение необходимо провести несколько испытаний.
В микросхеме DRAM, адреса ячеек которой состоя из 2-х составляющих — адреса строк и адреса столбцов, можно предположить, что и в физической структуре кристалла они расположенны точно также. Как обнаружилось, это фактически так и есть, т.е. логические адреса строк соответствуют физическим строкам и логические адреса столбцов соответствуют физическим столбцам.
Логические адреса в районе строки соответствуют разумеется не физическому местуячейке памяти на интегральной схеме на монокристалле. В обработанном изображение видно это ошибочное распределение перестановленными строками и столбцами. Перестановка разрядов адреса позволяет этот дефект устранить, но, тем не менее, здесь всетаки нужен экспирементальный подход. Геометрия интегральных схем на монокристалле различных изготовителей может быть другой. Потому программа управления функционирует правильно так лишь с микросхемами типа 4164 фирмы NEC. Для других микросхем памяти возможно будут возникать ошибки, но зная принцип управления можно корректировать результат.
Теперь будет ясно, что наша интегральная схема на монокристалле состоит из 4-х матриц, которые лежат рядом. Две крайних матрицы разделены от 2-х средних относительно большими зазороми; это вносит некоторые ошибки в изображение. В этих зазорах находится наверное декодирующая логика. Две средних матрицы разделены гораздо более малым зазором, так что они могут рассматриваются как матрица размером 128×256 ячеек. На этом основании в качестве датчиков используются лишь две средние матрицы. Взгляд через лупу на на микросхему отчетливо определяет матричную структуру кристалла.
Рис.2. Топология кристалла.
Теперь необходимо точно сфокусировать обектив. При внимательном рассматривании бросается в глаза, что все ещё несколько строк и столбцы переставлены. Две строки отображаются правильно, следующие две переставлены друг с другом. Операция чтения содержимого ячеек производит коррекцию этого дефекта. Далее происходит ещe поправка адресов столбцов, из которых четыре читаются правильно, а другие четыре — в ошибочной очередности.
Установить правильное распределения не всегда просто, потому что тут необходима солидная интегральная оптика, и очень точная фокусировка изображения. Рисунок отчетливо виден лишь тогда, когда распределение правильное!
Лучше всего начинать испытания с белой поверхностью, на которую помещаются и перемещаются темные обьекты. Тщательное наблюдение, точная фокусировка обьектива и некоторое терпение помогут распознать грубые неисправности (несовпадения) и тогда выявят особенности интегральной схемы на монокристалле. Грубые неточности распознаются с помощью черных линий, логкализуются на кристалле и беруться под контроль.
Чтобы использовать параллельный порт персонального компьютер для подсоединения микросхемы DRAM, необходима некоторая его модернизация. Порт принтера содержит параллельные конденсаторы и эквивалентные последовательные сопротивления, которые сглаживают крутые фронты тактового синхросигнала; мы не нуждаемся в этих элементах в данном случае и поэтому их следует удалить.
Рис.3. Схема включения ИМС в параллельный порт.
В обычной плате с высокой интеграцией отдельные модули связаны непосредственно CMOS-выходами с портами принтера по шине с низкой нагрузочной способностью, поэтому здесь должен быть буферный двунаправленный драйвер.
Тепеь при помощи кабеля соединяют параллельный порт с панелькой на которой будет установлена микросхема DRAM. Гнезда этой панели должны иметь хорошие контакты (желательно позолоченные) и выдерживать многократные замены, потому что придется подбирать необходимую микросхему. Необходимо также вывести отдельное гнездо питания для микросхемы, потому что напряжение на выходе LPT-порта здесь использовать нельзя. Принтер, однако, не может быть теперь присоединен там!
Очень важен также разделительный конденсатор между штырьком 8 и штырьком 16 DRAM, потому что при включении там протекает достаточно высокий электрический ток (около 100 mA). Этот конденсатор припаивается непосредственно к корпусу кристаллодержателя (панельки) ИС (обратите внимание на полярность! Штырек 8 является +5 вольтами, штырек 16 является массой). Без этого конденсатора вообще ничто не функционирует!
Механическая конструкция интегральной оптики
Полезная поверхность кристалла микросхемы NEC 4164 составляет примерно 1,2х6 кв.мм, если отказываемся от обеих крайних матриц. Интегральная оптика должна выполнятся и выбираться исходя из этого факта.
Объективу с 8 мм фокусными расстояниями соответствует примерно 50 мм стандартный обьектив в малоформатном фотоаппарате. В расчет принимаются также обьективы с фокусными расстояниями от 5 до 35 мм.
Это оптика окупает себя в дальнейшем использовании. Нами был приеменен упомянутый обектив от камеры Super-8 (фокусное расстояние f = 25mm). Лучше использовать короткофокусные обьективы, например от старых тонких пленочных фотоаппаратов, дефектной бытовой телекамеры и т.д. В комиссионных фотомагазинах и фототателье, надеюсь, Вам предложат подходящий обьектив.
Но и без высокачественного обьектива можно достич хороших результатов, применив простую короткофокусную линзу. Качество изображения от линзы не должно уступать изображению, полученному от обьектива. Ведь Вы проецируете изображение на кристалл микросхемы, который не поддерживает высокую разрешающую способность как на фотопленке.
Стандартного решения по размещению и конструкции оптической системы мы здесь дать не можем из-за большого варианта выбора обьективов и его установкой перед кристаллом микросхемы. Необходимо лишь отметить о точном центрировании интегральной оптики, чтобы изображение точно сфокусировалось на кристалле.
Световая чувствительность
Интегральная схема на монокристалле не обеспечивает высокую чувствительность света, так что времена облучения кристалла более длительное, чем у настоящей CCD-видеокамеры.
Скорость перемещения фиксируемых обьектов зависит от освещенности и составляет от сотен до 20 секунд. Более длительные времена не возможны, потому что иначе изображение сильно "зашумлено" (размыто). В течение этого довольно длительного периода облучения желательно иметь штатив для вашей конструкции. Также Ваши руки должны быть свободными, чтобы производить коррекцию времени облучения, работая на клавиатуре компьютера и записывая удавшиеся изображения.
Отмечено, что кристалл микросхемы DRAM более восприимчив к красному спектру оптического диапазона, чем к голубому, возможно он имеет хорошую спектральную
чувствительность в инфракрасном (невидимом) спектре излучения.
Программное обеспечение
Инициализация и чтение кристалла памяти выполняется программами на Ассемблере, которые вставлены в программы на Turbo-Pascal.
Инициализациия.
Процедура INITRAM инициализирует интегральную микросхему. Так как наличию заряда в ячейках памяти микросхемы NEC 4164 соответствует логическая "1", то во все ячейки предварительно записываются "1". Для управления микросхемой DRAM необходимо некоторое количество сложных тактирующих сигналов.
Рис.4. Тактирование при чтения ИМС.
Сначала устанавливается счетчик адреса строки на адресном входе микросхемы. Вход RAS при этом будет установлен в "0" — разрешается установка адреса строки. Далее выдается адрес столбца, вход Din устанавливается в желаемое значение (в нашем случае все ячейки устанавливаются в "1"), далее вход CAS переводится в "0". DRAM принял теперь адрес столбцов и бит данных. Этот процесс повторяется для всеч 32768 ячеек памяти; теперь микросхема DRAM инициализирована, все конденсаторы заряжены (записаны "1").
Далее проходит некоторый период времени в течение которого происходит облучение кристалла памяти микросхемы. Когда это время истекает происходит считывание информации из ячеек памяти, при этом подсвеченные ячейки изменят свое состояние (засвеченные конденсаторы разрядятся быстрее).
Считывание информации.
Считывание информации из кристалл памяти осуществляется процедурой LESERAM. Это будет происходить так же как и в процедуре INITRAM.
Содержание каждой ячейки памяти будет запомнено, чтобы далее преобразоваться в изображение. При этом производится коррекция локальных ошибок. Соответственно каждые 8 бит обьединяются в байты. Для создания изображения нужны 4096 байтов, так как использеутся лишь половина кристалла памяти. Эти данные далее будут переданы основной программе.
Программа корретирования выравниваете различную чувствительность отдельных пиксел. (Ячейки памяти на краях матрицы более чувствительны, чем центральная зона.)
Так как между обеими средними матрицами (для NEC 4164!) есть небольшой зазор, имеется ещe вторая программа коррекции. Она растаскивает обе половинки изображения на 5 пикселов и возникший интервал рационально заполняет. В некоторых случаях рациональнее отказаться от этой коррекции или улучшить алгоритм обработки.
Три программы INITRAM (инициализация), LESERAM (чтение) и коррекциия содержатся в процедуре "Экспонирование" и необходимы для создания интервала времени облучения матрицы и записи информации изображения.
Процедура "ANZEIGE" (ИНДИКАЦИЯ) служит для быстрого вывода изображения из VGA-карты. При этом информация о изображении вводится непосредственно в видеопамять, что существенно ускоряет результат. К сожалению, вертикальные расстояния отдельных ячеек памяти двоятся, что обьясняется процедурой компенсации в программе индикации. При использовании других адаптеров дисплея возможно потребуется подстройка этой подпрограммы.
Процедуры "SPEICHERN" (Запись) и "LESEN" (Чтение) записывают и соответственно
сохраняют изображение в BMP формат и скидывают на жесткий диск.
Другие программы.
Рассмотренные выше программы используются другими прикладными программами.
Программа "KUCKUCK" (Кукушка) является самой важной изо всех; с ее помощью записываются отдельные изображения, а также серии изображений с 2, 4 или 10 уровнями
яркости. Текущее изображение всегда на мониторе и может записываться с помощью клавиши "пробел".
Принципиально камера, конечно, может принимать изображения
лишь с 2 уровнями (черное и белое), тем не менее можно производить
неоднократные облучения изображения с полутонами (оттенками серого).
Рис.5. Диагармма разряда конденсатора ячейки памяти
Однократные экспонирования полутоновых изображений записываются последовательно в файлы (".3" и соответственно ".9") и далее преобразовываются для дальнейшей обработки программами "Grau3", "Grau4" и "Dither": "Grau3" производит 3 однократных экспонирования точечного рисунка с 4 уровнями яркости. (4 бита на пиксел информации, при этом используются лишь цвета 0, 7, 8 и 15 и, соответственно — черный, светло-серый, темно-серый и белый уровни.
Для быстрой экранной обработки полутоновых изображений необходимо другое преобразование: программа "Grau4" преобразовывает одинаковые входные данные как каким же образом как и "Grau3", но в другом формате.
Девять однократных экспонирований для файла ".9" преобразовываются программой "Dither" в черно-белое изображение (соответственно 3 раза по ширине и высоте оригинал). В результате экспонирований каждый пиксел в девяти изображениях для каждой точки создаст матрицу случайных распределений размером 3х3 пиксела.
Программа "FilmAb" (Видеоклип) служит для просмотра созданных последовательностей изображений, которые в свою очередь были созданы программой "KUCKUCK". Таким образом, могут создаваться короткие "видеоклипы" с 2 или 4 уровнями яркости и порядок просмотра может выбираться при этом любой.
Так как формат 128х256 точек получается достаточно большым, особенно длина строк в два раза выше, чем столбцов, то можно воспользоваться "половинным форматом" с разрешение 128х128 точек. Прежде всего при выполнении программы "FilmAb" (Видеоклип) нужно рационально нагружать эту опцию, чтобы экономить место на диске.
Полученные отдельные изображения могут обрабатываться программами Windows, например, Paintbrush.
Список отдельных процедур и программ:
— VIDEO.INC содержит высокоуровневые процедуры:
— INITRAM, INITRAM2: Инициализация микросхемы D4164 в полный и соответственно половинный формат.
— LESERAM, LESERAM2: чтение информации изображения.
— ANZEIGE: быстрый ввод в VGA-карту.
— LESEN: файл точечного рисунка с 2 цветами, размером 128х256 и 128х128 пикселов.
— SPEICHERN: данные точечного рисунка, формат как при чтении
— KUCKUCK: Запись в 2-х форматах — в 2, 4 или 10 уровней яркости.
— GRAU3: Генерирует 4-х цветный BMP файл из 3 однократных экспонирований (".3" -> ".BMP").
— GRAU4: Генерируются данные с информацией для 4 бита VGA-карты (".3" -> ".4").
— DITHER: Из 9 однократных экспонирований создается 2 цветных изображение (".9" -> ".BMP").
— FILMAB: 2-х или 4-х цветные точечные рисунки обьединяются в фильм (присваивается имя: "имя. BMP").
Литература:
— Datenblatt IS 32 Optic Ram, Micron Technology
— Datenblatt 4164 DRAM, NEC
— c’t 6/88 PC-Bausteine, Details ьber die Centronics-parallele-Schnittstelle
— Byte September / Oktober 1983.
Steve Ciarcia: "Build the Micro D-Cam Solid-State Video Camera"
— Electronics & Wireless World April / Mai / Juni 1987.
G.J. Avcock, F.W. Stone, R. Thomas: "Image aquisition system"
— Programming Windows: Charles Petzold, Microsoft Press
Комплект оригинальной документации в файле kuckuck.zip (283 kB)
Перевод с немецкого Николая Большакова
Примечание переводчика.
Данная работа, судя по дате создания файлов, была написана в 1992 году, когда ещё даже 486 компьютеры были очень крутой штукой. Возможно под современные РС придется корректировать программное обеспечение. Может оказаться, что параллельный порт компьютера не придется дорабатывать (не хочется лишаться принтера :-). Насчет применяемых микросхем: — видимо не просто будет найти DRAM именно фирмы NEC (я у себя в хламе такой не нашел пока), а МС другой фирмы может не содержать металлической крышечки. Как тогда добраться до кристалла?
Вообще, мое мнение, что данная статья является лишь отправной точкой для экспериментирования над этой интересной проблемой.
В исходном файле kuckuck.zip есть ещё несколько текстовых файлов. Постараюсь их тоже перевести.
Желаю всем удачи!