Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы искажения изображений / 25 сообщений из 25, страница 1 из 1
12.04.2011, 21:46
    #37212992
Алгоритмы искажения изображений
Дано есть фотография. Нужно к ней применить эффект кручения(волны, рябь) не важно.
Есть такое фото



Нужно получить такое



тут есть даже статья на эту тему

http://library.thinkquest.org/10300/

2D -> Waves and Ripples

Я скачивал исходники на яве, но там мало что понятно.
Кто-нибудь может мне объяснить как программно реализовать похожие эффекты, дать ссылки на книги по теме(программированию, геометрии, математике) или подробно расписать как оно делается, я уже не то что ничего не помню из институтской программы, но даже из школьной.
...
Рейтинг: 0 / 0
12.04.2011, 21:48
    #37212994
Алгоритмы искажения изображений
Да ещё интересует сглаживание(анти-лиасинг).
...
Рейтинг: 0 / 0
12.04.2011, 21:56
    #37213001
Algol36
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяКто-нибудь может мне объяснить как программно реализовать похожие эффекты
http://www.gotdotnet.ru/blogs/algol36/9658/
...
Рейтинг: 0 / 0
12.04.2011, 22:01
    #37213007
Алгоритмы искажения изображений
Algol36, да видел я это там есть парочка формул, но это не совсем то что мне нужно и там не написано ничего про то как сделать антилиасинг или как правильно билинейную интерполяцию, я цже совсем всё попазабыл
...
Рейтинг: 0 / 0
12.04.2011, 22:07
    #37213022
Algol36
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представиться,

Ну во-первых, зачем вам антиалиасинг и интреполяция, если это уже поддерживается платформами (по крайней мере в GDI+) ?
Ну если уж очень хочется, смотрите бикубическая интерполяция .
...
Рейтинг: 0 / 0
13.04.2011, 00:45
    #37213190
С0ВЕСТЬ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяДа ещё интересует сглаживание(анти-лиасинг).

Совет:
скачай себе исходники Гимпа, аналог Фотошопа бесплатный, найдешь все интересующие вопросы!
good luck.
...
Рейтинг: 0 / 0
13.04.2011, 10:55
    #37213618
Алгоритмы искажения изображений
Algol36, допустим я хочу на python под symbian написать простенькую программу для работы с изображениями там нет GDI, там вообще в апи есть пару функций рисования(круг, точка, линия, текст, определить цвет и т.д.). Так вот меня интересует теория как это сделать. Есть тут вообще математики. Вот эффект twirl как сделать формулу можете дать или описать алгоритм.

Вот например есть изображение уже готовое. Функционал что можно делать я описал. Можно например взять определить цвет точки, никаких лишних телодвижений не нужно. Нужно создать ещё один холст. Двумя вложенными циклами пройтись по первому брать каждую точку и высчитывать её координать на новом холсте как?
...
Рейтинг: 0 / 0
13.04.2011, 12:21
    #37213847
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представиться,


Как работать с точками и холстами - зависит от языка реализации. А проходить по точкам нужно на новом холсте - для каждой точки ноходить праобраз.
...
Рейтинг: 0 / 0
13.04.2011, 12:33
    #37213868
Алгоритмы искажения изображений
x1ca4064, пишешь какую-то чушь да ещё с грамматическими ошибками, я знаю что и как нужно делать, мне нужно только объяснить с помощью каких математических рассчётов сделать задуманное
...
Рейтинг: 0 / 0
13.04.2011, 15:49
    #37214513
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяx1ca4064, пишешь какую-то чушь да ещё с грамматическими ошибками, я знаю что и как нужно делать, мне нужно только объяснить с помощью каких математических рассчётов сделать задуманное

Вау! Какая разнузданность. Ну ладно, по теме:

Вот модуль:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
unit UDistort;

interface

uses Windows,Graphics;

type
  TRPoint=record
    x,y:extended;
  end;

  TDistortFun=function (x,y:extended;Param:array of extended):TRPoint;

procedure Distort(Src,Trg:TBitmap;DF:TDistortFun;Param:array of extended);

function Dummy(x,y:extended;Param:array of extended):TRPoint;
function SinDistr(x,y:extended;Param:array of extended):TRPoint;

implementation

const
  DefColor:TColor=clLime;

function Dummy(x,y:extended;Param:array of extended):TRPoint;
begin
  Result.x:=x;
  Result.y:=y;
end;

function SinDistr(x,y:extended;Param:array of extended):TRPoint;
begin
  Result.x:=x*( 1 +Param[ 0 ]*sin(Param[ 1 ]*pi*y));
  Result.y:=y;
end;


procedure Distort(Src,Trg:TBitmap;DF:TDistortFun;Param:array of extended);
var
  RP:TRPoint;
  p:TPoint;
  x,y:integer;
  C:TColor;
begin
  for y:= 0  to Trg.Height- 1  do
  for x:= 0  to Trg.Width- 1  do
  begin
    RP:=DF(x/Trg.Width,y/Trg.Height,Param);
    p.x:=trunc(RP.x*Trg.Width);
    p.y:=trunc(RP.y*Trg.Height);

    if (p.x< 0 ) or (p.x>=Src.Width) or
      (p.y< 0 ) or (p.y>=Src.Height) then C:=DefColor
    else C:=Src.Canvas.Pixels[p.x,p.y];
    Trg.Canvas.Pixels[x,y]:=C;
  end;
end;





end.

Результат я прекрепил.

Уверен, что такой граммотный человек как Вы, СпелЧекер 80 уровня, сможет вспомнить, что такое матрица поворота и доделает эту великую программу.
...
Рейтинг: 0 / 0
13.04.2011, 21:48
    #37215279
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяx1ca4064, пишешь какую-то чушь да ещё с грамматическими ошибками, я знаю что и как нужно делать, мне нужно только объяснить с помощью каких математических рассчётов сделать задуманное

Вот и "математические расчеты":
...
Рейтинг: 0 / 0
13.04.2011, 22:37
    #37215326
Алгоритмы искажения изображений
x1ca4064, спасиб, это из какой книги/учебника, я будет время свободное хоть почитаю, буду всё вспоминать?
...
Рейтинг: 0 / 0
13.04.2011, 22:42
    #37215331
Алгоритмы искажения изображений
f в формуле это что? x штрих и y штрих это я как понял старые координаты а не производные...
...
Рейтинг: 0 / 0
14.04.2011, 00:10
    #37215415
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяf в формуле это что? x штрих и y штрих это я как понял старые координаты а не производные...


f - частота волн
A - амплитуда

x,y - образ
x',y' - праобраз

Да. это не производные.

Про книжки не знаю - сам придумал.

Орфографию проверьте, на всякий случай :)
...
Рейтинг: 0 / 0
14.04.2011, 01:28
    #37215474
Algol36
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представиться,

Касаемо антиалиасинга. Обычно антиалиасинг применяется в векторной графике. Для нелинейных же преобразований растра это не очень очевидная операция. Здесь скорее речь может идти не об антиалиасинге, а о смешивании цветов. К примеру, после преобразования оказывается, что в один пиксел нужно поместить два значения. Если вы будете делать это в лоб, то запишется только одно из значений (последнее). Если же по-правильному, то нужно смешивать эти два цвета.
Самое простое решение, как на мой взгляд - сначала увеличить картинку в два раза (можно даже простейшим методом - ближайшего соседа). Затем произвести преобразования, а затем уменьшить ее до прежних размеров, усредняя значения пикселов.
...
Рейтинг: 0 / 0
14.04.2011, 15:11
    #37216565
Алгоритмы искажения изображений
x1ca4064, что я не так делаю?

беру определяю цвет старой точки, потом вокруг неё определяю цвет восьми точек, складываю цвета ставлю точку всё "жирное" получается
...
Рейтинг: 0 / 0
14.04.2011, 20:05
    #37217247
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
x1ca4064Результат я прекрепил.
А ты мог дать рекомендации что делать с "границей обозримой вселенной" ?
Откуда у тебя ярко-зелёные помехи? Это дефект метода?
...
Рейтинг: 0 / 0
14.04.2011, 21:12
    #37217345
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
maytonx1ca4064Результат я прекрепил.
А ты мог дать рекомендации что делать с "границей обозримой вселенной" ?
Откуда у тебя ярко-зелёные помехи? Это дефект метода?

Нет, это точки, которые не имет прообраза на оригинальном изображении. В коде это явно прописано ...:=DefColor

Их можно компенсировать разными методами - интерполировать, отражать - зависит от задачи.
...
Рейтинг: 0 / 0
14.04.2011, 22:34
    #37217427
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
x1ca4064Нет, это точки, которые не имет прообраза на оригинальном изображении. В коде это явно прописано ...:=DefColor

Их можно компенсировать разными методами - интерполировать, отражать - зависит от задачи.
Так чего-ж ты не компенсировал? Этож незаконченная задача.
Студента препод анально опустит за "зелень" а у тебя будет
еще один смертельный враг.
...
Рейтинг: 0 / 0
15.04.2011, 02:06
    #37217597
Алгоритмы искажения изображений
mayton, я не студент ыыы
и не школьник
и у девок яиц нету проверял
книжку по компьютерной графике дайте интересную(хоть основы буду знать а хотя с OpenGL и DirectX оно и может не надо)
но это быстро хомяки подсуетились вам сказал
...
Рейтинг: 0 / 0
15.04.2011, 09:15
    #37217752
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
procedure Wave(const Dst: TBitmap; Amount, Inference, Style: Integer);
var
  X, Y: Integer;
  Bitmap: TBitmap;
  P1, P2: PByteArray;
  B: Integer;
  Angle: Extended;
  wavex: Integer;
begin
  Bitmap := TBitmap.Create;
  Bitmap.Assign(Dst);
  wavex := Style;
  Angle := Pi /  2  / Amount;
  for Y := Bitmap.Height -  1  - ( 2  * Amount) downto Amount do
  begin
    P1 := Bitmap.ScanLine[Y];
    B :=  0 ;
    for X :=  0  to Bitmap.Width -  1  do
    begin
      P2 := Dst.ScanLine[Y + Amount + B];
      P2[X * bpp] := P1[X * bpp];
      P2[X * bpp +  1 ] := P1[X * bpp +  1 ];
      P2[X * bpp +  2 ] := P1[X * bpp +  2 ];
      case wavex of
         0 :
          B := Amount * Variant(Sin(Angle * X));
         1 :
          B := Amount * Variant(Sin(Angle * X) * Cos(Angle * X));
         2 :
          B := Amount * Variant(Sin(Angle * X) * Sin(Inference * Angle * X));
      end;
    end;
  end;
  Bitmap.Free;
end;
...
Рейтинг: 0 / 0
15.04.2011, 16:26
    #37218786
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
__Avenger__,

хотелось бы увидеть результаты работы данной процедуры (все 3 случая).

И комментарии о преобразовании типов в вариант - зачем?
...
Рейтинг: 0 / 0
15.04.2011, 17:32
    #37218898
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяx1ca4064, что я не так делаю?

беру определяю цвет старой точки, потом вокруг неё определяю цвет восьми точек, складываю цвета ставлю точку всё "жирное" получаетсяКогда Вы складываете цвета у них же яркость меняется, Вам нужно их ещё усреднить.
...
Рейтинг: 0 / 0
17.04.2011, 17:08
    #37220481
Алгоритмы искажения изображений
x1ca4064, на вот этом примере
...
Рейтинг: 0 / 0
17.04.2011, 22:59
    #37220768
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритмы искажения изображений
Забыл представитьсяx1ca4064, на вот этом примере

В этом примере что?
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы искажения изображений / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]