现在的位置: 首页 > 综合 > 正文

图像梯度

2012年07月22日 ⁄ 综合 ⁄ 共 786字 ⁄ 字号 评论关闭
 G=imread('01.jpg');
G=rgb2gray(G);
[height, width] = size(G);
gradx = zeros(height, width);
grady = zeros(height, width);

gradx(:,1) = sum(G(:,1:2).* repmat([-1, 1], height, 1), 2);
gradx(:,width) = sum(G(:, width-1:width).*repmat([-1, 1], height, 1), 2);

grady(1,:) = sum(G(1:2, :).*repmat([-1; 1], 1, width), 1);
grady(height,:) = sum(G(height-1:height, :).*repmat([-1; 1], 1, width), 1);

for j=2:height-1
    for i=2:width-1
        tmpx = G(j, i-1:i+1);
        tmpy = G(j-1:j+1, i);
        gradx(j,i) = sum(tmpx.*[-1, 0, 1], 2);
        grady(j,i) = sum(tmpy.*[-1; 0; 1], 1);
    end
end
这个程序运行错误的,错误提示是:Error using  .* 
Integers can only be combined with integers of the same class, or scalar
doubles.

Error in Untitled (line 8)
gradx(:,1) = sum(G(:,1:2).* repmat([-1, 1], height, 1), 2);
 
我不明白的,请教请教

抱歉!评论已关闭.