4

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

如何在 MatLab 中有效地为这个问题实现循环邻域运算?

4

1 回答 1

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 也将无法工作。

于 2012-11-05T16:58:20.123 回答