Обработка телевизионных изображений средствами языка Java

В данной дипломной работе проводится анализ средств языка Java для работы с изображениями. Также рассмотрены два основных метода коррекции хроматических аберраций – с помощью коэффициента корреляции и с помощью метода поиска углов на изображении.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.08.2018
Размер файла 5,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Поволжский государственный университет телекоммуникаций и информатики»

Факультет Информационных систем и технологий

Направление (специальность) Информатика и вычислительная техника

Кафедра Информационных систем и технологий

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

(БАКАЛАВРСКАЯ РАБОТА)

Обработка телевизионных изображений средствами языка Java

Утверждаю зав.кафедрой д.т.н., доцент Н.И. Лиманова

Руководитель доцент к.т.н. К.А. Никитин

Н. контролер доцент к.т.н., с.н.с. О.Л. Куляс

Разработал ПО-32 Е.А. Лапшов

Самара 2017

Задание

по подготовке выпускной квалификационной работы

Студента Лапшова Евгения Александровича

1 Тема ВКР Обработка телевизионных изображений средствами языка Java

Утверждена приказом по университету от 3.04.2017 № 74-2

2 Срок сдачи студентом законченной ВКР 10.06.17

3 Исходные данные и постановка задачи

1) Изучить представление изображений в ЭВМ по рекомендованной литературе.

2) Изучить и проанализировать средства работы с изображениями в языке Java.

3) Изучить алгоритмы коррекции искажений изображений.

4) Реализовать два метода коррекции изображений с использованием языка Java

4 Перечень подлежащих разработке в ВКР вопросов или краткое содержание ВКР. Сроки исполнения 10.06.2017

Провести анализ предметной области

Рассмотреть средства работы с изображениями в языке Java

Рассмотреть два метода коррекции изображений

Разработать программу на языке Java с реализацией двух рассмотренных методов коррекции

Выполнить коррекцию тестовых изображений.

5 Перечень графического материала Сроки исполнения 10.06.2017

Презентационный материал

Результаты работы программы

Листинг основных классов и методов программы

6 Дата выдачи задания «6» апреля 2016 г.

Кафедра

Утверждаю

Руководитель

Задание принял

к исполнению Информационных систем и технологий

зав.кафедрой д.т.н., проф. Н.И. Лиманова

доцент к.т.н К.А. Никитин

ПО-32 Е.А. Лапшов

Реферат

Название Обработка телевизионных изображений средствами языка Java

Автор Лапшов Евгений Александрович

Научный руководитель Никитин Константин Александрович

Ключевые слова Обработка изображений, хроматические аберрации, оптические искажения, коэффициент корреляции, Java, OpenCV, JavaCV

Дата публикации 2017

Библиографическое описание

Лапшов, Е.А. Обработка телевизионных изображений средствами языка Java [Текст]: дипломный проект / Е.А. Лапшов. Поволжский государственный университет телекоммуникаций и информатики (ПГУТИ). Факультет информационных систем и технологий (ФИСТ). Кафедра информационных систем и технологий (ИСТ): науч. рук. К.А. Никитин - Самара. 2017. - 78 с.

Аннотация

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

Руководитель ВКР К.А. Никитин

Введение

язык java хроматический аберрация

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

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

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

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

Информативность получаемых в таких системах изображений и их достоверность в значительной степени зависит от наличия потерь и искажений информации, возникающих при ее прохождении от входа к выходу. Особым отличительным признаком данной ТВ-системы регистрации является наличие радиационно-защитной системы значительной толщины, находящейся между объектом и камерным объективом. Эффекты, возникающие при прохождении света через толщу стекла смотровой системы, вносят специфику в формирование изображений на светочувствительной поверхности телевизионного датчика и приводят к потерям и искажениям информации.

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

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

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

Вторая глава содержит общие сведения об языке Java, о встроенных в него методах обработки изображений, а также библиотеке компьютерного зрения OpenCV, об её структуре и возможностях. В третьей главе подробно описываются алгоритмы коррекции хроматических аберраций, вычисления рассовмещений цветовых компонент при помощи коэффициента корреляции Пирсона, а также алгоритма нахождения углов на изображении Harris Corner Detection. В заключении сделаны основные выводы и результаты по проделанной работе.

1. Теоретические сведения

1.1 Изображение в цифровом представлении

Изображение в цифровом представлении - это, по сути, массив пикселей. Когда мы открываем изображение, каждый пиксель представляется неким четырехбайтным числом такого формата (Рис.1.1).

Рис. 1.1 - Представление изображения

Числа BB, GG, RR составляют интенсивность того или иного цвета в пикселе, т.е. величина каждой составляющей BB, GG, BB, от 0 до 255, определяет цвет пикселя, первое число определяет Aplha-канал (прозрачность).

Фактически, изображение также можно определить в виде двумерной функции f(x, y), где x и y - координаты в пространстве. Значение f в любой точке, которая задаётся парой координат (x, y) - называется интенсивностью (либо уровнем серого) изображения в текущей точке.

Если величины x, y и f принимают дискретные значения, то можно говорить, что это изображения является цифровым. Цифровой обработкой изображений является обработка цифровых изображений при помощи компьютеров. Каждое цифровое изображение состоит из элементов, каждый из которых находится в определённом месте и принимает конкретное значение. Такие элементы называются пикселями.

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

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

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

