Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab/octave中实现图像的韦伯对比度?_Matlab_Image Processing_Octave_Contrast - Fatal编程技术网

如何在matlab/octave中实现图像的韦伯对比度?

如何在matlab/octave中实现图像的韦伯对比度?,matlab,image-processing,octave,contrast,Matlab,Image Processing,Octave,Contrast,我想得到图像的每像素局部对比度,我想这是一个合理的公式。问题是,假设我们只使用Ib的相邻像素(ex,5x5),如何在matlab中获得它?计算局部对比度,我们需要亮度图像和局部背景亮度 假设我们已经有了亮度图像,可以通过取局部区域中所有像素的平均值来计算特定像素的局部背景亮度 通过在水平和垂直方向上重复移动图像0:(n-1)个像素,我们可以收集一组这样的局部背景区域(原始图像中的每个像素一个) 以下演示功能说明了基本思想: function weberContrastDemo imgW

我想得到图像的每像素局部对比度,我想这是一个合理的公式。问题是,假设我们只使用Ib的相邻像素(ex,5x5),如何在matlab中获得它?

计算局部对比度,我们需要亮度图像和局部背景亮度

假设我们已经有了亮度图像,可以通过取局部区域中所有像素的平均值来计算特定像素的局部背景亮度

通过在水平和垂直方向上重复移动图像0:(n-1)个像素,我们可以收集一组这样的局部背景区域(原始图像中的每个像素一个)

以下演示功能说明了基本思想:

function weberContrastDemo

    imgWidthPixels            = 1024;
    imgHeightPixels           = 1024;
    localBackgroundSizePixels = 5; % square patch

    luminance     = randn( imgHeightPixels, imgWidthPixels );
    luminance( 496:528, 496:528 ) = 20;
    background    = localMeanFilter( luminance, localBackgroundSizePixels );
    weberContrast = ( luminance - background );% ./ background;

    imagesc( weberContrast );
    title( 'Weber Contrast' );
    colormap(gray);

end

function filteredImg = localMeanFilter( img, regionSizePixels )

    offsetImages  = getOffsetImages( img, regionSizePixels );
    filteredImg   = mean( offsetImages, 3 );

end

function buffer = getOffsetImages( img, regionSizePixels )
% GETOFFSETIMAGES

    imgSize      = size( img );
    imgHeight    = imgSize( 1 );
    imgWidth     = imgSize( 2 );

    minDelta     = 0;
    maxDelta     = (regionSizePixels-1);

    bufferWidth  = imgWidth  + maxDelta;
    bufferHeight = imgHeight + maxDelta;
    bufferDepth  = regionSizePixels .^ 2;
    bufferSize   = [ bufferHeight bufferWidth bufferDepth ];
    buffer       = zeros( bufferSize );

    iSample = 0;

    for deltaX = minDelta:maxDelta

        iStartX = 1        + deltaX;
        iEndX   = imgWidth + deltaX;
        idxX    = iStartX:iEndX;

        for deltaY = minDelta:maxDelta

            iSample = iSample + 1;

            iStartY = 1         + deltaY;
            iEndY   = imgHeight + deltaY;
            idxY    = iStartY:iEndY;

            buffer( idxY, idxX, iSample ) = img;

        end
    end

    iMin   = ceil(regionSizePixels/2);
    iMax   = iMin + (imgWidth-1);
    buffer = buffer( iMin:iMax, iMin:iMax, : );

end % GETOFFSETIMAGES
对于一个真正的心理物理实验,我们需要将弧度或steradians的参数转换为像素,并且需要校准显示器或图像捕获设备,以便亮度测量准确