使用matlab,对一副二值图像求其指定的某一像素点的梯度。谢谢!
加入你的二值图像存放在矩阵I中
那么
[dx dy]=gradient(I);
得到的两个矩阵 dx dy,和I大小一样,对应于原来矩阵I分别在x,y方向的梯度
想提取那一点,直接dx dy中提取就可以了
例如想要图像中10行,20列那点像素的梯度
xx=dx(10,20);
yy=dy(10,20);
得到的xx,yy即使这点x方向和y方向的梯度追问
那么
[dx dy]=gradient(I);
得到的两个矩阵 dx dy,和I大小一样,对应于原来矩阵I分别在x,y方向的梯度
想提取那一点,直接dx dy中提取就可以了
例如想要图像中10行,20列那点像素的梯度
xx=dx(10,20);
yy=dy(10,20);
得到的xx,yy即使这点x方向和y方向的梯度追问
I=double(I);
[Fx,Fy]=gradient(I);
g1=sqrt(Fx^2+Fy^2);
grandf=sum(g1)/num;
这样求图像的平均梯度对吗?还是要再加一重循环呢?
运行的时候会提示我这样的错误,是什么原因呢?
Too many output arguments.
[Fx,Fy]=gradient(I);
分先给你了哈,谢谢先。
I=double(I);
[Fx,Fy]=gradient(I);
g1=sqrt(Fx.^2+Fy.^2);
grandf=sum(g1(:))/num;
如果你的图像I是个二维矩阵,那么不应该报错
如果有报错的话,检查一下你的矩阵I的大小
温馨提示:答案为网友推荐,仅供参考