powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы искажения изображений
25 сообщений из 25, страница 1 из 1
Алгоритмы искажения изображений
    #37212992
Дано есть фотография. Нужно к ней применить эффект кручения(волны, рябь) не важно.
Есть такое фото



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



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

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

2D -> Waves and Ripples

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

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

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

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


Как работать с точками и холстами - зависит от языка реализации. А проходить по точкам нужно на новом холсте - для каждой точки ноходить праобраз.
...
Рейтинг: 0 / 0
Алгоритмы искажения изображений
    #37213868
x1ca4064, пишешь какую-то чушь да ещё с грамматическими ошибками, я знаю что и как нужно делать, мне нужно только объяснить с помощью каких математических рассчётов сделать задуманное
...
Рейтинг: 0 / 0
Алгоритмы искажения изображений
    #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
Алгоритмы искажения изображений
    #37215279
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл представитьсяx1ca4064, пишешь какую-то чушь да ещё с грамматическими ошибками, я знаю что и как нужно делать, мне нужно только объяснить с помощью каких математических рассчётов сделать задуманное

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


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

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

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

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

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

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

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

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

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

Их можно компенсировать разными методами - интерполировать, отражать - зависит от задачи.
Так чего-ж ты не компенсировал? Этож незаконченная задача.
Студента препод анально опустит за "зелень" а у тебя будет
еще один смертельный враг.
...
Рейтинг: 0 / 0
Алгоритмы искажения изображений
    #37217597
mayton, я не студент ыыы
и не школьник
и у девок яиц нету проверял
книжку по компьютерной графике дайте интересную(хоть основы буду знать а хотя с OpenGL и DirectX оно и может не надо)
но это быстро хомяки подсуетились вам сказал
...
Рейтинг: 0 / 0
Алгоритмы искажения изображений
    #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
Алгоритмы искажения изображений
    #37218786
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

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

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

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

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


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