Рис. 1.2 - Пример растрового и векторного изображений

Основными характеристиками растровых изображений являются:

размер изображения - выражается в количестве пикселей по ширине и высоте (например, 1920x1080px);

количество цветов (глубина цвета);

цветовая модель (по-другому, цветовое пространство) - RGB, CMYK, YCbCr и другие;

разрешение изображения - величина, которая определяет количество пикселей на единицу площади изображения.

Растровые изображения создаются фотоаппаратами, сканерами, в растровом редакторе и другими способами. Отдельный кадр, взятый с цифровой видеокамеры также представляет собой растровое изображение. Растровые изображения имеют как преимущества, так и недостатки. К преимуществам можно отнести:

распространённость, т.к. растровые изображения используются сейчас практически повсеместно;

растровая графика позволяет создать любое изображение вне зависимости от его сложности, в отличие от векторной, где нельзя точно передать эффект перехода от одного цвета к другому без существенного увеличения размера файла;

высокая скорость обработки, если не требуется масштабирование;

растровое представление изображений естественно для устройств ввода/вывода, таких как мониторы, экраны различных устройств, принтеры, фотоаппараты, сканеры и т.д.

Также растровые изображения имеют и свои недостатки:

большой размер файла изображения;

невозможно провести идеальное масштабирование без потерь;

невозможно вывести на печать на векторном графопостроителе.

Растровые изображения обычно хранятся в сжатом виде. Есть два вида сжатия: с потерями и без потерь. Восстановить оригинальное изображение возможно лишь в том случае, если оно было сжато алгоритмом без потерь. Но такие файлы имеют довольно большой размер, поэтому в большинстве случаев применяются алгоритмы сжатия растровых изображений с потерями.

Сейчас среди форматов сжатия изображений наиболее распространён формат JPEG, который имеет изменчивую структуру, зависящую от степени компрессии. JPEG был разработан Joint Photographic Experts Group. Это стандартный метод сжатия фотографических изображений.

Данный алгоритм сжатия используется в основе формата MJPEG, который является наиболее распространённым форматом вывода видеопотока с телевизионных, видео- и веб-камер. MJPEG - является покадровым методом видеосжатия, главной особенностью которого является сжатие непосредственно каждого кадра видеопотока в отдельности при помощи алгоритма сжатия изображений JPEG.

Motion JPEG использует внутрикадровое сжатие с потерями на основе дискретного косинусного преобразования (ДКП). Эта математическая операция преобразует каждый кадр/поле видеоизображения из пространственной области в частотную область (область преобразования). Психовизуальная модель, основанная на особенностях восприятия изображений человеком, удаляет высокочастотную информацию, загрубляя резкие переходы яркости и оттенков цвета. Коэффициенты ДКП квантуются, квантованные коэффициенты затем без потерь упаковываются в выходной битовый поток с использованием кодов Хаффмана либо с помощью арифметического кодирования. Почти все программные реализации MJPEG позволяют пользователям контролировать степень сжатия (а также другие параметры) и достигать компромисса качества изображения и размера файла. При аппаратных решениях параметры кодирования, как правило, предварительно выбраны и зафиксированы.

При внутрикадровой схеме сжатия в MJPEG качество изображения зависит непосредственно от статической (пространственной) сложности каждого видеокадра. Кадры с большими гладкими переходами или монотонными областями хорошо сжимаются, но при слишком высоких степенях сжатия содержат, помимо оригинальных деталей, видимые артефакты сжатия в виде блоков размером 8х8 пикселей, несколько отличающиеся по яркости и оттенку цвета. Появление их связано с грубым квантованием низкочастотных коэффициентов ДКП. Кадры, имеющие сложные текстуры, тонкие кривые линии, помимо артефактов блочности содержат также артефакты, проявляющиеся в виде шума вокруг тонких линий и на резких границах (так называемый эффект Гиббса), связанные с грубым квантованием высокочастотных коэффициентов ДКП.

1.2 Цветовые модели

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

Цветовые модели могут разделяться на аппаратно-зависимые (на данный момент их большинство, например к ним относятся RGB, CMYK и т.д.), а также аппаратно-независимые (например, модель Lab).

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

Основные цветовые модели выглядят таким образом:

RGB;

CMY (Cyan Magenta Yellow);

CMYK (Cyan Magenta Yellow Key, причем Key означает черный цвет);

HSB;

Lab;

HSV (Hue, Saturation, Value);

HLS (Hue, Lightness, Saturation);

В цифровых системах обработки изображений используются, в основном, четыре основных модели, а именно: RGB, CMYK, HSB (в разных вариантах) и Lab.

По принципам действия все вышеперечисленные цветовые модели возможно разделить на три подкласса:

аддитивные, которые основаны на сложении цветов (RGB);

субтрактивные, которые основаны на операции вычитания цветов (CMY, CMYK и др.);

перцепционные, которые базируются на восприятии (HSB, HLS, LAB, YCC и др.).

Цветовая модель RGB

В данной работе при обработке изображений будет использоваться цветовая модель RGB, т.к. она используется в устройствах, работающих со световыми потоками: ТВ-камеры, сканеры, мониторы, цифровые фотоаппараты. Таким образом, рассмотрим подробнее эту модель.

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

