Выделение границ - Игростроение и развлечение

Форма входа

Приветствую Вас Гость!

Логин:
Пароль:

Наш опрос

Какой жанр фильмов вы предпочитаете ?
Всего ответов: 229


    Случайное фото

    Статистика


Поддержите наш проект

WebMoney:
R309699065243
U292079291240
Z373355457648

Счётчики


Rambler's Top100
Рейтинг@Mail.ru

Выделение границ - Игростроение и развлечение

[ Новые сообщения · Участники · Правила форума · RSS ]

WWW Site Forum
Страница 1 из 11
Игростроение и развлечение » Программинг » Алгоритмика, Математика, Физика » Выделение границ
Выделение границ
KostiaДата: Суббота, 21.02.2009, 07:42 | Сообщение # 1
Программист
Группа: Проверенные
Сообщений: 80
Репутация: 2
Статус: Offline
|A,B| e=|A-D|+|C-B|=sqrt(sqr(A-D)+sqr(C-B))
|C,D|
Code
procedure Filtr1(var bmp:TBitmap);
var
   x,y: integer;
   r,g,b: byte;
   line1: PByteArray;
   line2: PByteArray;
begin
   for y:=0 to bmp.Height-2 do
   begin
     line1:=bmp.ScanLine[y];
     line2:=bmp.ScanLine[y+1];
     for x:=0 to bmp.Width-1 do
     begin
     //точное, но более медленное вычисление
       r:=round(sqrt(sqr(line1[x*3]-line2[x*3+3])+
               sqr(line2[x*3]-line1[x*3+3])));
       g:=round(sqrt(sqr(line1[x*3+1]-line2[x*3+4])+
               sqr(line2[x*3+1]-line1[x*3+4])));
       b:=round(sqrt(sqr(line1[x*3+2]-line2[x*3+5])+
               sqr(line2[x*3+2]-line1[x*3+5])));
     //грубое и менее точное вычисление, но более быстрое
     {  r:=abs(line1[x*3]-line2[x*3+3])+abs(line2[x*3]-line1[x*3+3]);
       g:=abs(line1[x*3+1]-line2[x*3+4])+abs(line2[x*3+1]-line1[x*3+4]);
       b:=abs(line1[x*3+2]-line2[x*3+5])+abs(line2[x*3+2]-line1[x*3+5]); }

       line1[x*3]:=(r+b+g)div 3; line1[x*3+1]:=(r+b+g)div 3; line1[x*3+2]:=(r+b+g)div 3;
     end;
   end;
//вывод:
   //При более точном вычисление скорость падает в ~1/3 раза,
   //но и качество картинки улучшается ,примерно, во столько же раз
end;
 
Игростроение и развлечение » Программинг » Алгоритмика, Математика, Физика » Выделение границ
Страница 1 из 11
Поиск: