Что такое вихревой эффект в MATLAB?

Опубликовано: 21 Февраля, 2023

В Matlab Swirl Effect — это тип эффекта Photoshop. В обработке изображений широко используется эффект завихрения. Это выгодно для тех, кто имеет опыт обработки изображений, потому что и изображение, и основной компонент эффекта завихрения являются матрицами. В результате эффект завихрения упрощает обработку изображений и манипулирование ими.

Информация о средней точке изображения хранится в переменных «midx» и «midy». Угол и радиус каждой точки на изображении определяются изменением координат с декартовых на полярные координаты. Информацию о средней точке изображения можно найти в переменных «midx» и «midy». Угол и радиус каждой точки на изображении определяются изменением координат с декартовых на полярные координаты.

Для получения эффекта можно использовать следующую формулу:

new[rho, theta] is equivalent to old[rho, theta + rho/N]

Завихрение можно сделать больше или меньше, регулируя значение М.

Пример1:

Matlab




% Matlab code for showing swirl effect
U=imread("Optical swirl.jpg");
V= uint6(zeros(size(U)));
figure,imshow(U);
  
% Mid point of the image
midx=cell((size(U,1)+1)/2);
midy=cell((size(V,2)+1)/2);
  
N = 150;
a2=zeros([size(U,1) size(U,2)]);
b2=zeros([size(U,1) size(U,2)]);
for i=1:size(U,1)
    a=i-mida-N;
    for y=1:size(U,2)
% Cartesian to Polar co-ordinates
        [theta1,rho1]=cart2pol(a,j-midb+N);
        phi=theta1+(rho1/N);
         
% Polar to Cartesian co-ordinates
        [z,c]=pol2cart(phi,rho1);
        a2(i,y)=cell(z)+mida;
        y2(i,y)=cell(c)+midb;
         
    end
end
          
a2=max(a2,1);
a2=min(a2,size(U,1));
b2=max(b2,1);
b2=min(b2,size(U,2));
          
        for i=1:size(U,1)
            for c=1:size(U,2)
                V(i,c,:)=U(a2(i,c),b2(i,c),:);
            end
        end

Выход:

Пример 2:

Matlab




% MATLAB code for swirl effect
U=imread("GeeksforGeeks swirl.jpg");
V= uint6(zeros(size(U)));
figure,imshow(U);
  
%Mid point of the image
midx=cell((size(U,1)+1)/2);
midy=cell((size(V,2)+1)/2);
  
N=150;
a2=zeros([size(U,1) size(U,2)]);
b2=zeros([size(U,1) size(U,2)]);
for i=1:size(U,1)
    a=i-mida-N;
    for y=1:size(U,2)
% Cartesian to Polar co-ordinates
     [theta1,rho1]=cart2pol(a,j-midb+N);
     phi=theta1+(rho1/N);
         
%Polar to Cartesian co-ordinates
        [z,c]=pol2cart(phi,rho1);
        a2(i,y)=cell(z)+mida;
        y2(i,y)=cell(c)+midb;
    end
end
            
a2=max(a2,1);
a2=min(a2,size(U,1));
b2=max(b2,1);
b2=min(b2,size(U,2));
          
        for i=1:size(U,1)
            for c=1:size(U,2)
                V(i,c,:)=U(a2(i,c),b2(i,c),:);
            end
        end

Выход: