假设我有一张灰度图像。考虑每个像素周围的圆形邻域窗口。我需要得到每个像素周围圆形邻域的颜色直方图。
如何在MatLab中有效地实现圆形邻域操作来解决此问题?
发布于 2012-11-06 00:58:20
我不想把所有的东西都给你,但我想这对你有很大的帮助。
你可以做一圈这样的事情
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也不会工作。
https://stackoverflow.com/questions/13233949
复制相似问题