[英]Image Enhancement using combination between SVD and Wavelet Transform
我的目标是处理图像上的照明和表情变化 。 因此,我尝试实现MATLAB代码,以便仅处理图像中的重要信息。 换句话说,仅使用图像上的“有用”信息。 为此,必须从图像中删除所有不重要的信息。
参考: 本文
让我们看看我的步骤:
1)应用直方图均衡化以获得histo_equalized_image=histeq(MyGrayImage)
。 因此可以在一定程度上处理较大的强度变化。
2)在histo_equalized_image
上应用svd近似值。 但是在执行此操作之前,我应用了svd分解( [LDR]=svd(histo_equalized_image)
),然后使用这些奇异值使派生图像J=L*power(D, i)*R
,其中i
在1之间变化和2。
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.
您需要定义“有用”或“重要”信息的含义。 然后再执行一些步骤。
直方图均衡是全局变换,它在不同的图像上给出不同的结果。 您可以进行实验-对图像进行histeq,这会从中受益。 然后制作原始图像的两个副本,并画一个黑色正方形(占图像面积的30%),然后画一个白色正方形。 然后应用histeq并比较结果。
低频成分包含有用的信息,不重要的信息也会丢失在该成分中。
真? 边缘和形状-(至少对我来说很重要)在高频中。 同样,我们需要定义“有用的”信息。
我看不到理论背景为何以及您的方法会如何工作。 您能否解释一下,为什么选择这种方法?
附注:我不确定本文是否与您相关,但建议使用Bansal等人的文章《 Where Edges Matter? 》。 V. Vonikakis和I. Andreadis的“多尺度图像对比度增强”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.