clover3ye 发表于 2009-5-25 19:29

帮帮我吧,实在是看不懂

我有一个关于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)));

gloryzhu 发表于 2009-5-25 19:34

楼主应该对相应的函数用谷歌或百度做一查询。
meshgrid:
=meshgrid(xa,ya) 当xa,ya分别为m维和n维行向量,得到x和y均为n行m列矩阵。meshgrid常用于生成x-y平面上的网格数据;
sum:
对某向量各元素求和;
abs: 求绝对值;
fft2:二维傅里叶变换。

clover3ye 发表于 2009-5-25 19:43

谢谢楼上的,你说的这个我都查了,但联系到函数里我又不懂了:'( 这是我论文中程序的一部分,实在是看不太懂特别是这句gaus=gauss/sum(gauss(:));中是高斯函数求和吗?gauss(:)这里里面怎么是:号,是什么意思啊?

gloryzhu 发表于 2009-5-25 19:49

也是一个为论文搞程序的人,和我一样。
:hug:

举个例子:
guage= (1,2,3,4);
guage/sum(guage(:)) = (1/(1+2+3+4), 2/10, 3/10,4/10)
明白了吧?

clover3ye 发表于 2009-5-25 19:52

哦……谢谢!为了论文头都弄大了

friendchj 发表于 2009-5-25 20:03

matlab对于矩阵的操作一般是基于列的,如果要求矩阵所有元素和,可以先将矩阵转化为矢量,如sum(guage(:)) ,也可以直接求,如sum(sum(guage))
页: [1]
查看完整版本: 帮帮我吧,实在是看不懂