登录论坛

查看完整版本 : [求助]如何求图像的梯度


soliddream
2008-08-02, 16:10
书上举例灰度图像:
a =

0 0 0 100 100
0 0 0 100 100
0 0 0 100 100
100 100 100 100 100
100 100 100 100 100

列梯度
fx =

0 0 300 300 0
0 0 300 300 0
0 0 200 200 0
0 0 0 100 0
0 0 0 0 0
行梯度

fy =

0 0 0 0 0
0 0 0 0 0
300 300 200 100 0
300 300 200 100 0
0 0 0 0 0
不知道matlab里面有没有求梯度的函数?我按梯度的英文gradient在帮助中搜索,并按照如下语法使用
>> [Fx , Fy] = gradient(a,1/6)

Fx =

0 0 300.0000 300.0000 0
0 0 300.0000 300.0000 0
0 0 300.0000 300.0000 0
0 0 0 0 0
0 0 0 0 0


Fy =

0 0 0 0 0
0 0 0 0 0
300.0000 300.0000 300.0000 0 0
300.0000 300.0000 300.0000 0 0
0 0 0 0 0
得到的结果不一样啊
ps.书上面解释如下:函数row_gradient和column_gradient分别是估计行梯度分量和列梯度分量的领域函数,注意采用3*3的梯度算子(?)

IPRAI_MOON
2008-09-27, 12:08
其实很简单的,你可以参看下matlab里面的edge函数,里面的canny就要求梯度,它里面是用一个卷积求的,求的效果蛮好的。

先是生成一个求梯度的卷积模板,然后再用imfilter函数做卷积,就可以得到你要的了