Обработка изображений с использованием расширения процессора

img_tabs.ActivePage:=img_tab1;//page

Label1.Caption:=format('0 %s',[delay_names]);

end;

//уборка мусора

procedure Tfrm_img.FormDestroy(Sender: TObject);

begin

img_errmsg[0].Free;

end;

//Гауссово размытие с применением расширения SSE

procedure Tfrm_img.act_effBlurGauseExecute(Sender: TObject);

var

b: TBitmap;

fticks:Cardinal;

begin

if (frm_

imgbluropts.ShowModal=mrYes) then begin

fticks:=MilliSecondOfTheDay(Now);

img_des.Picture.LoadFromFile(img_OpenPictureDialog.FileName);

GBlur(img_des.Picture.Bitmap,frm_imgbluropts.ComboBox1.ItemIndex,True);

fticks:=MilliSecondOfTheDay(Now)-fticks;

img_log.lines.add(format('make action="copy blur SSE" at="%d" milliseconds',[fticks]));

Label1.Caption:=format('%d %s',[fticks,delay_names]);

end;

end;

//сохранить результат

procedure Tfrm_img.act_desSaveImageExecute(Sender: TObject);

begin

if (img_SavePictureDialog.Execute) then begin

img_des.Picture.SaveToFile(img_SavePictureDialog.FileName);

end;

end;

//центрировать результат

procedure Tfrm_img.act_desCenterImgExecute(Sender: TObject);

begin

with (sender as taction) do begin

img_des.Center:=Checked;

end;

end;

//растянуть результат

procedure Tfrm_img.act_desStrechImgExecute(Sender: TObject);

begin

with (sender as taction) do begin

img_des.Stretch:=Checked;

end;

end;

//центрировать источник

procedure Tfrm_img.act_srcCenterImgExecute(Sender: TObject);

begin

with (sender as taction) do begin

img_src.Center:=Checked;

end;

end;

//растянуть источник

procedure Tfrm_img.act_srcStrechImgExecute(Sender: TObject);

begin

with (sender as taction) do begin

img_src.Stretch:=Checked;

end;

end;

//Гауссово размытие без SSE (простое)

procedure Tfrm_img.act_effBlurGauseNoSSEExecute(Sender: TObject);

var

b: TBitmap;

fticks:Cardinal;

begin

if (frm_imgbluropts.ShowModal=mrYes) then begin

fticks:=MilliSecondOfTheDay(Now);

img_des.Picture.LoadFromFile(img_OpenPictureDialog.FileName);

GBlur(img_des.Picture.Bitmap,frm_imgbluropts.ComboBox1.ItemIndex,False);

fticks:=MilliSecondOfTheDay(Now)-fticks;

img_log.lines.add(format('make action="copy blur" at="%d" milliseconds',[fticks]));

Label1.Caption:=format('%d %s',[fticks,delay_names]);

end;

end;

Скриншот программы

Рисунок 3-1 вкладка "источник"

Рисунок 3-2 вкладка "результат"

Вывод

Сравним производительность при использовании оптимизации кода приложения под расширение SIMD процессора SSE и CPU. Тест производился на процессоре Intel® Core™2 Duo CPU T8300 2,4Ghz с поддержкой MMX,SSE-SSE4, EM64T.

Таблица 4-1

Сравнение времени обработки изображения 800х800

время обработки с SSE, мс

время обработки на ЦП, мс

коэфициент ускорения

отклонение от среднего

1

840

1 032

1,2286

0,0071

2

841

1 047

1,2449

0,0093

3

832

1 033

1,2416

0,0059

4

839

1 028

1,2253

0,0104

5

836

1 035

1,2380

0,0024

Таблица 4-2

Сравнение времени обработки изображения 1024х768

время обработки с SSE, мс

время обработки на ЦП, мс

коэфициент ускорения

отклонение от среднего

1

1 589

1 940

1,2209

0,0331

2

1 529

1 955

1,2786

0,0246

3

1 560

1 956

1,2538

0,0002

4

1 551

1 954

1,2598

0,0058

5

1 545

1 942

1,2570

0,0029

Таблица 4-3

Сравнение времени обработки изображения 1600х1200

время обработки с SSE, мс

время обработки на ЦП, мс

коэфициент ускорения

отклонение от среднего

1

2 369

3 037

1,2820

0,0195

2

2 403

3 021

1,2572

0,0053

3

2 406

3 005

1,2490

0,0135

4

2 389

2 989

1,2512

0,0113

5

2 374

3 022

1,2730

0,0105

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы