照明不变量:形态商数图像(MQI)

时间:2012-02-05 08:13:30

标签: matlab

形态商数图像(MQI)是一种用于照明标准化的方法,它在[-1 - ]中提出:

在Retinex理论[-2-]中,图像I(x,y)可以建模为反射函数R(x,y)和亮度函数L(x,y)的乘积:                                                   I(x,y)= R(x,y)L(x,y)
与图像场景中物体特征有关的反射率R(x,y)取决于场景表面的反照率,而亮度L(x,y), 与落在观察场景上的照明量有关,由照明源确定。由于反射率R(x,y)仅与物体中的物体有关 在图像中,很明显,当成功估计时,它可以是输入图像的照明不变表示。因此,为了获得照明不变 在图像表示中,通常首先估计图像的亮度L(x,y)。然后,将反射率表示为图像I(x,y)与其亮度L(x,y)的商,如下所示:                                                 R(x,y)= I(x,y)/ L(x,y)

在基于MQI的照明归一化方法中,通过将具有固定大小模板的形态学关闭操作应用于图像I(x,y)来估计亮度L(x,y)。

通过这种方法,[-1-]得到了这个结果,但我的实现结果是:both results

这是我的MATLAB函数:

function mytest1
    for i=1:4
        img= imread(strcat(num2str(i),'.bmp'));
        cimg= gsClose(img, 7,7);
        mqi= histeq(img./cimg);

        subplot(2,4,i), imshow(img);
        subplot(2,4,4+i), imshow(mqi);
    end
end


function img= gsClose(img, x, y)
    img= uint8(gsDilation(gsErosion(img,x,y),x,y));
end

function img= gsErosion(img, x, y)
    img=ordfilt2(img,1,ones(x,y),-ones(x,y));
end

function img= gsDilation(img, x, y)
    img=ordfilt2(img,9,ones(x,y),ones(x,y));
end

我不知道,哪里出错了!请指导我。我也上传了图片: download


[ - 1-] J. Wang,L。Wu,X。他和J. Tian。一种新的光照不变人脸识别方法。在Proc。国际创新计算大会,2007:139-142

[ - 2-] E. H. Land和J. J. McCann。亮度和Retinex理论。美国光学学会杂志,61(1):1-11,1971。

1 个答案:

答案 0 :(得分:1)

实施是正确的。我只是采取了错误的方式来显示最终图像。 我在MATLAB中使用了imshow方法:

imshow(image)

但我应该使用:

imshow(image, [])