MATLAB图像质量和惯性

时间:2017-03-09 19:56:14

标签: matlab image-processing

我有一段代码,我想了解。这是由我的同事给出的,我正在努力解释她为何采用她的方式。在评论中,她提到变量inertai1给出了均匀性因子。我想知道这是如何使图像均匀的。

代码背景: 最初它是2D图像。添加每列中的强度值,我得到一维向​​量。然后将所有值除以1D向量中的最大值。基本上正常化。

如果我是图像阅读。我有0到255之间的值。

S = sum(I,2); Smax = max(S);
Cprofile = S/Smax;

I2 = I*10; 
I2(I2>255) = 255;
S2 = sum(I2,2); S2max = max(S2);
Cprofile2 = S2/S2max;
kCprofile2 = fft(Cprofile2); 
//Do some frequency manipulations
Cprofile2_f = ifft(kCprofile2)

inperpx是每像素一英寸。

b1和d1是我感兴趣的Cprofile的第一个也是最后一个索引。

 inertia1=0;
    mass1=0;

    for ii=b1:d1;
        mass1=mass1+inperpx*Cprofile(ii);
        inertia1=inertia1+abs(Cprofile2_f(ii)-Cprofile(ii))*inperpx;
    end

    inertia1=1-inertia1/mass1; 

1 个答案:

答案 0 :(得分:0)

假设"做一些频率操作"你遗漏的部分去除或减少高频(即应用低通滤波器),然后循环计算输入和平滑版本之间的绝对差值之和。当图像中存在更多高频分量时,绝对差值之和越大,因此图像越不均匀"。

请注意,可以使用mass1=sum(Cprofile(b1:d1))inertia1的类似语句计算相同内容。乘以inperpx是没用的,因为它会相同地缩放两个值,然后将两个值分开,使得缩放毫无意义。

另请注意,可以删除语句I(I>255) = 255,因为之后您不会使用I。也许这应该是I2(I2>255) = 255