2010-11-28 104 views
2

我有一个快速的问题。我试图使用MATLAB中的gradient()函数来计算图像2D梯度,但它不起作用。具体而言,这里是我的代码(我用的图片是灰度):渐变()函数不适用于图像

im = imread('C:\yosemite1.bmp'); g = FindImageGradients(im);

我得到以下错误:

??? Error using ==> rdivide Integers can only be combined with integers of the same class, or scalar doubles.

Error in ==> gradient at 75 g(2:n-1,:) = (f(3:n,:)-f(1:n-2,:))./h(:,ones(p,1));

如何解决这个任何线索?

回答

2

您的图像数据可能正在读取范围[0,255]中的整数(对于每个颜色通道8位),因此im的类型为uint8或其他int类型。尝试将其转换为singledouble

g = FindImageGradients(single(im));