Автор работы: Пользователь скрыл имя, 09 Декабря 2012 в 08:55, курсовая работа
Контраст – в сенситометрии и фотометрии – разница в характеристиках различных участков изображения, а также способность фотографического материала или оптической системы воспроизводить эту разницу. Контрастность (также, в различных контекстах употребляется и само слово контраст и коэффициент контраста) – степень контраста, чаще всего выражается безразмерной величиной, отношением или логарифмом отношений.
Теоретическая часть 4
Листинг программы 7
Результат программы 10
Список литературы 13
Министерство образования и науки Российской Федерации
Иркутский государственный технический университет
Кафедра «Вычислительной техники»
Пояснительная записка
к курсовой работе
По дисциплине: «Компьютерная графика»
Тема: «Изменение контрастности изображения»
Выполнил студент группы ________________________/
Нормоконтроль_________________
Курсовая работа защищена с оценкой_____________________
Иркутск 2012г.
Оглавление
Теоретическая часть4
Листинг программы7
Результат программы10
Список литературы13
ТеорЕтическая чаСть
Контрастность изображения
Контраст – в сенситометрии и фотометрии – разница в характеристиках различных участков изображения, а также способность фотографического материала или оптической системы воспроизводить эту разницу. Контрастность (также, в различных контекстах употребляется и само слово контраст и коэффициент контраста) – степень контраста, чаще всего выражается безразмерной величиной, отношением или логарифмом отношений.
Оптический контраст – отличимость предмета наблюдения от окружающего его фона.
Цветовой контраст – разновидность оптического контраста, связанная с разницей цветовых оттенков. Понятие используется в дизайне, рекламе и в фотографии («за счёт цветового контраста объект выделен…»).
Контраст изображения, диапазон яркостей изображения – отношение яркостей самой светлой и самой тёмной частей изображения.
Контрастность (англ. Contrast ratio – диапазон яркостей или диапазон плотностей) – максимальное отношение яркостей или плотностей устройства или материала вывода изображений. Отношение яркостей или плотностей самой светлой и самой тёмной точки на устройстве или материале. Обычно выражается в виде отношения 1000:1 для дисплеев, десятичного логарифма 3.0D в сенситометрии или двоичного логарифма 10 ступеней в фотографии.
GDI (Graphics Device Interface, Graphical Device Interface)
GDI один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API составляющих пользовательский интерфейс (оконный менеджер GDI) Microsoft Windows.
GDI – это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры.
GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры. Он не отвечает за отрисовку окон, меню, эта задача закреплена за пользовательской подсистемой, располагающейся в user32.dll и основывающейся на GDI.
Одно из преимуществ использования GDI вместо прямого доступа к оборудованию – это унификация работы с различными устройствами. Используя GDI, можно одними и теми же функциями рисовать на разных устройствах, таких как экран или принтер, получая на них практически одинаковые изображения.
Простые игры, которые не требуют быстрой графики, могут использовать GDI. GDI не обеспечивает качественной анимации, потому что в нём нет возможности синхронизации с кадровым буфером. В GDI нет растеризации для отрисовки 3D-графики. Современные игры используют DirectX или OpenGL, что даёт программистам доступ к большему количеству аппаратных возможностей.
Описание GDI.
Для определения атрибутов текста и изображения, которые выводятся на экран или принтер, используется программный объект под названием «контекст устройства» (Device Context, DC). DC, как и большинство объектов GDI, инкапсулирует подробности реализации и данные в себе и к ним нельзя получить прямой доступ.
Для любого рисования нужен объект HDC (хэндл DC). При выводе на принтер HDC получается вызовом CreateDC, и на нем зовутся специальные функции для перехода на новую страницу печатаемого документа. При выводе на экран также можно использовать CreateDC, но это приведет к рисованию поверх всех окон вне их границ, потому обычно для рисования на экране используются вызовы GetDC и BeginPaint, принадлежащие уже не GDI, а USER, и возвращающие контекст, ссылающийся на регион отсечения окна.
Функционал:
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, Spin;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
CheckBox1: TCheckBox;
SpinEdit1: TSpinEdit;
Image2: TImage;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Contrast(Bitmap: TBitmap; Value: Integer; Local: Boolean);
function BLimit(B: Integer): Byte; //Проверка вхождения B в интервал от 0 до 255
begin
if B < 0 then
Result := 0
else if B > 255 then
Result := 255
else
Result := B;
end;
var
Dest: pRGBTriple; //Структура описывает цвет, состоящий из относительных интенсивностей красного, зеленого и синего цвета.
x, y, mr, mg, mb, W, H, tr, tg, tb: Integer;
vd: Double;
begin
if Value = 0 then
Exit;
W := Bitmap.Width - 1;
H := Bitmap.Height - 1;
if Local then
begin
mR := 128;
mG := 128;
mB := 128;
end
else
begin
tr := 0;
tg := 0;
tb := 0;
for y := 0 to H do
begin
Dest := Bitmap.ScanLine[y]; //Обеспечивает индексированный доступ к каждой строки пикселей
for x := 0 to W do
begin
with Dest^ do //упращение обращение к элементам сруктуры
begin
Inc(tb, rgbtBlue); //процедура увеличивает в структуре Dest, переменную rgbtBlue на tb
Inc(tg, rgbtGreen);
Inc(tr, rgbtRed);
end;
Inc(Dest);
end;
end;
mB := Trunc(tb / (W * H));
mG := Trunc(tg / (W * H));
mR := Trunc(tr / (W * H));
end;
if Value > 0 then
vd := 1 + (Value / 10)
else
vd := 1 - (Sqrt(-Value) / 10);
for y := 0 to H do
begin
Dest := Bitmap.ScanLine[y]; //Обеспечивает индексированный доступ к каждой строки пикселей
for x := 0 to W do
begin
with Dest^ do
begin
rgbtBlue := BLimit(mB + Trunc((rgbtBlue - mB) * vd));
rgbtGreen := BLimit(mG + Trunc((rgbtGreen - mG) * vd));
rgbtRed := BLimit(mR + Trunc((rgbtRed - mR) * vd));
end;
Inc(Dest);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //процедура вывода модифицированной картинки
var
map: TBitmap;
begin
map := TBitmap.Create;
map.Assign(Image1.Picture.
Contrast(map, SpinEdit1.Value, CheckBox1.Checked);
Image2.Picture.Bitmap.Assign(
map.Free; //очищаем
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close(); //Закрываем приложение
end;
end.
Результат программы
Рисунок 1 – Программа загружена, изображение не модифицировано
Рисунок 2 – Контрастность изображения +50
Рисунок 3 – Контрастность изображения –50
Рисунок 4 – Контрастность изображения +100, местный контраст
Рисунок 5 – Контрастность изображения –100, местный контраст
СПИСОК ЛИТЕРАТУРЫ