3

我根据论文Entropy Minimization for Shadow Removal中的不变颜色特征实现了一种去除阴影的方法。我的实现有时似乎会产生类似的计算结果,但它们总是关闭,而且我的灰度图像是块状的,可能是由于不正确地采用几何平均值。

这是论文中马图像以及我的不变图像的信息潜力的示例图。将 x 轴乘以 3 得到 theta(从 0 到 180):

信息罐

这是我的代码为正确的最大 theta 输出的灰度图像(我的是 10):

灰度

您可以看到他们的图像没有的块状:

这是他们的信息潜力:

信息罐2

除以几何平均值时,我尝试使用 NaN 并对图像进行阈值处理,因此可能的最小值为 0.01,但它似乎并没有改变我的输出。

这是我的代码:

I = im2double(imread(strname));
[m,n,d] = size(I);
I = max(I, .01);
chrom = zeros(m, n, 3, 'double');
for i = 1:m
    for j = 1:n
       % if ((I(i,j,1)*I(i,j,2)*I(i,j,3))~= 0)
              chrom(i,j, 1) = I(i,j,1)/((I(i,j,1)*I(i,j,2)*I(i,j, 3))^(1/3));
              chrom(i,j, 2) = I(i,j,2)/((I(i,j,1)*I(i,j,2)*I(i,j, 3))^(1/3));
              chrom(i,j, 3) = I(i,j,3)/((I(i,j,1)*I(i,j,2)*I(i,j, 3))^(1/3));
          % else
          %    chrom(i,j, 1) = 1;
          %    chrom(i,j, 2) = 1;
          %    chrom(i,j, 3) = 1;
        % end
    end
end

p1 = mat2gray(log(chrom(:,:,1)));
p2 = mat2gray(log(chrom(:,:,2)));
p3 = mat2gray(log(chrom(:,:,3)));
X1 = mat2gray(p1*1/(sqrt(2)) - p2*1/(sqrt(2)));
X2 = mat2gray(p1*1/(sqrt(6)) + p2*1/(sqrt(6)) - p3*2/(sqrt(6)));
maxinf = 0;
maxtheta = 0;
data2 = zeros(1, 61);
for theta = 0:3:180
M = X1*cos(theta*pi/180) - X2*sin(theta*pi/180);
s = sqrt(std2(X1)^(2)*cos(theta*pi/180) + std2(X2)^(2)*sin(theta*pi/180));
s = abs(1.06*s*((m*n)^(-1/5)));
[m, n] = size(M);
length = m*n;
sources = zeros(1, length, 'double');
count = 1;
for x=1:m
    for y = 1:n
    sources(1, count) = M(x , y);
    count = count + 1;
end
end
weights = ones(1, length);
sigma = 2*s;
[xc , Ak] = fgt_model(sources , weights , sigma , 10, sqrt(length) , 6  );
sum1 = sum(fgt_predict(sources , xc , Ak , sigma , 10 ));
sum1 = sum1/sqrt(2*pi*2*s*s);
data2(theta/3 + 1) = sum1;
if (sum1 > maxinf)
   maxinf = sum1;
   maxtheta = theta;
end
end
InvariantImage2 = cos(maxtheta*pi/180)*X1 + sin(maxtheta*pi/180)*X2;

假设快速高斯变换是正确的。

4

1 回答 1

2

我不知道这是否有什么不同,因为现在已经一个多月了,但是块状和不同的信息潜在图只是由使用过的图像的压缩引起的。你不能指望使用这张图片得到与他们一样的结果,因为他们使用的是原始的、高分辨率的未压缩版本。我不得不说我对你的结果印象深刻,尤其是在实现信息潜力方面。那件事让我有点不知所措。

约翰。

于 2013-03-31T10:34:53.763 回答