Что такое вихревой эффект в MATLAB?
В 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 |
Выход: