求各位高手帮忙看一下此程序哪出错了,应该怎么改,感激不尽。
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(257,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); % 得到条纹图的折叠相位(相位主值)