循环邻域操作:matlab颜色直方图

时间:2012-11-05 14:17:17

标签: matlab image-processing computer-vision pattern-recognition

假设我有一张灰度图像。考虑每个像素周围的圆形邻域窗口。我需要获得每个像素周围的圆形邻域的颜色直方图。

如何在MatLab中有效地实现此问题的循环邻域运算?

1 个答案:

答案 0 :(得分:2)

我不想给你一切,但我认为这应该可以帮到你很多。

你可以做一些像

这样的事情
h = fspecial('disk',rad);
h = h>0;

然后你可以将它放在一个更大的矩阵中的任何地方,例如

h2 = zeros(N,M);
h2(c_offset-rad:c_offset+rad,r_offset-rad:r_offset+rad) = h;

现在您有一个与图像大小相同(列/行大小)的矩阵。您可以将此作为参考表用于从矩阵中获取数据,就像您只能通过说

返回0.5以上的值一样
r = rand(10);
d = r(r>0.5);

修改

您还需要在某些地方使用数据类型来使MATLAB满意。例如,h2需要是一个逻辑,以将其用作另一个矩阵的参考表。没有适当的类型,hist也无法工作。