1

ピクセルごとのコントラスト (つまり、ウィンドウの中心ピクセル (3x3) とウィンドウ内のすべてのピクセルの平均との差、およびウィンドウ内のすべてのピクセルの標準偏差に対する差) を計算する Matlab 関数を作成しました。窓)。

1024x1024 グレー スケール イメージの場合、コードの実行速度は非常に遅くなります。コードを高速化する方法はありますか? ありがとう!

function [ imContrast ] = LocalContrast( im )
% [ imContrast ] = LocalContrast( im )
%   Compute the contrast between a center contrast and its neighbors.
%
%   Equation:   window_size = 3x3
%               x_contrast = (x_center - mu) / std(pixels_in_window)
%               mu: mean of the pixels' gray values in the window
%
%   Input:
%       im - original image in gray scale
%
%   Output:
%       imContrast - feature matrix of contrast, same size of im

[rows, cols] = size(im);
imContrast = double(zeros(size(im)));

% Boundary - keep the gray values of those in im
imContrast(1,:) = im(1,:) / 255;
imContrast(rows,:) = im(rows,:) / 255;
imContrast(:,1) = im(:,1) / 255;
imContrast(:,cols) = im(:,cols) / 255;

% Compute contrast for each pixel
for x = 2:(rows-1)
    for y = 2:(cols-1)

        winPixels = [ im(x-1,y-1), im(x-1,y), im(x-1,y+1),...
                      im(x,y-1), im(x,y), im(x,y+1),...
                      im(x+1,y-1), im(x+1,y), im(x+1,y+1)];

        winPixels = double(winPixels);

        mu = mean(winPixels);
        stdWin = std(winPixels);
        imContrast(x,y) = (double(im(x,y)) - mu) / stdWin;
    end
end
end
4

1 に答える 1

4

画像処理ツールボックスを使用して回避する方法を次に示します。あなたの画像が と呼ばれているとすればim

平均差 (MD):

 MD = im - imfilter(im,fspecial('average',[3 3]),'same');

標準偏差差 (SDD):

 SDD = im - stdfilt(im, ones(3));
于 2012-12-20T04:39:38.230 に答える