Геометрические операции над изображением

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

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык русский
Дата добавления 04.02.2013
Размер файла 361,4 K

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

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

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

Северо-Кавказский горно-металлургический институт

Практическая работа

По предмету: «Компьютерная графика»

Тема: «Геометрические операции над изображением»

Выполнил: Теблоев В.Н.

Проверила: Соколова Е.А.

Владикавказ 2012 г.

Введение

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

1. Компьютерная графика

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

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

Без компьютерной графики не обходится ни одна современная программа. Работа над графикой занимает до 90% рабочего времени программистских коллективов, выпускающих программы массового применения.

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

Необходимость широкого использования графических программных средств стала особенно ощутимой в связи с развитием Интернета и, в первую очередь, благодаря службе World Wide Web, связавшей в единую "паутину" миллионы "домашних страниц". У страницы, оформленной без компьютерной графики мало шансов привлечь к себе массовое внимание. Область применения компьютерной графики не ограничивается одними художественными эффектами. Во всех отраслях науки, техники, медицины, в коммерческой и управленческой деятельности используются построенные с помощью компьютера схемы, графики, диаграммы, предназначенные для наглядного отображения разнообразной информации. Конструкторы, разрабатывая новые модели автомобилей и самолетов, используют трехмерные графические объекты, чтобы представить окончательный вид изделия. Архитекторы создают на экране монитора объемное изображение здания, и это позволяет им увидеть, как оно впишется в ландшафт.

2. История развития компьютерной графики

компьютерный графика пиксельный изображение

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

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

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

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

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

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

В 1977 году компания Apple создала Apple-II. Появление этого устройства вызывало смешанные чувства: графика была ужасной, а процессоры медленными. Однако персональные компьютеры стимулировали процесс разработки периферийных устройств. Конечно, персональные компьютеры развивались как важная часть машинной графики, особенно с появлением в 1984 году модели Apple Macintosh с их графическим интерфейсом пользователя. Первоначально областью применения персонального компьютера были не графические приложения, а работа с текстовыми процессорами и электронными таблицами, но его возможности как графического устройства побуждали к разработке относительно недорогих программ как в области CAD/CAM, так и в более общих областях бизнеса и искусства.

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

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

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

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

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

С развитием компьютерной техники и технологий появилось множество способов выполнения графических изображений. Примерно в 1995 году в России появились свои разработчики мультимедиа программ, зародились электронные издательства. Качественный уровень программных продуктов, выполненных российскими художниками и программистами не уступал, а иногда и превосходил качество программ зарубежных авторов. Ещё одним направлением современной компьютерной графики стал «Веб-Дизайн». С 1995 года во всём мире наблюдается развёртывание глобальной мировой компьютерной сети -- Интернет.

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

3. Геометрические операции

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

Основными операциями, которые относятся к геометрическим преобразованиям двумерных графических объектов, являются:

- перенос начала координат;

- масштабирование;

- поворот осей координат.

Теперь подробнее об этих операциях.

3.1 Поворот

Рассмотрим частный случай поворота в пространстве XYZ - поворот относительно оси Z, проходящей перпендикулярно плоскости XY.

Предположим, что центр вращения совпадает с началом координат. Тогда, при повороте системы координат XY в декартовой плоскости на некоторый произвольный угол а относительно центра вращения, координаты произвольной точки С в системе координат (x',y') можно выразить через координаты этой точки в изначальной системе координат (x, y):

x' = x cos w + y sin w,

y' = -x sin w + y cos w.

Для выполнения операции поворота используется матрица:

3.2 Перенос

При выполнении данной операции происходит перенос начала координат на некоторую величину.

Обозначим старую систему координат - СК1, новую - СК2. При переносе новое начало координат в системе координат СК1 лежит в точке (Tx, Ty), в новой же системе СК2 старое начало координат является точкой (-Tx, -Ty). Начало координат (x,y) системы СК1 в системе СК2 станет точкой (x-Tx, y-Ty).

Стоит упомянуть, что при переносе сохраняются как направление осей координат, так и масштаб.

Матрица, необходимая для выполнения операции переноса имеет вид:

3.3 Масштабирование

При выполнении операции масштабирования отрезок единичной длины на оси X становится отрезком длиной Sx на оси X'; отрезок единичной длины на оси Y становится отрезком длиной Sy на оси Y'. Получается, что в новой системе точка с координатой (1,1) преобразуется в точку (Sx, Sy), точка (x,y) будет иметь координаты (x*Sx, y*Sy).

Стоит отметить, что при масштабировании начало координат и направление осей новой и старой систем координат совпадают, меняется лишь масштаб по осям.

Матрица, необходимая для выполнения операции масштабирования имеет вид:

4. Пример работы программы

До:

После:

5. Листинг программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using Tao.OpenGl;

using Tao.FreeGlut;

using Tao.Platform.Windows;

namespace Tao

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

AnT.InitializeContexts();

}

double a = 0, b = 0, c = -5, d = 0, zoom = 1;

int os_x = 1, os_y = 0, os_z = 0;

bool Wire = false;

private void Form1_Load(object sender, EventArgs e)

{

Glut.glutInit();

Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE);

Gl.glClearColor(255, 255, 255, 1);

Gl.glViewport(0, 0, AnT.Width, AnT.Height);

Gl.glMatrixMode(Gl.GL_PROJECTION);

Gl.glLoadIdentity();

Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);

Gl.glMatrixMode(Gl.GL_MODELVIEW);

Gl.glLoadIdentity();

Gl.glEnable(Gl.GL_DEPTH_TEST);

Gl.glEnable(Gl.GL_LIGHTING);

