2010-11-28 7 views
2

J'ai une question rapide. J'essaye de calculer un gradient 2D d'images en utilisant la fonction gradient() dans MATLAB, mais cela ne fonctionne pas. Plus précisément, voici mon code (L'image que je utilise est en niveaux de gris):gradient() fonction ne fonctionne pas avec des images

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

Je reçois l'erreur suivante:

??? 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));

Des indices sur la façon de résoudre ce problème?

Répondre

2

Vos données d'image sont probablement lues comme des entiers dans la plage [0,255] (pour 8 bits par canal de couleur), le type im est uint8 ou un autre type int. Essayez de le convertir en single ou double:

g = FindImageGradients(single(im));