假设我有一张灰度图像。考虑每个像素周围的圆形邻域窗口。我需要获得每个像素周围的圆形邻域的颜色直方图。
如何在MatLab中有效地实现此问题的循环邻域运算?
答案 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也无法工作。