用matlab 如何求一幅图像的梯度值呢,利用这个 [Ix,Iy]=gradient(I)为什么出现下面的错误呢
???Errorusing==>rdivideIntegerscanonlybecombinedwithintegersofthesameclass,orscalardo...
??? Error using ==> rdivide
Integers can only be combined with integers of the same class, or scalar doubles.
Error in ==> gradient at 70
g(2:n-1,:) = (f(3:n,:)-f(1:n-2,:))./h(:,ones(p,1));
还是用别的函数来求梯度。 展开
Integers can only be combined with integers of the same class, or scalar doubles.
Error in ==> gradient at 70
g(2:n-1,:) = (f(3:n,:)-f(1:n-2,:))./h(:,ones(p,1));
还是用别的函数来求梯度。 展开
1个回答
展开全部
>>a=imread('D:\Program Files\toolbox\images\imdemos\rice.png');
>> b=gradient(double(a));
转化图像为double型,即可,gradient中h(:,ones(p,1))估计是double,我转化后可以运行,得到的是水平方向的梯度。
>>[ax,ay]=gradient(double(a));可以得到水平和垂直方向的梯度。
>> b=gradient(double(a));
转化图像为double型,即可,gradient中h(:,ones(p,1))估计是double,我转化后可以运行,得到的是水平方向的梯度。
>>[ax,ay]=gradient(double(a));可以得到水平和垂直方向的梯度。
追问
梯度可以是负值吗?求出来好多负值
追答
图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导:
图像梯度: G(x,y) = dx i + dy j;
dx(i,j) = I(i+1,j) - I(i,j);
dy(i,j) = I(i,j+1) - I(i,j);
其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。
图像梯度一般也可以用中值差分:
dx(i,j) = [I(i+1,j) + I(i-1,j)]/2;
dy(i,j) = [I(i,j+1) +I(i,j-1)]/2;
图像边缘一般都是通过对图像进行梯度运算来实现的。
梯度的正负反映其边缘的走势,相当于方向。
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询