Этими компонентами являются красный (Red), зеленый (Green) и синий (Вlue) цвета. При попарном смешивании первичных цветов образуются вторичные цвета: голубой (Сyan), пурпурный (Magenta) и желтый (Yellow). Следует отметить, что первичные и вторичные цвета относятся к базовым цветам.

Данную модель можно упрощённо представить в виде единичного куба, построенного по осям R, G и B, соответственно (Рис. 1.3). При этом начало координат представляет собой чёрный цвет, а противоположная вершина с координатами (1, 1, 1) - белый. Вершины куба, расположенные по осям, представляют основные цвета, а оставшиеся - дополнительные цвета.

Рис. 1.3 - Цветовой куб модели RGB

Каждую точку внутри единичного куба возможно представить в виде векторной суммы основных цветов, используя единичные векторы R, G, B:

Цветовая модель RGB наглядно представлена ниже (Рис. 1.4):

Рис. 1.4 - Цветовая модель RGB

Оптические дефекты на изображениях

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

1.3 Хроматические аберрации

Хроматическая аберрация - это один из типов искажения цвета оптическими приборами, вызванный дисперсией света. При этом явлении на изображении обычно встречаются цветные полосы вдоль краёв различных объектов (обычно красного и синего цвета), особенно проявляющихся при увеличении изображения (Рис. 1.5).

Рис. 1.5 - Пример хроматической аберрации

Существует две формы хроматической аберрации: поперечная аберрация, или хроматизм увеличения (Рис. 1.6), в которой аберрация вызывает геометрические сдвиги между различными цветными каналами.

Рис. 1.6 - Поперечная хроматическая аберрация

А также существует продольная аберрация, которая вызывает цветное размытие (Рис. 1.7).

Рис. 1.7 - Продольная (осевая) хроматическая аберрация

Показатель преломления оптических материалов зависит от длины волны проходящего света. Это приводит к расщеплению белого света в спектр, когда луч проходит через призму. Эффект продольной хроматической аберрации можно увидеть на ряде цифровых или пленочных фотографиях, снятых с бюджетными объективами, особенно если контраст сцены является относительно высоким.

В связи с продольной хроматической аберрацией (LCA) световой луч, состоящий из различных длин волн, не может быть сфокусирован в одной плоскости. Лучи коротких длин волн (синяя область видимого спектра) фокусируются ближе к объективу, а лучи длинных волн (красные) - дальше от объектива. Это означает, что в зависимости от положения плоскости изображения (блока формирования изображения) относительно объектива только часть первоначального луча света фокусируется на плоскости чувствительного элемента. Оставшаяся часть лучей будет не сфокусирована. Как только лучи из средней части спектра (зелёная область видимого спектра) формируют общую чёткость изображения, блок формирования изображения обычно встаёт в положение, где фокусируются лучи средних длин волн, что позволяет несколько дефокусироваться коротким и длинным лучам.

LCA вызывают ухудшение качества изображения в двух направлениях. С одной стороны, расфокусированы два цветовых канала из трёх, что приводит к снижению общей чёткости. С другой стороны, в силу различного размытия цветовых каналов, есть недостаток световой интенсивности с одной стороны, и чрезмерная интенсивность с другой стороны высокого контрастного края в некоторых из цветовых каналов. Это приводит к цветным артефактам вокруг контрастных границ, как правило, называемых цветными полосами.

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

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

Более того, постоянно совершенствуются полупроводниковые технологий, а также из-за погони производителей за миниатюризации и экономической эффективностью, шаг между пикселями датчиков уменьшается на 25% от одного поколения к другому. Это делает камеры, особенно с современными блоками формирования изображения, более чувствительными к LCA, чем когда-либо. Поэтому существует потребность в цифровых методах обработки изображения, позволяющих исключить влияние LCA на недорогие тонкие объективы.

С другой стороны, есть методы, которые позволяют получать определенные преимущества из больших LCA. Разница между резкостью цветовых каналов используется для уменьшения числа шагов фокусировки оптической системы с пассивным автофокусом. Также был описан метод получения пространственной глубины информации из LCA. Полное использование этих методов возможно только когда количество аберраций является значительным. Но маловероятно, что один поиск артефактов, вызванных наличием LCA, будет приемлемой ценой за эти расширенные возможности камеры в потребительского фотографии. Таким образом, изображения, полученные с таких устройств, также должны подвергаться LCA коррекции.

Оптические аберрации разделяются на монохроматические и хроматические. Математическая обработка геометрических изображений, известная сейчас как теории аберраций, была впервые описана в 1856 году Зейделем. Есть пять основных монохроматических аберрации (Зейделя): дисторсия (известны бочкообразная и подушкообразная дисторсия), сферическая аберрация, кома, астигматизм и кривизна поля. Хроматические аберрации вызваны зависимостью коэффициента преломления линзы от длины волны, и могут подразделяться на продольную и поперечную компоненты. Под хроматической аберрацией (СА), мы будем понимать комбинацию продольной и поперечной аберраций. В этой статье, мы концентрируемся на СА. Эффект CA тесно связан с понятиями кривизны поля и астигматизма.

