0

matlab でガウス フィルターを作成して回転させようとしています。これが私のコードです:

function f = createGaussianArray(length, sigma, theta)
    half = length/2;
    [x,y] = meshgrid(-half:half, -half:half);
    x2 = cos(theta)*(x)-sin(theta)*(y);
    y2 = sin(theta)*(x)+cos(theta)*(x);
    matrix = exp(- (x2.^2+y2.^2) / (2*sigma.^2));
    f = matrix ./ sum(matrix(:));
end

この関数を呼び出すと (関数は gauss.m ファイルにあります):

filter = gauss(31, 10, pi/2);
imagesc(filter)

pi/3, pi/6 vs. 3pi/4, 0, pi, 2*pi を引数として送ると、直線しか表示されません。私のコードの何が問題なのか、理解できませんでした。

4

1 に答える 1

1

回転変換は次のとおりです。

x2 = cos(theta)*(x)-sin(theta)*(y);
y2 = sin(theta)*(x)+cos(theta)*(y);  % last term is not cos(theta)*(x)
于 2013-04-20T18:41:53.983 に答える