Преобразуйте фотографию в соответствии с функцией [MATLAB] - PullRequest
0 голосов
/ 01 декабря 2018

Я новичок в Matlab, и я пытаюсь преобразовать фотографию в соответствии с функцией, указанной в коде.Моя цель - увидеть, куда направляются некоторые пункты плана R ^ 2.Например, я хотел бы преобразовать:

enter image description here

Но я не могу понять это.Я нашел несколько хороших разговоров на эту тему:

https://www.mathworks.com/matlabcentral/answers/81975-is-it-possible-to-pass-an-image-as-an-input-to-a-function-in-matlab

и хорошие функции, такие как:

https://www.mathworks.com/help/images/ref/imtransform.html

https://www.mathworks.com/help/images/ref/imwarp.html

но я не понимаю, что с этим делать, потому что у меня нет матрицы, а просто функция "1 / z" ...

Цель - сделать что-то лучше этого:

Как построить сетку Wolfram Alpha?[MATLAB]

Я пытался добавить цвета к сетчатому графику, но мне это не удалось ... Я мог только найти, как изменить цвета равномерно, например, настройкивсе в зеленом цвете ...

Если у вас есть другое решение, не использующее изображение, а создающее сетку из ряда цветов, а затем деформирующее его (как в ссылке) или даже лучше,вместо сетки создание целого плана с равномерным распределением цветов ... это также решает проблему!

Спасибо!

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете использовать функцию surf для построения сетки с цветными пятнами.Если вы используете тот же код в моем ответе на ваш предыдущий вопрос , вы можете визуализировать исходную сетку с цветами следующим образом:

C = X.^2 + Y.^2; %change this to any function you like to get different color patterns
surf(X,Y,C);
view([0, 90]); %view the mesh from above

Теперь, если вы хотите увидеть, как преобразилсяСетка выглядит так: вы можете сделать:

surf(U,V,C);
view([0, 90]);

, где U и V вычисляются согласно моему предыдущему ответу.

Редактировать: Добавлен пример кодадля преобразования изображения с использованием geometricTransform2d и imwarp.

clear
clc

A = imread('peppers.png');

figure(1)
imshow(A)

t1 = geometricTransform2d(@ftransform);

Rin = imref2d(size(A),[-1 1],[-1 1]);
Rout = imref2d(size(A),[-5 5],[-5 5]);

B = imwarp(A, Rin, t1,'OutputView',Rout);
figure(2);
imshow(B)


function Xt = ftransform(X)

Z = complex(X(:,1),X(:,2));
Zt = 1./Z;
Xt(:,1) = real(Zt);
Xt(:,2) = imag(Zt);

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...