Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2012-04-20
年龄: 34
帖子: 1
声望力: 0 ![]() |
![]()
I=imread('001.jpg');
fftimage=fftshift(fft2(double(I))); % 对条纹图像I 进行二维傅里叶变换 figure,plot(mat2gray(abs(fftimage(257, ![]() arrinput = ginput; % 鼠标选取高低频之间的波谷位置?点一下?按回车 arrtemp = fftimage(257, ![]() [FringeMax,FringeMaxIndex] = max(arrtemp(arrinput(1,1):512)); % 得到从选取点开始向右的最大值(波峰)?并记录位置 FringeMaxIndex = round(arrinput(1,1) + FringeMaxIndex - 1); % 得到1 级谱(基频)的波峰位置 maxvalue=max(fftimage(1,FringeMaxIndex:512)); % 取出1 级谱的位置。257 表示第257 行(中间行?谱的位置) [m,n]=find(fftimage==maxvalue); % 取出1 级谱最大值位置 fringe_num=abs(n-m); % 确定条纹个数 sidelobe=zeros(512); w =6; % 设定频域滤波窗口宽度?窗口为 6 个像素(根据情况改变) sidelobe(:,n-w:n+w)=fftimage(:,n-w:n+w); % 取出窗口提取的基频分量 sidelobe_ifft=(ifft2(ifftshift(sidelobe))); % 变换基频到中心?并傅里叶反变换 sidelobe_phase=angle(sidelobe_ifft); % 得到条纹图的折叠相位(相位主值) imshow(sidelobe_phase); 显示 ??? Subscripted assignment dimension mismatch. Error in ==> Untitled2 at 16 sidelobe(:,n-w:n+w)=fftimage(:,n-w:n+w); % 取出窗口提取的基频分量 |
![]() |
![]() |