Компьютерная обработка растровых изображений

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

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

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

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

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

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

Задание

Метод: Эквализация и получение требуемой (бимодальной) гистограммы яркости.

1. Изучить алгоритм работы и особенности заданного метода обработки изображения.

2. Разработать интерфейс и написать программу, реализующую данный метод, в форме Windows-приложения. Приложение должно обеспечивать:

- ввод и отображение на дисплее монохромного изображения формата bmp;

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

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

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

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

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

1. Описание метода обработки «Выделение контурных линий» и особенностей его применения и программной реализации

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

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

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

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

(N - число пикселей изображения),

позволяют сравнивать гистограммы изображений разных размеров. Причем значение p(zi) является оценкой вероятности того, что яркость случайно выбранного на изображении пикселя равна zi.

3.2 Увеличение контрастности

В большинстве методов увеличения контрастности растрового изображения яркость пикселя преобразованного изображения z'(x,y) зависит от яркости только соответствующего пикселя исходного изображения z(x,y), что позволяет перед обработкой сформировать массив соответствия яркостей в соответствии с заданным алгоритмом z'(x,y) = f(z). Такой массив значительно сокращает время обработки, т.к. после его формирования собственно обработка текущего пикселя исходного изображения сводится к присвоению соответствующему пикселю преобразованного изображения яркости, равной значению элемента массива с номером, равным яркости текущего пикселя исходного изображения.

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

(3.3)

где z, z' - яркость пикселя до и после преобразования,

zmin - минимальная яркость исходного изображения,

Сom - относительная контрастность изображения.

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

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

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

z' = zm znom, (3.4)

где - относительная яркость. Если яркости пикселей исходного изображения занимают весь возможный диапазон, то zот изменяется в пределах 0…1. Значение n выбирается экспериментально, как правило, из диапазона n = 2…10, если известно, что плохо различимые фрагменты имеют высокую яркость, и n = 0,1…0,9, если плохо различимые фрагменты имеют низкую яркость.

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

z' = 0,5zm(1 + (2zom - 1)n) для n > 1 нечетной степени.

Функция (3.5), описывающая данное преобразование при n>1 четной степени, является параболой, параметры которой подобраны так, чтобы z' = zm для z = 0,5zm. В результате преобразования пиксели, имеющие на исходном изображении яркость, симметричную относительно середины шкалы, приобретают одинаковую яркость. Таким образом, фрагменты, имеющие близкую яркость, как в темной, так и в светлой области шкалы, разносятся по шкале яркости на достаточное для увеличения их различимости расстояние, а фрагменты средней яркости приобретают яркость близкую к максимальной и частично сливаются.

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

.

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

Увеличение различимости фрагментов изображения можно получить и путем эквализации или выравнивания гистограммы, т.е. такого преобразования шкалы яркости, при котором гистограмма результирующего изображения будет приближаться по форме к равномерной. Метод основан на предположении, что наибольшая контрастность достигается на изображении, гистограмма которого представляет равномерное распределение пикселей по яркостям на всем диапазон (0 … 255). Преобразование шкалы яркости имеет вид

(3.6)

где z'i - значение элемента преобразованной шкалы яркости, соответствующее i -ой яркости исходной шкалы, p(zk) - нормализованная гистограмма яркости исходного изображения (i = 0 … 255).

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

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

что с точностью до постоянного множителя zm совпадает с (3.6), причем pc(z) является монотонно возрастающей (неубывающей) функцией.

На первом этапе преобразования необходимо построить требуемую гистограмму и гистограмму обрабатываемого изображения, а также их кумулятивное представление p'c(z) и pc(z) соответственно. Для нахождения значений преобразованной шкалы яркости необходимо для каждой яркости zi найти соответствующее ей значение кумулятивной гистограммы обрабатываемого изображения pc(z), после чего найти равное ему значение p'c(z') на требуемой кумулятивной гистограмме. Соответствующее значение яркости z' и будет искомым, т.е. p'c(z') = pc(z).

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

Рисунок 1 - Эквализация гистограммы серого градиента.

Рисунок 2 -Результат приведения гистограммы к бимодальной форме.

Рисунок 3 - Гистограммы цветного градиента.