Свойства линз меняются с длиной волны, так как показатель преломления зависит от длины волны. В дополнение к монохроматическим аберрации (Зейделя), хроматические аберрации содержат зависимости смещения фокусировки от длины волны. Эти смещения можно разбить на продольные хроматические аберрации (смещения вдоль оптической оси) и боковые хроматические аберрации (смещения перпендикулярные оптической оси). Боковая хроматическая аберрация, иначе известная как поперечная хроматическая аберрация, в сочетании со сферической аберрацией (которая является функцией апертурного радиуса) определяют высоту цветного луча. Это сочетание называют сферохроматической аберрацией (SCA) или ошибкой Гаусса. В этой статье, для простоты, под СА мы подразумеваем сочетание обычной СА и сферической аберрацией. Рис. 1.8 иллюстрирует появление СА.

Рис. 1.8 - Иллюстрация продольной и поперечной хроматических аберраций (показаны только красные и синие лучи).

Хроматическая аберрация имеет три эффекта на цветные изображения: различное увеличение между цветными компонентами, различная фокусировка между компонентами и смещение центров между компонентами.

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

Принимая во внимание, что разности увеличения радиально симметричны относительно центра оптической системы и имея небольшую величину ближе к центру, чем к краю, различия центров компонент воздействует на всё изображение равномерно. В нашей системе величина смещения между не скорректированными красной, зелёной и синей компонентами находится в диапазоне 0,1 - 0,4 ширины пиксела, в зависимости от компоненты изображения и настроек объектива.

1.4 Дисторсия

Другим видом оптического искажения является дисторсия.

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

Пример искажений показан ниже (Рис. 1.9):

Рис. 1.9 - Пример дисторсии

Дисторсия может корректироваться на этапе разработки оптической системы при помощи правильного подбора линз и других элементов объектива, а также уже после съёмки, при обработке на компьютере в графическом редакторе.

2. Использование средств Java для обработки изображений

2.1 Общие сведения о языке Java

Java представляет собой язык программирования и платформу вычислений, которая была впервые выпущена Sun Microsystems в 1995 г.

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

2.2 Средства языка Java для обработки изображений

Рассмотрим подробнее, какие средства предоставляет язык Java для обработки цифровых изображений.

Изображения -- это объекты класса image, который является частью пакета java.awt. Для манипулирования изображениями используются классы пакета java.awt.image, который содержит большое количество классов и интерфейсов изображений.

В пакете java.awt.image для основных операций над изображениями используются следующие классы:

MemorylmageSource.java;

FilteredlmageSource.java;

PixelGrabber.java;

ImageFilter.java;

RGBImageFilter.java;

Grayscale.java и другие.

Существуют три основных операции, которые всегда используются для работы с любыми изображениями. Это создание изображения, его загрузка и просмотр.

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

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

Создание объекта изображения

Чтобы изображения стали видимыми, их нужно рисовать в окне. Однако класс Image не имеет достаточной информации для того, чтобы создать надлежащий формат данных для экрана.

Поэтому класс Component (из пакета java.awt) содержит специальный

"производственный" (factory) метод с именем createImage(), который используется для создания image-объектов.

Стоит отметить, что все AWT-компоненты являются подклассами Component, поэтому все они поддерживают данный метод.

Метод createImage() имеет две формы:

Image createImage (ImageProducer imgProd);

Image createImage(int width, int height);

Первая форма возвращает изображение, изготовленное параметром imgProd, который является объектом класса, реализующего интерфейс ImageProducer (производителей изображений мы рассмотрим позже).

Вторая форма возвращает пустое изображение, которое имеет

указанную ширину и высоту.

Например:

Canvas с = new Canvas () ;

Image test = с.createImage (200, 100);

Здесь создается экземпляр (объект) класса Canvas и затем вызывается производственный метод createImage(), чтобы фактически построить объект типа Image. В этом случае изображение будет пустым.

Загрузка изображений

Другой способ получения изображения -- его загрузка. Для этого

используется метод getImage(), определенный классом Applet.

Он имеет следующие формы:

Image getImage(URL url)

Image getImage(URL url, String ImageName)

Первая версия возвращает image-объект, который инкапсулирует изображение, найденное по (универсальному) адресу, указанному в параметре url.

Вторая версия возвращает image-объект, который инкапсулирует изображение, найденное по адресу, указанному в url, и имеющему имя, указанное в ImageName.

Просмотр изображений

Имея изображение, вы можете выводить его на экран, используя метод drawImage(), который является членом класса Graphics. Он содержит несколько форм. Мы будем использовать метод в следующей форме:

boolean drawImage(Image imgObj, int left, int top, ImageObserver imgOb)

Он выводит изображение, переданное ему параметром imgObj, размещая его левый верхний угол с позиции, указанной в left и top.

imgOb -- ссылка на класс, который реализует интерфейс ImageObserver. Этот интерфейс реализуется всеми AWT-компонентами. Наблюдатель изображения (image observer) -- это объект, который может контролировать изображение, пока оно загружается.

Ниже показан пример загрузки и отображения одиночного изображения:

import java.awt.*;

import java.applet.*;

