2015-04-02 57 views
0

我使用这个代码:对于数组,我得到值为0和255之间的任何内容为matlab?

for m_cof=1:3 
    for n_cof=1:3 
     Fixed_term=(((2*(m_cof-1)+1)*(2*(n_cof-1)+1))/(g(1)*g(2))); 
     c(m_cof,n_cof)=0; 
     for u=1:g(1) 
      y=((2*u)/g(1)); 
      uof=Polynomial1(y,m_cof); 
      for v=1:g(2) 
       z=((2*v)/g(2)); 
       vof=Polynomial1(z,n_cof); 
       f=f_template(u,v); 
       iop=(Fixed_term*f_template(u,v)*uof*vof) 
       c(m_cof,n_cof)=iop+c(m_cof,n_cof) 
      end 
     end 
    end 
end` 

其中f_template是RGB为灰度图像阵列,c内容都只是0和255之间,没有什么可以请你帮

+1

是您的图像类型'uint8'(无符号的8位整数)?如果是这样,整数除法将结果截断为最接近的整数,并且在最小/最大值“0”和“255”处饱和。在进行任何计算之前,尝试将'Im = double(Im)'转换为double。 – eigenchris 2015-04-02 14:51:51

+0

感谢它解决了:) – Ankit 2015-04-03 08:13:16

回答

0

由于图片所属的数据类型,您看起来像饱受折磨。要解决这个问题,请将您的图片投射到double,然后再次尝试您的代码。

简单地说,嵌套循环之前做到这一点,在你的代码的开头:

f_template = double(f_template); 
+1

感谢它解决了:) – Ankit 2015-04-03 08:13:33

+0

@Ankit - 很高兴工作!祝你好运! – rayryeng 2015-04-03 08:14:42

相关问题