Рисунок 4 - Результат приведения гистограммы к бимодальной форме.

Рисунок 5 - Эквализация гистограммы цветного изображения.

Рисунок 6 - Результат приведения гистограммы к бимодальной форме.

3. Код программы

unit Unit1;

interface

uses

Graphics, Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, ComCtrls, ImgList, ToolWin, Menus, Jpeg, WinTypes, Math, Unit2;

type

TForm1 = class(TForm)

StatusBar1: TStatusBar;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Image1: TImage;

Image2: TImage;

ImageList1: TImageList;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

ToolButton5: TToolButton;

FileOpenDialog1: TFileOpenDialog;

ImageList2: TImageList;

procedure FormResize(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

TRGBTripleArray = ARRAY[Word] of TRGBTriple;

pRGBTripleArray = ^TRGBTripleArray;

THisto = array[0..255] of integer;

TNormalHisto = array[0..255] of real;

function equalize(inBMP: Graphics.TBitmap; doUseAsYUV: boolean):Graphics.TBitmap;

function calcHisto(inBMP: Graphics.TBitmap):THisto;

function calcBimodalHisto():TNormalHisto;

function calcCumulativeHisto(histo: TNormalHisto):TNormalHisto;

function convertToBimodal(inBMP: Graphics.TBitmap; doUseAsYUV: boolean):Graphics.TBitmap;

function convertRGBToYUV(inBMP: Graphics.TBitmap):Graphics.TBitmap;

function convertYUVToRGB(inBMP: Graphics.TBitmap):Graphics.TBitmap;

function makeReplacementTable(size: Integer; histo: THisto):THisto;

function makeReplacementTableForTargetHisto(histo: TNormalHisto; target: TNormalHisto):THisto;

function normalizeHisto(size: Integer; histo: THisto):TNormalHisto;

var

Form1: TForm1;

srcBmp: Graphics.TBitmap;

dstBmp: Graphics.TBitmap;

sourceHisto: THisto;

gTargetHisto: THisto;

doUseRGB: boolean;

implementation

{$R *.dfm}

procedure TForm1.FormResize(Sender: TObject);

begin

GroupBox1.Width := self.ClientWidth div 2;

GroupBox2.Width := self.ClientWidth div 2;

end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

var

imageX, imageY, difX, difY: Integer;

lum: integer;

r,g,b: byte;

scan : pRGBTripleArray;

statusText: String;

begin

difX:= (Image1.Width - Image1.Picture.Width) div 2;

difY:= (Image1.Height - Image1.Picture.Height) div 2;

imageX:= X - difX;

imageY:= Y - difY;

if((imageX>=0) and (imageY>=0)

and (imageX<Image1.Picture.Width) and (imageY<Image1.Picture.Height)) then

begin

scan:=Image1.Picture.Bitmap.ScanLine[imageY];

r := scan[imageX].rgbtRed;

g := scan[imageX].rgbtGreen;

b := scan[imageX].rgbtBlue;

lum := trunc((0.257*r) + (0.504*g) + (0.098*b) + 16 );

if(lum<0) then lum:=0;

if(lum>255) then lum:=255;

statusText:='X='+IntToStr(imageX) + ' Y='+ IntToStr(imageY);

statusText:=statusText+'; ';

statusText:=statusText+'R='+IntToStr(R) + ' G='+ IntToStr(G) + ' B='+ IntToStr(B);

statusText:=statusText+'; ';

statusText:=statusText+'Luminocity='+IntToStr(lum);

statusText:=statusText+';';

StatusBar1.SimpleText:= statusText;

end

else StatusBar1.SimpleText:='';

end;

procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

var

imageX, imageY, difX, difY: Integer;

lum: integer;

r,g,b: byte;

scan : pRGBTripleArray;

statusText: String;

begin

difX:= (Image2.Width - Image2.Picture.Width) div 2;

difY:= (Image2.Height - Image2.Picture.Height) div 2;

imageX:= X - difX;

imageY:= Y - difY;

if((imageX>=0) and (imageY>=0)

and (imageX<Image2.Picture.Width) and (imageY<Image2.Picture.Height)) then

begin

scan:=Image2.Picture.Bitmap.ScanLine[imageY];

r := scan[imageX].rgbtRed;

g := scan[imageX].rgbtGreen;

b := scan[imageX].rgbtBlue;

lum := trunc((0.257*r) + (0.504*g) + (0.098*b) + 16 );

if(lum<0) then lum:=0;

if(lum>255) then lum:=255;

statusText:='X='+IntToStr(imageX) + ' Y='+ IntToStr(imageY);

statusText:=statusText+'; ';

statusText:=statusText+'R='+IntToStr(R) + ' G='+ IntToStr(G) + ' B='+ IntToStr(B);

statusText:=statusText+'; ';

statusText:=statusText+'Luminocity='+IntToStr(lum);

statusText:=statusText+';';

StatusBar1.SimpleText:= statusText;

end

else StatusBar1.SimpleText:='';

end;

procedure TForm1.N1Click(Sender: TObject);

var

i: Integer;

begin

if(doUseRGB)

then dstBmp:=convertYUVToRGB(equalize(convertRGBToYUV(srcBmp),true))

else dstBmp:=equalize(srcBmp, false);

Image2.Picture.Assign(dstBmp);

gTargetHisto:= calcHisto(convertRGBToYUV(dstBmp));;

Form2.Chart1.Series[0].Clear;

Form2.Chart2.Series[0].Clear;

for i := 0 to 255 do

Form2.Chart1.Series[0].AddXY(i,sourceHisto[i]/(srcBmp.Height*srcBmp.Width),'');

for i := 0 to 255 do

Form2.Chart2.Series[0].AddXY(i,gTargetHisto[i]/(srcBmp.Height*srcBmp.Width),'');

end;

procedure TForm1.N2Click(Sender: TObject);

var

i: Integer;

begin

if(doUseRGB)

then dstBmp:=convertYUVToRGB(convertToBimodal(convertRGBToYUV(srcBmp), true))

else dstBmp:=convertToBimodal(srcBmp, false);

Image2.Picture.Assign(dstBmp);

gTargetHisto:= calcHisto(convertRGBToYUV(dstBmp));;

Form2.Chart1.Series[0].Clear;

Form2.Chart2.Series[0].Clear;

for i := 0 to 255 do

Form2.Chart1.Series[0].AddXY(i,sourceHisto[i]/(srcBmp.Height*srcBmp.Width),'');

for i := 0 to 255 do

Form2.Chart2.Series[0].AddXY(i,gTargetHisto[i]/(srcBmp.Height*srcBmp.Width),'');

end;

procedure TForm1.ToolButton1Click(Sender: TObject);

var

image: TJPEGImage;

i, j: Integer;

pixel: TRGBTriple;

gray: byte;

scan : pRGBTripleArray;

begin

if(FileOpenDialog1.Execute) then

begin

If(Application.MessageBox('Конвертировать в черно-бело изображение?','Настройка цвета', MB_YESNO)=IDNO)

then doUseRGB:=true

else doUseRGB:=false;

image := TJPEGImage.Create;

srcBmp := Graphics.TBitmap.Create;

dstBmp := Graphics.TBitmap.Create;

dstBmp.Assign(srcBmp);

image.LoadFromFile(FileOpenDialog1.FileName);

srcBmp.Assign(image);

if (not doUseRGB) then

begin

for i := 0 to srcBmp.Height-1 do

begin

scan:= srcBmp.ScanLine[i];

for j := 0 to srcBmp.Width-1 do

begin

pixel:= scan[j];

gray:= trunc(0.2989 * pixel.rgbtRed + 0.5870 * pixel.rgbtGreen + 0.1140 * pixel.rgbtBlue);

pixel.rgbtRed:= gray;

pixel.rgbtBlue:= gray;

pixel.rgbtGreen:= gray;

scan[j]:=pixel;

end;

end;

end;

if (not doUseRGB)

then sourceHisto := calcHisto(srcBmp)

else sourceHisto := calcHisto(convertRGBToYUV(srcBmp));

Image1.Picture.Assign(srcBmp);

Image2.Picture.Assign(dstBmp);

ToolButton3.Enabled:=true;

ToolButton5.Enabled:=true;

ToolButton5.EnableDropdown:=true;

end;

end;

procedure TForm1.ToolButton3Click(Sender: TObject);

var

i: integer;

begin

Form2.Show();

gTargetHisto:= calcHisto(convertRGBToYUV(dstBmp));;

Form2.Chart1.Series[0].Clear;

Form2.Chart2.Series[0].Clear;

for i := 0 to 255 do

Form2.Chart1.Series[0].AddXY(i,sourceHisto[i]/(srcBmp.Height*srcBmp.Width),'');

for i := 0 to 255 do

Form2.Chart2.Series[0].AddXY(i,gTargetHisto[i]/(srcBmp.Height*srcBmp.Width),'');

end;

function equalize(inBMP: Graphics.TBitmap;doUseAsYUV: boolean):Graphics.TBitmap;

var

i, j: integer;

pixel: TRGBTriple;

gray: byte;

scan : pRGBTripleArray;

nTable: THisto;

outBMP:Graphics.TBitmap;

begin

nTable:= makeReplacementTable(inBMP.Height*inBMP.Width, sourceHisto);

outBMP:=Graphics.TBitmap.Create();

outBMP.Assign(inBMP);

for i := 0 to outBMP.Height-1 do

begin

scan:= outBMP.ScanLine[i];

for j := 0 to outBMP.Width-1 do

begin

pixel:= scan[j];

gray:= nTable[pixel.rgbtRed];

pixel.rgbtRed:= gray;

if(not doUseAsYUV) then

begin

pixel.rgbtBlue:= gray;

pixel.rgbtGreen:= gray;

end;

scan[j]:=pixel;

end;

end;

Result:= outBMP;

end;

function calcBimodalHisto():TNormalHisto;

var

i: integer;

value: real;

step: real;

sum: real;

begin

sum:=0;

value:=0;

step:=1/(128*64);

for i := 0 to 63 do

begin

Result[i]:=value;

sum:=sum+value;

value:=value+step;

end;

for i := 64 to 127 do

begin

Result[i]:=value;

sum:=sum+value;

value:=value-step;

end;

for i := 128 to 191 do

begin

Result[i]:=value;

sum:=sum+value;

value:=value+step;

end;

for i := 192 to 255 do

begin

Result[i]:=value;

sum:=sum+value;

value:=value-step;

end;

end;

function calcCumulativeHisto(histo: TNormalHisto):TNormalHisto;

var

sum: Real;

i, j: Integer;

begin

for i := 0 to 255 do

begin

sum:=0;

for j := 0 to i do

sum:=sum+histo[j];

Result[i]:=sum;

end;

end;

function calcHisto(inBMP: Graphics.TBitmap):THisto;

var

i, j: integer;

pixel: TRGBTriple;

scan : pRGBTripleArray;

begin

for i:= 0 to 255 do Result[i]:=0;

for i := 0 to inBMP.Height-1 do

begin

scan:= inBMP.ScanLine[i];

for j := 0 to inBMP.Width-1 do

begin

pixel:= scan[j];

Result[pixel.rgbtRed]:=Result[pixel.rgbtRed]+1;

end;

end;

end;

function convertRGBToYUV(inBMP: Graphics.TBitmap):Graphics.TBitmap;

var

i, j: integer;

r,g,b : Integer;

y,u,v:integer;

pixel: TRGBTriple;

scan : pRGBTripleArray;

outBMP: Graphics.TBitmap;

begin

outBMP:=Graphics.TBitmap.Create();

outBMP.Assign(inBMP);

for i := 0 to outBMP.Height-1 do

begin

scan:= outBMP.ScanLine[i];

for j := 0 to outBMP.Width-1 do

begin

pixel:= scan[j];

r:= pixel.rgbtRed;

g:= pixel.rgbtGreen;

b:= pixel.rgbtBlue;

Y:=trunc((0.257 * R) + (0.504 * G) + (0.098 * B) + 16 );

V:=trunc((0.439 * R) - (0.368 * G) - (0.071 * B) + 128);

U:=trunc(-(0.148 * R) - (0.291 * G) + (0.439 * B) + 128);

if(y>255) then y:=255;

if(y<0) then y:=0;

if(u>255) then u:=255;

if(u<0) then u:=0;

if(v>255) then v:=255;

if(v<0) then v:=0;

pixel.rgbtRed := y;

pixel.rgbtGreen := u;

pixel.rgbtBlue := v;

scan[j]:=pixel;

end;

end;

Result:=outBMP;

end;

function convertYUVToRGB(inBMP: Graphics.TBitmap):Graphics.TBitmap;

var

i, j: integer;

y,u,v:integer;

r,g,b:integer;

pixel: TRGBTriple;

scan : pRGBTripleArray;

outBMP: Graphics.TBitmap;

begin

outBMP:=Graphics.TBitmap.Create();

outBMP.Assign(inBMP);

for i := 0 to outBMP.Height-1 do

begin

scan:= outBMP.ScanLine[i];

for j := 0 to outBMP.Width-1 do

begin

pixel:= scan[j];

y:= pixel.rgbtRed;

u := pixel.rgbtGreen;

v := pixel.rgbtBlue;

B:= trunc(1.164*(Y - 16) + 2.018*(U - 128));

G:= trunc(1.164*(Y - 16) - 0.813*(V - 128) - 0.391*(U - 128));

R:= trunc(1.164*(Y - 16) + 1.596*(V - 128));

if(r>255) then r:=255;

if(r<0) then r:=0;

if(g>255) then g:=255;

if(g<0) then g:=0;

if(b>255) then b:=255;

if(b<0) then b:=0;

pixel.rgbtRed := r;

pixel.rgbtGreen := g;

pixel.rgbtBlue :=b;

scan[j]:=pixel;

end;

end;

Result:=outBMP;

end;

function convertToBimodal(inBMP: Graphics.TBitmap; doUseAsYUV: boolean):Graphics.TBitmap;

var

normalSourceHisto, normalTargetHisto: TNormalHisto;

cumulativeSourceHisto, cumulativeTargetHisto: TNormalHisto;

repTable: THisto;

newBMP: Graphics.TBitmap;

i, j: integer;

pixel: TRGBTriple;

scan : pRGBTripleArray;

gray: byte;

begin

normalSourceHisto:=normalizeHisto(inBMP.Height*inBMP.Width, sourceHisto);

normalTargetHisto:=calcBimodalHisto();

cumulativeSourceHisto:=calcCumulativeHisto(normalSourceHisto);

cumulativeTargetHisto:= calcCumulativeHisto(normalTargetHisto);

repTable:= makeReplacementTableForTargetHisto(cumulativeSourceHisto, cumulativeTargetHisto);

newBMP:=Graphics.TBitmap.Create();

newBMP.Assign(inBMP);

for i := 0 to newBMP.Height-1 do

begin

scan:= newBMP.ScanLine[i];

for j := 0 to newBMP.Width-1 do

begin

pixel:= scan[j];

gray:= repTable[pixel.rgbtRed];

pixel.rgbtRed:= gray;

if(not doUseAsYUV) then

begin

pixel.rgbtBlue:= gray;

pixel.rgbtGreen:= gray;

end;

scan[j]:=pixel;

end;

end;

Выводы

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

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

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

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


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

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

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

  • Яркость точек и гистограммы изображения. Изменение яркости и контрастности. Метод ранговой фильтрации с оценкой середины диапазона. Наложение шумов на изображение. Преобразование изображения в негатив. Получение матрицы яркостей и построение гистограмм.

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

  • Режимы компьютерной обработки данных. Централизованный, децентрализованный, распределенный и интегрированный способы обработки данных. Средства обработки информации. Типы ведения диалога, пользовательский интерфейс. Табличный процессор MS Excel.

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

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

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

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

    реферат [436,4 K], добавлен 26.03.2010

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

    курсовая работа [5,8 M], добавлен 17.06.2017

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

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

  • Задачи цифровой обработки изображений. Методы пороговой сегментации. Создание программы представления рисунка в виде матрицы и применения к нему пороговой обработки. Разработка интерфейса программы загрузки и фильтрации изображения с выбранным порогом.

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

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

    реферат [5,2 M], добавлен 05.05.2023

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

    шпаргалка [49,9 K], добавлен 13.09.2011

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