Геометрические операции над изображением
Написание программы, реализующей поворот изображения на заданный градус по любой из осей координат. История развития и особенности компьютерной графики. Основные операции, относящиеся к геометрическим преобразованиям двумерных графических объектов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.01.2013 |
Размер файла | 673,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Целью моей курсовой работы является написание программы, реализующей поворот изображения на заданный градус по любой из осей координат, смещение также по любой из осей.
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
...Подобные документы
Изучение истории развития компьютерной графики и особенностей её применения. Написание программы, реализующей смещение и поворот изображения на заданный градус по любой из осей координат. Обработка, хранение и передача сканируемых пиксельных изображений.
практическая работа [361,4 K], добавлен 04.02.2013Реализация базовых геометрических преобразований: вращения, переноса, отражения и масштабирования. Рекомендации по работе с программой. Ввод в соответствующие поля приложений значений данных по каждой из осей координат для выполнения операции с фигурой.
контрольная работа [642,0 K], добавлен 21.01.2015Информация о графических форматах. Хранение изображения в программе. Очередь как вспомогательная структура данных. Загрузка изображения из двоичного файла. Операции с изображением. Уменьшение разрешающей способности. Увеличение размера изображения.
курсовая работа [1,1 M], добавлен 29.06.2013Суть принципа точечной графики. Изображения в растровой графике, ее достоинства. Обзор наиболее известных редакторов векторной графики. Средства для работы с текстом. Программы фрактальной графики. Форматы графических файлов. Трехмерная графика (3D).
дипломная работа [764,7 K], добавлен 16.07.2011Понятие и виды компьютерной графики. Применение спецэффектов в кинематографе. История развития компьютерной графики. Изменение частоты киносъемки с помощью спецэффектов. Виды компьютерной графики как способ хранения изображения на плоскости монитора.
реферат [34,8 K], добавлен 16.01.2013Методы и средства создания и обработки изображений с помощью программно-аппаратных вычислительных комплексов. Основные понятия компьютерной графики. Особенности применения растровой, векторной и фрактальной графики. Обзор форматов графических данных.
реферат [49,1 K], добавлен 24.01.2017Описание алгоритма поворота изображения. Вычисление синуса и косинуса угла поворота изображения. Алгоритм и реализация функции поворота изображения вокруг центра на заданный пользователем угол. Проверка на соответствие диапазону допустимых значений.
курсовая работа [1,3 M], добавлен 23.01.2015Программы компьютерной графики для рисования. Основные инструменты для создания рисунка в графических редакторах. Выделение объектов в векторном редакторе. Описание этапов создания текстового граффити на кирпичной стене с помощью программы Photoshop.
курсовая работа [2,1 M], добавлен 04.07.2014Составление программы, реализующей моделирование операции умножения, начиная со старших разрядов множителя, при сдвиге суммы частичного произведения влево и неподвижным множителем. Особенности реализации программы на алгоритмическом языке Assembler.
курсовая работа [26,9 K], добавлен 25.05.2014Трехмерная графика как раздел компьютерной графики, совокупность приемов и инструментов, предназначенных для изображения объемных объектов. Сферы применения 3D графики. Процесс моделирования 3D объектов. Объемы вычислений при моделировании, расчет сцены.
реферат [1,4 M], добавлен 01.01.2015История развития компьютерной графики. Возникновение компьютерной (машинной) графики: научной, деловой, конструкторской, иллюстративной, художественной и рекламной. Компьютерная анимация. Графика для Интернета. Векторная графика и художественные эффекты.
курсовая работа [692,0 K], добавлен 12.11.2014Достоинства и недостатки векторной графики, ее применение и основной принцип построения графических объектов. Объектно-ориентированный подход к пакетам векторной или иллюстративной графики. Основные программы, редакторы и форматы векторной графики.
курсовая работа [129,0 K], добавлен 30.05.2015Разработка факультативного курса по редактированию графических объектов в программе GIMP. Основные понятия растровой графики, интерфейс программы, окна, диалоги и панели. Добавление отсутствующих элементов, Создание из фотографии "карандашного рисунка".
дипломная работа [5,5 M], добавлен 17.12.2012Представление графических данных. Растровая, векторная и фрактальная виды компьютерной графики. Цвет и цветовые модели: метод кодирования цветовой информации для ее воспроизведения на экране монитора. Основные программы для обработки растровой графики.
реферат [429,7 K], добавлен 01.08.2010Возможности применения растровой, векторной и фрактальной компьютерной графики. История создания рекламы. Использование интерактивных графических систем в рекламе. Создания макета календаря с помощью векторного графического редактора Adobe Illustrator.
курсовая работа [1,6 M], добавлен 20.10.2014Понятия компьютерной графики, история развития. Краткая характеристика программных пакетов, элементы публикации. Виды текстуры, моделирование энергетических преобразований в системах. Стандарты обмена данными. Векторные форматы графических файлов.
дипломная работа [1,1 M], добавлен 14.12.2013Общие сведения о графических редакторах, понятия компьютерной растровой и векторной графики, форматов. Обзор и сравнительный анализ современных программ обработки и просмотра графических изображений: Paint, Corel Draw, Adobe Photoshop, MS PowerPoint.
дипломная работа [283,9 K], добавлен 09.08.2010Растровая графика, составление графических изображений из отдельных точек (пикселей). Растровые графические редакторы. Векторная графика - построение изображения из простых объектов. Достоинства, недостатки и применение растровой и векторной графики.
презентация [7,8 K], добавлен 06.01.2014Понятие компьютерной графики. Представление графической информации в компьютере. Графические форматы и редакторы. Характеристика программы, интерфейса. Возможности использования программы CorelDraw. Возможности создания сложных графических изображений.
дипломная работа [1,1 M], добавлен 04.01.2011Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.
реферат [25,7 K], добавлен 31.03.2014