Повышение разрешающей способности изображений

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Caption:=FileListBox1.Items[i];

//установка иконки из списка изображений.ImageIndex:=ImageList2.Add(bitmap,nil);

except.Free;;;

тАж

Рис.9. Форма поиска. Отображение миниатюр изображений

В результате на правой стороне формы отображаются миниатюры изображений для выбора. Двойным щелчком выбирается изображение и следующим шагом открывается вторая форма - форма преобразования изображения. Форма поиска является основной формой, появляется при запуске .exe-файла. Основной функцией этой формы является поиск файлов (изображений). Элемент Меню "Файл" - подменю "Открыть"

тАж.

beginOpenPictureDialog1.Execute() then

//открытие изображения через OpenFileDialog

form3.hint:=OpenPictureDialog1.FileName;

form3.ShowModal;;

Реализуется открытие файла через компонент OpenFileDialog.

Элемент Меню "Файл" - подменю "Закрыть"

TForm3.N4Click(Sender: TObject);

close;

Производится закрытие формы поиска - всей оболочки.

Меню "Справка"

TForm2.N7Click(Sender: TObject);.Visible:=true;;

Рис.7. Справка. Руководство по пользованию

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

2.2.2 Форма преобразования изображений

Рис.10. Форма преобразования. Отображение указанного изображения

Форма преобразования изображений визуально разделена на две части. В левой стороне скомпонованы:

две рабочие кнопки ("Преобразование" и "Сохранить")

группа - выбор "Тип интерполяции" (между билинейной и бикубической)

группа - выбор расширения изображения (.jpg, . giv, .png, .bmp)

группа - изменение данных исходного разрешения и опция сохранения пропорций изображения

группа - отображение данных иTU0%4VUu+VSWT-:YWSX7LmuAP5N+[>uXuZPYY3S\\[E]w?>2^^5_a__6`v`_ `6a6a-faa!v` 6b)b06c1v ?f]^EvdIdMdQ6e/cA6?'N^ufb6jvXeCnvVv~ۆVꎖg=hiY-iYj#iWMjVi]gjVkyk lv"vĶjVg/mVmvm3qo'o pmp6qwqqq!7r%wr)r-r17s5ws9s=sA7tEwtItMtQ7uUwuYu]ua7vewvivmvq7wuwwyw}w7xwxxx7ywyyy7zwzzz7{7{{w|ׁ 7 ȗ|w}{ |Ϸ}7|׷|b~Q~~w } W~{ b~ߗ~wZw|7{7|ʃ+8QWOWXAx}%#x<7GL8iXsec88%i4x{ <  qׁww.!x،ѸٸwŘ8w'P؋َwؑi̡Q.1=JH998~d@@ٔe;8Z!6)*`fC*Ld SD 噱8པyfa999X(әY|a*Y񁛝ٝ6:y )!` :-G@hP Q\!ry0"ILZBYA]B j)BS:Vk( Bbw{ڥahl}wbq)Pڬ} m)M::UwPzj-Ú°`[QZ) ` $(۲- 6iz1kcP "GO;gaWc)L;Q[4 a ;Z{Ux;Oº{]j{{;*l[}}< »{&|AY>{@ց;@Z /)]e!Zl\r\]b\ vA1<;[œ|ƽ) Šʉ BN@VafAɉi%w{UE*fuº= Õ* =|}'ܖa=,fU_vs]8#='=i;|1 _?Յ)BS)rt)dW=BS}v!!ݕ}!Tٵ]ڻ](}ܳ}܁=!=,Ʊ}ݔ1}Ͻ} ]ٗNn ݕ`и@⟽3~!)>@F^0 E 4>[*ae~im^ac^bhޔbG\*~雾~Nyf1{ XJ :j5z b_xlվ ء ԣ}>Yh|p[*L}"~PցL % (󹑺;#Gda)z l <\*(bf_mT:o'k|oő4?;e~sѽ¸_\)h t WKϿ>  A… :|1ĉ+Z1ƍ;zdtح3aL.eș4k>rȒ'e2\e̜6nLcpI?>ufգ\*A1F&%Q,j]5n\ +*>[ )Ba&UVe۽Y}L?dGvJdz :ѤK4+Lb6شltu"Lak#a={tL,AIy&)rݮBam丙wg=t˄-c>f&nv_ 7P@^ Q=ЄaTD(bt)n-f$ d"5c>dBIdFdJ.dN> eRNIeV^eZne^~ fbIfffjfn grIgvމgzg~ hJhh.h> iNJi^ini~ jJjjj kJkފkk lKll.l> mNKm^mnm~ nKn枋nn oKoދoo pLpp /p? qOLq_qoq r"Lr&r*r. s2Ls6ߌs:s> tBMtFtJ/tN? uROMuV_uZou^ vbMvfvjvn wrMwvߍwzw~ xNxx/x?y! STARDIV 5.0 3;йл" - подменю "Вывод на печать"

procedure TForm3.N9Click(Sender: TObject);, relwidth: integer;: real;printDialog1.Execute then

//Печать изображенияPrinter do;:=image1.Picture.Height/image1.Picture.Width;.StretchDraw(Rect(0,0,PageWidth,Round(PageWidth*koef)), Image1.Picture.Graphic);

тАж

Вызывает диалоговое окно "Печать" через компонент PrintDialog.

Элемент Меню "Файл" - подменю "Закрыть"

TForm3.N4Click(Sender: TObject);;;

Процедура закрывает форму "Преобразования изображений".

2.2.3 Реализация алгоритмов интерполяции

Фрагмент кода алгоритма билинейной интерполяции:

function interpolate(bm: tbitmap; dx, dy: single):TBitmap;: tbitmap;, z2: single;, k1, k2: single;, y1: integer;: array [0..1, 0..1, 0..2] of byte;: array [0..2] of byte;, y: integer;, yp: integer;, yo: integer;: integer;: tcolor;:= tbitmap.create;.width := round(bm.width * dx);.height := round(bm.height * dy);y := 0 to bm1.height - 1 do beginx := 0 to bm1.width - 1 do begin:= trunc(x / dx);:= trunc(y / dy);:= round(xo * dx);:= round(yo * dy);yp := 0 to 1 doxp := 0 to 1 do begin:= bm.canvas.pixels[xo + xp, yo + yp];[xp, yp, 0] := getrvalue(pix);[xp, yp, 1] := getgvalue(pix);[xp, yp, 2] := getbvalue(pix);;col := 0 to 2 do begin:= (c[1,0,col] - c[0,0,col]) / dx;:= x * k1 + c[0,0,col] - x1 * k1;:= (c[1,1,col] - c[0,1,col]) / dx;:= x * k2 + c[0,1,col] - x1 * k2;:= (z2 - z1) / dy;[col] := round(y * k + z1 - y1 * k);;.canvas.pixels[x,y] := rgb(res[0], res[1], res[2]);;.Caption := IntToStr(round(100 * y / bm1.Height)) + '%';.ProcessMessages;Application.Terminated then;;:= bm1;:=bm1;

end;

тАж

Изображение рассматривается как поверхность, цвет - третье измерение. Если изображение цветное, то интерполяция проводится отдельно для трех цветов.

Для каждой точки нового изображения с координатами (xo,yo) нужно найти четыре ближайшие точки исходного изображения. Эти точки образуют квадрат. Ч