public class SimpleImageLoad extends Applet {

Image img; // Ссылка на изображение

public void init() {

img = getImage(getDocumentBase(), getParamter("img"));

}

public void paint(Graphics g) {

g.drawImage(img, 0, 0, this);

}

}

Класс MemoryImageSource.java

MemorylmageSource -- это класс, который создает новый Image-объект из массива данных. Он такой конструктор:

MemorylmageSource (int width, int height, int pixel [ ], int offset, int scanLineWidth);

Объект MemoryImageSource создается из массива целых чисел (в формате цветовой модели RGB), указанного в параметре pixel (он-то и содержит данные для воспроизведения Image-объекта). В этой цветовой модели пиксел -- это целое число формата OxAARRGGBB, где А - Alpha, R - Red, G -- Green, и В - Blue.

Значение Alpha представляет степень прозрачности пиксела (0 - полностью прозрачный, 255 -- полностью непрозрачный). Ширина и высота результирующего изображения передается в параметрах width и height. Исходную точку для начала чтения данных в массиве пикселов задает параметр offset. Ширина строки сканирования (которая часто совпадает с шириной изображения) задает параметр scanLinewidth.

Ниже показан пример кода, который генерирует MemoryImageSource-объект, используя разновидность простого алгоритма (поразрядное исключающее ИЛИ (х, у)-координат каждого пиксела):

public class MemoryImageGenerator extends Applet {

Image img;

public void init() {

Dimension d = getSize();

int w = d.width;

int h = d.height;

int pixels[] = new int[w * h];

int i = 0;

for(int y = 0; y < h; y++) {

for(int x = 0; x < w; x++) {

int r = (x ^ y) & 0xff;

int g = (x * 2 ^ y * 2) & 0xff;

int b = (x * 4 ^ y * 4) & 0xff;

pixels[i++] = (255 << 24) | (r << 16) | (g << 8) | b;

}

}

img = createImage(new MemoryImageSource(w, h, pixels, 0, w) );

}

public void paint(Graphics g) {

g.drawImage(img, 0, 0, this);

}

}

Класс Grayscale.java

Фильтр Grayscale -- это подкласс фильтра RGBImageFilter. Данная формулировка означает, что Grayscale может использоваться как ImageFilter - параметр для конструктора FilteredlmageSource. Тогда все, что нужно сделать, это переопределить метод fiiterRGB() так, чтобы изменить входящие значения цветов.

Он берет красные, зеленые и синие значения и вычисляет яркость пиксела, используя NTSC фактор преобразования "цвет-яркость" (NTSC - National Television Standards Committee, -- Национальный Телевизионный Комитет Стандартов). Затем он просто возвращает серый пиксел, который имеет ту же яркость, что и цветной источник.

Пример использования:

class Grayscale extends RGBImageFilter implements PlugInFilter {

public Image filter(Applet a, Image in) {

return a.createImage(new FilteredImageSource(in.getSource(), this));

}

public int filterRGB(int x, int y, int rgb) {

int r = (rgb >> 16) & 0xff;

int g = (rgb >> 8) & 0xff;

int b = rgb & 0xff;

int k = (int) (.56 * g + .33 * r + .11 * b);

return (0xff000000 | k << 16 | k << 8 | k);

}

}

После анализа встроенного инструментария для обработки изображений в языке Java был сделан вывод, что для проведения коррекции хроматических аберраций такого функционала будет недостаточно.

Поэтому был проведён поиск дополнительных библиотек для Java, с расширенным функционалом, которые позволяли бы эффективно обрабатывать цифровые изображения.

Таким образом, была выбрана библиотека OpenCV, а именно её надстройка JavaCV, которая является оболочкой для доступа к методам и функциям библиотеки OpenCV из любого приложения, написанного на языке Java.

2.3 Обзор библиотеки OpenCV

OpenCV - это библиотека с открытым исходным кодом (Open Source Computer Vision Library) для обработки цифровых изображений. Написана на C/C++ и работает на компьютерах под управлением Windows, Linux, Mac OS, а также Android и iOS.

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

Главной целью OpenCV является предоставление простого интерфейса, которые позволяет быстро и эффективно проектировать и создавать сложные приложения для анализа и обработки цифровых изображений.

В своём приложении я буду использовать JavaCV - своеобразный интерфейс (Рис. 2.1) для библиотеки OpenCV, которая предоставляет возможность использовать все функции OpenCV в приложениях на языке Java.

Рис. 2.1 - JavaCV, как интерфейс для библиотеки OpenCV

Основные модули OpenCV

Основные модули библиотеки OpenCV:

Ядро cxcore - ядро библиотеки OpenCV. Содержит базовые алгоритмы и структуры данных для операций над многомерными числовыми массивами, матричной алгебры, различных математических функций. Кроме этого поддерживаются запись/восстановление структур данных в/из XML и 2D-графики;

Модуль обработки изображений и компьютерного зрения CV - базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств), анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы), производит анализ движения, слежение за объектами, а также обнаружение объектов (в частности, лиц). Имеет возможность калибровки камер, элементы восстановления пространственной структуры;

Модуль для ввода/вывода изображений и видео, создания пользовательского интерфейса Highgui - захват видео с камер и видео файлов, создание окон, чтение/запись статических изображений, функции для организации простого UI;

