Преобразование гиперболического диска Пуанкаре в ленточную модель

Я хочу преобразовать гиперболический диск Пуанкаре с текстурами изображений (примеры в https://www.flickr.com/photos/gbachelier/albums/72157676467905456) в модель группы Булатова, которую можно найти в https://www.slideshare.net/ chamb3rlain / a-бедное-мужское-гиперболическое-квадратное отображение (слайд 25) функция, основанная на обратном гиперболическом загаре, которая должна сделать это: f(z) = 2*pi*atanh(z). Но вставив его в каркас на основе сетки для деформации изображения со сложными функциями, я не получил ничего похожего на ожидаемую структуру полосы.

Итак, как можно сделать сопоставление с моделью группы?

wh_out = num2cell([1000,2000]); [w_o,h_o] = wh_out{:};
[h_i, w_i, d] = size(img);

% GENERATE OUTPUT-GRID AND NORMALIZE [-1 1]
[xo1,yo1] = meshgrid(1:w_o,1:h_o);                                   
xo1 = (xo1/w_o)*2 - 1;
yo1 = (yo1/h_o)*2 - 1;  

% WARP OUTPUT-GRID WITH f(z) AND SEPARATE REAL AND IMAGINARY PARTS
fxiy = 2 * pi * atanh(deg2rad(xo1+1i*y_o1)));
xo1=real(fxiy);
yo1=imag(fxiy);

% NORMALIZE OUTPUT-GRID [0 1]
xo1 = (xo1+1)/2;
yo1 = (yo1+1)/2;                                                                            

% GENERATE INPUT-GRID AND NORMALIZE [0 1]
[xi,yi] = meshgrid(linspace(0,w_i+1,w_i),linspace(0,h_i+1,h_i));  
xi = xi / w_i;
yi = yi / h_i;

% INTERPOLATION OF OUTPUT-IMAGE
img = double(img);
img_out = zeros(h_o,w_o,d);
for k = 1:d; img_out(:,:,k) = uint8(interp2(xi, yi, img(:,:,k), xo1, yo1, interpol_meth)); end

0 ответов

В конце концов, я нашел в "Пичан Оуян, Квоквай Чанг: Красивая математика, часть 3: Гиперболические эстетические паттерны, основанные на конформных сопоставлениях". DOI: 10.1109/MCG.2014.23 отображение fz = (exp(0.5*pi.* Z)-1)./(exp(0.5*pi.* Z)+1), которое генерирует периодический сегмент полосы img_seg из гиперболического диска который можно просто преобразовать в полосу с img_band = repmat(img_seg, 1, n).

Другие вопросы по тегам