Gl.glEnable(Gl.GL_LIGHT0);

comboBox1.SelectedIndex = 0;

comboBox2.SelectedIndex = 0;

RenderTimer.Start();

}

private void simpleOpenGlControl1_Load(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT Gl.GL_DEPTH_BUFFER_BIT);

Gl.glLoadIdentity();

Gl.glColor3f(1.0f, 0, 0);

Gl.glPushMatrix();

Gl.glTranslated(0, 0, -6);

Gl.glRotated(45, 1, 1, 0);

Glut.glutWireSphere(1, 12, 16);

Glut.glutWireCube(10);

Gl.glPopMatrix();

Gl.glFlush();

AnT.Invalidate();

}

private void RenderTimer_Tick(object sender, EventArgs e)

{

Draw();

}

private void trackBar1_Scroll(object sender, EventArgs e)

{

a = (double)trackBar1.Value / 1000.0;

label3.Text = a.ToString();

}

private void trackBar2_Scroll(object sender, EventArgs e)

{

b = (double)trackBar2.Value / 1000.0;

label4.Text = b.ToString();

}

private void trackBar3_Scroll(object sender, EventArgs e)

{

c = (double)trackBar3.Value / 1000.0;

label5.Text = c.ToString();

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked)

Wire = true;

else

Wire = false;

}

private void trackBar5_Scroll(object sender, EventArgs e)

{

zoom = (double)trackBar5.Value / 1000.0;

}

private void trackBar4_Scroll(object sender, EventArgs e)

{

d = (double)trackBar4.Value;

}

private void Draw()

{

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT| Gl.GL_DEPTH_BUFFER_BIT);

Gl.glClearColor(255, 255, 255, 1);

Gl.glLoadIdentity();

Gl.glPushMatrix();

Gl.glTranslated(a, b, c);

Gl.glRotated(d, os_x, os_y, os_z);

Gl.glScaled(zoom, zoom, zoom);

switch (comboBox2.SelectedIndex)

{

case 0:

{

if (Wire)

Glut.glutWireSphere(2, 16, 16);

else

Glut.glutSolidSphere(2, 16, 16);

break;

}

case 1:

{

if (Wire)

Glut.glutWireCylinder(1, 2, 32, 32);

else

Glut.glutSolidCylinder(1, 2, 32, 32);

break;

}

case 2:

{

if (Wire)

Glut.glutWireCube(2);

else

Glut.glutSolidCube(2);

break;

}

case 3:

{

if (Wire)

Glut.glutWireCone(2, 3, 32, 32);

else

Glut.glutSolidCone(2, 3, 32, 32);

break;

}

case 4:

{

if (Wire)

Glut.glutWireTorus(0.2, 2.2, 32, 32);

else

Glut.glutSolidTorus(0.2, 2.2, 32, 32);

break;

}

}

Gl.glPopMatrix();

Gl.glFlush();

AnT.Invalidate();

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

switch (comboBox1.SelectedIndex)

{

case 0:

{

os_x = 1;

os_y = 0;

os_z = 0;

break;

}

case 1:

{

os_x = 0;

os_y = 1;

os_z = 0;

break;

}

case 2:

{

os_x = 0;

os_y = 0;

os_z = 1;

break;

}

}

}

private void button2_Click(object sender, EventArgs e)

{

trackBar1.Value = 0;

trackBar2.Value = 0;

trackBar3.Value = -5000;

trackBar4.Value = 0;

trackBar5.Value = 0;

a = (double)trackBar1.Value / 1000.0;

label3.Text = a.ToString();

b = (double)trackBar2.Value / 1000.0;

label4.Text = b.ToString();

c = (double)trackBar3.Value / 1000.0;

label5.Text = c.ToString();

}

private void button3_Click(object sender, EventArgs e)

{

a = Convert.ToDouble(textBox1.Text);

trackBar1.Value = (int)(a * 1000);

b = Convert.ToDouble(textBox2.Text);

trackBar2.Value = (int)(b * 1000);

c = Convert.ToDouble(textBox3.Text);

trackBar3.Value = (int)(c * 1000);

d = Convert.ToDouble(textBox4.Text);

trackBar4.Value = (int)(d);

}

}

}

Список использованных источников

1) Интернет-портал ru.wikipedia.org

2) Интернет-портал habrahabr.ru

3) Интернет-портал stackoverflow.com

4) Интернет-портал cyberforum.ru

5) Интернет-портал programmersheaven.com

6) Интернет-портал esate.ru

7) Интернет-портал google.com

Размещено на Allbest.ru


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

  • Информация о графических форматах. Хранение изображения в программе. Очередь как вспомогательная структура данных. Загрузка изображения из двоичного файла. Операции с изображением. Уменьшение разрешающей способности. Увеличение размера изображения.

    курсовая работа [1,1 M], добавлен 29.06.2013

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

    контрольная работа [642,0 K], добавлен 21.01.2015

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

    реферат [1,4 M], добавлен 01.01.2015

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

    реферат [192,9 K], добавлен 15.04.2015

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

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

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

    реферат [49,1 K], добавлен 24.01.2017

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

    курсовая работа [1,3 M], добавлен 23.01.2015

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

    дипломная работа [1,1 M], добавлен 04.01.2011

  • Виды компьютерной графики. Photoshop – программа для создания и обработки растровой графики. Пакет программ для работы с векторной графикой CorelDraw. Обработка растровых изображений с использованием Photoshop. Этапы создания коллажа на тему "Музыка".

    курсовая работа [2,3 M], добавлен 27.12.2014

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

    реферат [34,8 K], добавлен 16.01.2013

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