Экспериментальные и устаревшие функции (Cvaux) - пространственное зрение (стереокалибрация, самокалибрация), поиск стереосоответствия, клики в графах, а также нахождение и описание черт лица;

Захват видео (CvCam) - позволяет осуществлять захват видео с цифровых видеокамер.

Начиная с версии 2.2 структура библиотеки OpenCV полностью переработана. Так, вместо больших универсальных модулей (cxcore, Cvaux, Highgui, Cvaux) библиотека OpenCV разделена на небольшие модули по функцианальному использованию:

opencv_core -- ядро: базовые структуры, вычисления (математические функции, генерация псевдослучайных чисел, DFT, DCT, ввод/вывод в XML и т.п.)

opencv_imgproc -- обработка изображений (фильтры, преобразования и т. д.).

opencv_highgui -- простой UI, загрузка/сохранение изображений и видео.

opencv_ml -- методы и модели машинного обучения (SVM, деревья принятия решений и т. д.).

opencv_features2d -- различные дескрипторы (SURF).

opencv_video -- анализ движения и отслеживание объектов (оптический поток, шаблоны движения, устранение фона).

opencv_objdetect -- детектирование объектов на изображении (вейвлеты Хаара, HOG и т. д.).

opencv_calib3d -- калибровка камеры, поиск стерео-соответстсвия и элементы обработки трехмерных данных.

opencv_flann -- библиотека быстрого поиска ближайших соседей (FLANN).

opencv_contrib -- сопутствующий код, еще не готовый для применения.

opencv_gpu -- ускорение некоторых функций OpenCV за счет CUDA (NVidia).

2.4 Архитектура библиотеки OpenCV

Многомерная архитектура проекта представлена на Рис. 2.2.

Библиотека состоит из 16 модулей. Реализованы около 1000 алгоритмов. Функциональность доступна на разных языках: C, C++, Python, CUDA, Java. Поддерживаются основные операционные системы: MS Windows, Linux, Mac, Android, iOS. Есть возможность использования сторонних библиотек, например, для работы с устройством Kinect (OpenNI), разработки параллельных программ (TBB) и др.

Рис. 2.2 - Архитектура библиотеки OpenCV

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

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

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

Рис. 2.3 - Схема типичного приложения, использующего OpenCV

Описание и структура IplImage

Основным рабочим объектом в OpenCV является IplImage. Он будет и далее использоваться при разработке приложения в данной работе.

