帮帮我吧,实在是看不懂
我有一个关于Retinex 算法的代码,里面调用的ssr函数我实在看不懂,哪位高人能帮我解释下,特别是红字部分的function img2=SSR(img,scale)
im=double(img)+1;
%im=zeros(2*size(img,1),2*size(img,2),size(img,3));
%for i=1:size(img,3)
% im(:,:,i)=;
%end
fim=fft2(im);
imag=size(scale,2)*log(im);
for i=1:size(scale,2)
=meshgrid((-(size(img,2)-1)/2):(size(img,2)/2),(-(size(img,1)-1)/2):(size(img,1)/2));
gauss=exp(-(x.^2+y.^2)/scale(i)^2);
gaus=gauss/sum(gauss(:));
%gaus=;
fgauss=abs(fft2(gaus,size(im,1),size(im,2)));
for j=1:size(im,3)
fg(:,:,j)=fgauss;
end
imag=imag-log(abs(ifft2(fg.*fim)));
end
%img2=imag(1:size(img,1),1:size(img,2),:);
img2=imag/(size(scale,2)*(4-size(im,3))); 楼主应该对相应的函数用谷歌或百度做一查询。
meshgrid:
=meshgrid(xa,ya) 当xa,ya分别为m维和n维行向量,得到x和y均为n行m列矩阵。meshgrid常用于生成x-y平面上的网格数据;
sum:
对某向量各元素求和;
abs: 求绝对值;
fft2:二维傅里叶变换。 谢谢楼上的,你说的这个我都查了,但联系到函数里我又不懂了:'( 这是我论文中程序的一部分,实在是看不太懂特别是这句gaus=gauss/sum(gauss(:));中是高斯函数求和吗?gauss(:)这里里面怎么是:号,是什么意思啊? 也是一个为论文搞程序的人,和我一样。
:hug:
举个例子:
guage= (1,2,3,4);
guage/sum(guage(:)) = (1/(1+2+3+4), 2/10, 3/10,4/10)
明白了吧? 哦……谢谢!为了论文头都弄大了 matlab对于矩阵的操作一般是基于列的,如果要求矩阵所有元素和,可以先将矩阵转化为矢量,如sum(guage(:)) ,也可以直接求,如sum(sum(guage))
页:
[1]