0

我的目标是处理图像上的照明和表情变化。所以我尝试实现一个 MATLAB 代码,以便只处理图像中的重要信息。换句话说,只使用图像上的“有用”信息。为此,有必要从图像中删除所有不重要的信息。

参考:本文

让我们看看我的步骤:

1)应用直方图均衡以获得histo_equalized_image=histeq(MyGrayImage). 以便在一定程度上可以处理较大的强度变化。

2)histo_equalized_image. 但在此之前,我应用了 svd 分解 ( [L D R]=svd(histo_equalized_image)),然后这些奇异值用于生成在 1 和 2 之间变化J=L*power(D, i)*R的派生图像。i

3)最后,将导出的图像与原始图像组合到:C=(MyGrayImage+(a*J))/1+a. 其中 a 从 0 到 1 变化。

4)但上述所有步骤在不同的条件下都不能很好地执行。所以最后,应该使用小波变换来处理这些变化(我们只使用 LL 图像块)。低频分量包含有用的信息,不重要的信息也会在这个分量中丢失。(LL) 分量对光照变化和表情变化无效。

我为此写了一个matlab代码,我想知道我的代码是否正确(如果没有,那么如何纠正它)。此外,我很想知道我是否可以优化这些步骤。我们可以改进这种方法吗?如果是,那怎么办?请我需要帮助。

现在让我们看看我的 Matlab 代码:

%Read the RGB image
image=imread('img.jpg');

%convert it to grayscale
image_gray=rgb2gray(image);

%convert it to double
image_double=im2double(image_gray);

%Apply histogram equalization
histo_equalized_image=histeq(image_double);

%Apply the svd decomposition
[U S V] = svd(histo_equalized_image);

%calculate the derived image
P=U * power(S, 5/4) * V';


%Linearly combine both images
    J=(single(histo_equalized_image) + (0.25 * P)) / (1 + 0.25);

    %Apply DWT
    [c,s]=wavedec2(J,2,'haar');
    a1=appcoef2(c,s,'haar',1); % I need only the LL bloc.
4

1 回答 1

0
  1. 您需要定义“有用”或“重要”信息是什么意思。然后才做一些步骤。

  2. 直方图均衡化是全局变换,它在不同的图像上给出不同的结果。你可以做一个实验——在图像上做 histeq,从中受益。然后制作原始图像的两份副本,并在一个黑色正方形(图像区域的 30%)和第二个白色正方形上绘制。然后应用 histeq 并比较结果。

低频分量包含有用的信息,不重要的信息也会在这个分量中丢失。

真的吗?边缘和形状——(至少对我而言)非常重要的是高频。我们再次需要定义“有用的”信息。

我看不出你的方法为什么以及如何起作用的理论背景。你能稍微解释一下,你为什么选择这种方法?

PS 我不确定这篇论文是否与您相关,但推荐Bansal 等人的“ Which Edges Matter? ”。以及 V. Vonikakis 和 I. Andreadis 的“多尺度图像对比度增强”。

于 2014-01-23T10:15:32.140 回答