Объект IplImage происходит из массива для хранения изображения CvMat, а тот в свою очередь из CvArr, который можно считать, так называемым, «абстрактным базовым классом» для CvMat и IplImage. Изначально структура была частью библиотеки IPL (Intel's Image Processing).

Ниже представлена структура объекта IplImage:

typedef struct _IplImage {

int nSize; /* size of iplImage struct */

int ID; /* image header version */

int nChannels;

int alphaChannel;

int depth; /* pixel depth in bits */

char colorModel[4];

char channelSeq[4];

int dataOrder;

int origin;

int align; /* 4- or 8-byte align */

int width;

int height;

struct _IplROI *roi; /* pointer to ROI if any */

struct _IplImage *maskROI; /* pointer to mask ROI if any */

void *imageId; /* use of the application */

struct _IplTileInfo *tileInfo; /* contains information on tiling */

int imageSize; /* useful size in bytes */

char *imageData; /* pointer to aligned image */

int widthStep; /* size of aligned line in bytes */

int BorderMode[4]; /* the top, bottom, left, and right border mode */

int BorderConst[4]; /* const. for top, bottom, left, right border */

char *imageDataOrigin; /* ptr to full, nonaligned image */

} IplImage;

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

Следующие поля структуры - origin и dataOrder. Переменная origin может принимать одно из двух значений: IPL_ORIGIN_TL или IPL_ORIGIN_BL, что соответствует верхнему левому или нижнему левому углу изображения. Параметр imageData содержит указатель на первую строку данных изображения. В том случае, если анализируемое изображение содержит несколько плоскостей (dataOrder = IPL_DATA_ORDER_PLANE), то размещаются они последовательно, в виде отдельных изображений с height*nChannels строками, но чередуются так, что количество строк равно высоте, а каждая строка содержит чередующиеся каналы.

Параметр widthStep содержит количество байт между пикселями одного столбца. Переменной ширины недостаточно для того, чтобы рассчитать это расстояние, потому что каждая строка может быть выравнена с определенным числом байт для достижения более эффективной обработки изображения; соответственно, могут быть зазоры между концом i-ой строки и началом (i+1)-ой строки.

Переменная dataOrder может принимать значения

IPL_DATA_ORDER_PIXEL или IPL_DATA_ORDER_PLANE. Они указывают как должны быть упакованы данные по каналам.

На рисунке ниже показана принципиальная структура изображения, загруженного в IplImage (Рис. 2.4):

Рис. 2.3 - Типичное представление объекта IplImage

3. Алгоритмы коррекции хроматических аберраций

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

Альтернативой этим подходам выступают активная система управления линзой, в которой отдельно регулируется три RGB фильтрующих линзы, и алгоритмы, использующие обработку

3.1 Обзор существующих алгоритмов коррекции хроматических аберраций

Также были предложены методы для уменьшения влияния эффектов СА. Классические методы опираются на оптимальное производство (расчёт) линз или специальные технические средства для восстановления коэффициентов аберрации через измерения фронта волны (например используя дифракционную решётку и сканирующий электронный микроскоп или некоторую форму интерферометра).

Рис. 3.1 - Эффект хроматической аберрации.

Во всех случаях, центр изображения находится справа от обрезанных изображений. Графики в верхней ряду являются цветовыми профилями интенсивности вдоль средней строки (Рис. 3.1).

Другие методы коррекции полагаются прежде всего на программные решения, один такой метод предполагает предварительную калибровку цветовых каналов для оптимальной фокусировки, увеличения и смещения. Однако, создание изображения свободного от СА требует взятие трёх отдельных изображений, каждое из которых использует оптимальные настройки для различных цветовых каналов.

3.2 Задача коррекции хроматической аберрации

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

Чтобы измерить хроматическую аберрацию, для примера можно использовать чёрно-белую шахматную доску. Положение горизонтального и вертикального чёрно-белого края, измеренного для каждой цветовой компоненты, обеспечивает довольно точное измерение поперечной хроматической аберрации для камерной системы.

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

3.3 Коррекция по коэффициенту корреляции Пирсона

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

После этого, найденные коэффициенты используются для произведения пространственных сдвигов цветовых компонент R и B относительно компоненты G, с целью компенсации рассовмещений. Реализация этого способа осложняется рядом трудностей, главная из которых состоит в формировании независимых спектральных компонент в изображении с выхода цифровой камеры.

Вычисление коэффициентов рассогласований компонент R, G и B, как было установлено, будет целесообразно выполнять, используя корреляционный критерий.

Рассмотрим метод оценки связи между случайными переменными X и Y. Положим, что переменные X и Y имеют нормальный закон распределения.

(3.1)

По мере того, как значение этого коэффициента будет приближаться к единице, мы можем судить о мере рассовмещения двух изображений (двух компонент) относительно друг друга. Приближение коэффициента корреляции к 1 по абсолютной величине может достаточно достоверно говорить о тесной линейной связи двух векторов X и Y относительно друг друга.

Таким образом, мы можем при помощи коэффициента корреляции Пирсона выявить схожесть между двумя изображениями.

В рассматриваемом методе коррекции хроматических аберраций мы будем, используя коэффициент К. Пирсона, выявлять меру рассогласования компонент R и G, B и G.

Таким образом, в формуле коэффициента К. Пирсона, Xi - значение сравниваемого пикселя в канале R либо B, а Yi - значение эталонного пикселя в канале G. Так мы проходим циклом по всем пикселям изображения с левого верхнего угла и подсчитываем коэффициент корреляции К. Пирсона в каждой точке.

Если вычисленный коэффициент корреляции Rxy стремится к нулю, то изображения считаются некоррелированными, т.е. установить наличие связи между ними не представляется возможным. Но при этом утверждать их независимость нельзя.

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

Таким образом, для коррекции хроматической аберрации на изображении мы можем вычислять коэффициент К. Пирсона для всех возможных вариантов рассовмещений координат двух компонент по осям X и Y относительно друг друга (координаты смещения программно ограничены).

Соответственно, в случае, когда при определённых координатах смещения компоненты R либо B относительно компоненты G, коэффициент К. Пирсона будет максимален - мы будем наблюдать максимальное совмещение компонент друг относительно друга.

Эти координаты и будут коэффициентами смещения каждой компоненты. И для коррекции хроматической аберрации на всём изображении целиком достаточно произвести смещение компонент R и B на вычисленные коэффициенты смещения.

Во избежание потерь соответствующих точек в R, G и B компонентах, предлагается разместить объект наблюдения на фоне чёрно-белого шахматного поля. На полученном изображении выделим контрастную область интереса ROI, размерами M0 на N0, которую и будем использовать для вычисления коэффициентов рассогласования.

Разложив полученное цветное изображение на компоненты К, С и В, получим три его составляющих, размерами M0 на N0

В итоге мы будем иметь эталонное изображение зелёной компоненты GЭ(r,c) размером M0 на N0 и два изображения R0(r,c) и B0(r,c) размерами M0 на N0, для которых нам нужно осуществить поиск эталона и вычисление меры рассовмещений.

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

3.4 Коррекция аберраций с помощью нахождения углов методом Harris Corner Detection

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

Существуют несколько типов точек соответствия:

Границы;

Углы;

Области интереса;

В данной работе для поиска точек соответствия будем использовать поиск углов. Поскольку, угол - это пересечение двух границ, оно представляет собой точку, в которой изменяются направления этих двух рёбер. Следовательно, градиент изображения (в обоих направлениях) имеет высокую вариацию, которая может быть использована для ее обнаружения.

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

Рассмотрим изображение в градациях серого I. Мы собираемся развернуть окно w (x, y) (с смещениями u в направлении x и v в правильном направлении) I и вычислим изменение интенсивности.

где: W (x, y) - это окно в позиции (x, y)

I (x, y) - интенсивность при (x, y)

I (x + u, y + v) - интенсивность в перемещенном окне (x + u, y + v).

Пример работы метода Harris Corner Detection для опредления углов на изображении представлен на рисунке ниже:

Рис. 3.3 - Пример работы метода Harris Corner Detection

Таким образом, найдя координаты выраженных углов на всех трёх слоях R, G, B на изображении, мы можем вычислить необходимое нам смещение для произведения коррекции хроматической аберрации. Это можно сделать найдя соответствие каждой координате угла на компонентах R и G, а также B и G, а затем вычислить разницу между координатами соответствующих углов.

3.5 Описание программной реализации

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

На рисунке ниже представлена структура пакетов и классов в разработанном приложении.

Рис. 3.4 - Структура пакетов и классов

Все вышеописанные алгоритмы коррекции хроматических аберраций, а также сопутствующие классы и методы реализованы на языке Java (JDK 1.8) в среде разработки IntelliJ IDEA 14.1.6. В качестве оболочки для разработки графического интерфейса программы был использован JavaFX и редактор SceneBuilder.

После запуска программы на экране можно увидеть главное окно с элементами управления (Рис. 3.5):

Рис. 3.5 - Главное окно программы

Приложение может работать как с одиночными графическими файлами (.jpg, .gif, .bmp), так и захватывать изображения с сетевого потока (например, с IP-видеокамеры).

Откроем единичное изображение с выраженной хроматической аберрацией, нажав кнопку Open File. Изображение появится на экране в отдельном окне (Рис. 3.6). На открытом для примера изображении по краям объекта можно чётко увидеть выраженные «цветные полосы» - хроматические аберрации.

Для проведения анализа изображения нажмём кнопку Set ROI и выделим прямоугольником зону интереса. Зону интереса рекомендуется выбирать таким образом, чтобы в неё попало как можно более контрастный участок изображения, на котором чётче всего проявляются хроматический аберрации.

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

Рис. 3.6 - Изображение для коррекции

Рис. 3.7 - Выделение зоны интереса ROI

Выберем алгоритм коррекции (Correlation Coefficient) и нажмём кнопку Auto Correction для произведения анализа изображения и расчёта коэффициентов смещения.

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

Для этого выделенная зона интереса разделяется на три компоненты R, G, B методом SplitToChannelsRGB();

public static ArrayList<IplImage> getArrayChannels(IplImage sourceImage) {

ArrayList<IplImage> arrayChannels = new ArrayList<>();

IplImage imageForSplit = cvCloneImage(sourceImage);

IplImage channelR = cvCreateImage(cvGetSize(imageForSplit), imageForSplit.depth(), 1);

IplImage channelG = cvCreateImage(cvGetSize(imageForSplit), imageForSplit.depth(), 1);

IplImage channelB = cvCreateImage(cvGetSize(imageForSplit), imageForSplit.depth(), 1);

cvSplit(imageForSplit, channelR, channelG, channelB, null);

arrayChannels.add(channelR);

arrayChannels.add(channelG);

arrayChannels.add(channelB);

return arrayChannels;

}

После выполнения данный метод возвращает массив с тремя IplImage, в которых, соответственно, находятся изображения выделенной ранее зоны интереса, разделённых по трём цветовым компонентам R, G, B.

Далее вычисляется коэффициент корреляции Пирсона сначала для красного и зелёного каналов, а затем для синего и зелёного. Таким образом рассчитываются смещения для красного и синего каналов относительно зелёного. В процессе расчёта координаты точек изображения одного из каналов (R или B) смещаются относительно канала G так, как если бы мы проводили ручную коррекцию.

Нормированный коэффициент корреляции вычисляется для каждого такого смещения таким образом (пример показан для вычисления смещения для красного и зелёного каналов):


Подобные документы

  • Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.

    курсовая работа [276,1 K], добавлен 19.07.2014

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • Понятие и общая характеристика языка программирования РНР, принципы и этапы его работы, синтаксис и ассоциируемые массивы. Обработка исключений в языке Java. Работа с базами данных с помощью JDBC. Изучение порядка разработки графического интерфейса.

    презентация [192,3 K], добавлен 13.06.2014

  • Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.

    курсовая работа [962,8 K], добавлен 13.01.2016

  • Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.

    курсовая работа [208,6 K], добавлен 03.12.2013

  • Кратка историческая справка развития языка Java. Анализ предметной области. Java platform, enterprise and standart edition. Апплеты, сервлеты, gui-приложения. Розработка программного кода, консольное приложение. Результаты работы апплета, сервлета.

    курсовая работа [549,2 K], добавлен 23.12.2015

  • Общая характеристика и оценка возможностей языка программирования си-шарп, его сходные и отличительные черты от С++ и Java. Разработка с помощью данного языка программирования лексического и синтаксического анализатора. Составление таблиц разбора.

    курсовая работа [111,6 K], добавлен 11.06.2010

  • Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.

    курсовая работа [508,1 K], добавлен 10.11.2014

  • Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.

    курсовая работа [333,5 K], добавлен 21.01.2013

  • Архитектура уровня команд платформы Java, формат файла класса Java. Компилятор ассемблероподобного языка, позволяющий создавать файлы классов, корректно обрабатываемые реальной JVM, поддерживающий все команды байт-кода Java и важнейшие возможности JVM.

    курсовая работа [292,6 K], добавлен 17.09.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.