![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите пожалуйста! Мне надо срочно написать программу на ДЕЛФИ, но я абсолютно не знаю как!
![]() ![]() ЗАДАНИЕ: Удаление шумов на изображении. (например на БМП-картинке). Подозреваю, что с помощью Рядов Фурье. Но могу и ошибаться. Мне сказали, что это программа в 15 строк, не больше. Типа отрываем файл, пропускаем через фильтр и перезаписываем в другой файл. Но КАК это сделать?? Я понимаю, что элементарно, но извините, я ни БУМ-БУМ в этом вообще! Если вам не сложно, напишите мне плиз прогу. Буду очень признательна!!! |
#2
|
||||
|
||||
![]() У меня есть код сглаживания:
Код:
procedure AntiAliasRect(clip: tbitmap; XOrigin, YOrigin, XFinal, YFinal: Integer); var Memo, x, y : Integer; (* Composantes primaires des points environnants *) p0, p1, p2 : pbytearray; SL : TScanlines; begin if XFinal<XOrigin then begin Memo := XOrigin; XOrigin := XFinal; XFinal := Memo; end; (* Inversion des valeurs *) if YFinal<YOrigin then begin Memo := YOrigin; YOrigin := YFinal; YFinal := Memo; end; (* si diff,rence n,gative*) XOrigin := max(1,XOrigin); YOrigin := max(1,YOrigin); XFinal := min(clip.width-2,XFinal); YFinal := min(clip.height-2,YFinal); clip.PixelFormat := pf24bit; SL := TScanlines.Create(clip); try for y := YOrigin to YFinal do begin //p0 := clip.ScanLine [y-1]; //p1 := clip.scanline [y]; //p2 := clip.ScanLine [y+1]; p0 := PByteArray(SL[y-1]); p1 := PByteArray(SL[y]); p2 := PByteArray(SL[y+1]); for x := XOrigin to XFinal do begin p1[x*3] := (p0[x*3]+p2[x*3]+p1[(x-1)*3]+p1[(x+1)*3])div 4; p1[x*3+1] := (p0[x*3+1]+p2[x*3+1]+p1[(x-1)*3+1]+p1[(x+1)*3+1])div 4; p1[x*3+2] := (p0[x*3+2]+p2[x*3+2]+p1[(x-1)*3+2]+p1[(x+1)*3+2])div 4; end; end; finally SL.Free; end; end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#3
|
|||
|
|||
![]() Спасибо огромное!
![]() ![]() ![]() |
#4
|
||||
|
||||
![]() Забыл. Надо еще и класс TScanlines создать.
Код:
type TScanlines = class private FScanLine0 : PByte; FScanLineIncrement : integer; FMaxRow : integer; function GetRowPtr(Index: integer): PByte; public constructor Create(Bitmap: TBitmap); destructor Destroy; override; property RowPtr[Index: Integer]: PByte read GetRowPtr; default; end; ... implementation ... constructor TScanlines.Create(Bitmap: TBitmap); begin inherited Create; FScanLine0 := nil; FScanLineIncrement := 0; FMaxRow := 0; if Bitmap <> nil then begin FScanLine0 := Bitmap.ScanLine[0]; FScanLineIncrement := integer(Bitmap.Scanline[1]) -integer(FScanLine0); FMaxRow := Bitmap.Height; end; end; destructor TScanlines.Destroy; begin inherited; end; function TScanlines.GetRowPtr(Index: integer): PByte; begin if (Index >= 0) and (Index < FMaxRow) then begin result := FScanLine0; Inc(result, FScanLineIncrement *Index); end else result := nil; end; Код:
procedure TForm1.Button1Click(Sender: TObject); begin AntiAliasRect(Image1.Picture.Bitmap, 0, 0, Image1.Width, Image1.Height); //Чтобы все работало, надо на форму добавить кнопку (TButton) и изображение (TImage) end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#5
|
|||
|
|||
![]() А кто-то может прогу целиком написать? ПЛИИИЗЗЗ!!!!!!!!!
|
#6
|
||||
|
||||
![]() Пожалуйста.
![]() Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#7
|
|||
|
|||
![]() СПАСИБО ГРОМАДНЕЙШЕЕ!!!! ТОЛЬКО У МЕНЯ ВЫДАЕТ ОШИБКУ((( Я тебе там в аське все написала. А ты можешь построчно мне объяснить? Сносочки сделать))
![]() |
#8
|
|||
|
|||
![]() КТО-НИБУДЬ помогите с объяснением!!! Очень надо!!! ПЛИЗ!!!
![]() |