matlab练习程序(波纹扭曲)
2014-07-19 09:34
459 查看
其实就是用sin或cos对x,y坐标进行变换,处理的时候依然是反向变换。
类似的,用不同的函数能得到不同的扭曲效果,比如log,1/x,exp等等。
效果如下:
![](http://images.cnitblog.com/i/340413/201407/190922594742354.gif)
代码如下(还给出了如何生成gif图片的代码):
if i==0
imwrite(I,map,'re.gif','Loopcount',inf,'DelayTime',1.5);
else
imwrite(I,map,'re.gif','DelayTime',0.1,'WriteMode','Append');
end
类似的,用不同的函数能得到不同的扭曲效果,比如log,1/x,exp等等。
效果如下:
![](http://images.cnitblog.com/i/340413/201407/190922594742354.gif)
代码如下(还给出了如何生成gif图片的代码):
clear all;close all;clc; img=imread('lena.jpg'); [h w]=size(img); wave=[10,100]; %[幅度,周期] newh=h+2*wave(1); neww=w+2*wave(1); rot=0; for i=1:10 imgn=zeros(newh,neww); rot=rot+0.2; for y=1:newh for x=1:neww yy=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<=w imgn(y,x)=img(yy,xx); end end end figure(1); imshow(imgn,[]); imgn(:,:,2)=imgn; %生成gif图片 imgn(:,:,3)=imgn(:,:,1); [I,map]=rgb2ind(mat2gray(imgn),256);
if i==0
imwrite(I,map,'re.gif','Loopcount',inf,'DelayTime',1.5);
else
imwrite(I,map,'re.gif','DelayTime',0.1,'WriteMode','Append');
end
end
相关文章推荐
- matlab练习程序(图像加噪,各种滤波)
- matlab练习程序(最大中值滤波)
- matlab练习程序(Floyd–Steinberg dithering)
- matlab练习程序(Gabor Filter)
- matlab练习程序(感知哈希对比图片)
- matlab练习程序(求灰度图像最大灰度,最小灰度,平均灰度)
- matlab练习程序(LMS)
- matlab练习程序(图像旋转,最邻近插值)
- matlab练习程序(图像水平/竖直移动)
- matlab练习程序(白平衡<动态阈值>)
- matlab练习程序(中值滤波)
- matlab练习程序(灰度拉伸)
- matlab练习程序(生成高斯图像)
- matlab练习程序(图像错切)
- matlab练习程序(makelut/applylut)
- matlab练习程序(最大均值滤波)
- matlab练习程序(读入灰度图像序列)
- matlab练习程序(灰度图直方图均衡化)
- matlab练习程序(透视变换)
- matlab练习程序(PCA<SVD>)