本文主要是介绍matlab波纹扭曲,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自:https://www.cnblogs.com/tiandsp/p/3854588.html
其实就是用sin或cos对x,y坐标进行变换,处理的时候依然是反向变换。
类似的,用不同的函数能得到不同的扭曲效果,比如log,1/x,exp等等。
效果如下:
代码如下(还给出了如何生成gif图片的代码):
clear;
clc;img=imread('/home/os/workspace/matlab/liftingbody.png');
[h w]=size(img);wave=[10,100]; %[幅度,周期]
newh=h+2*wave(1);
neww=w+2*wave(1);
rot=0;for i=1:10imgn=zeros(newh,neww); rot=rot+0.2;for y=1:newhfor x=1:newwyy=round((y-wave(1))-(wave(1)*cos(2*pi/wave(2)*x+rot))); %依然是逆变换xx=round((x-wave(1))-(wave(1)*cos(2*pi/wave(2)*y+rot)));if yy>=1 && yy<=h && xx>=1 && xx<=wimgn(y,x)=img(yy,xx);endendendfigure(1);imshow(imgn,[]);imgn(:,:,2)=imgn; %生成gif图片imgn(:,:,3)=imgn(:,:,1);[I,map]=rgb2ind(mat2gray(imgn),256); if i==1imwrite(I,map,'re.gif','Loopcount',inf,'DelayTime',1.5);elseimwrite(I,map,'re.gif','DelayTime',0.1,'WriteMode','Append'); end
end
这篇关于matlab波纹扭曲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!