是否有一种方法可以在具有给定邻域的图像中执行自定义操作?
例如,我定义了两个函数fmax = @(x)max(x(:))和fmin = @(x)min(x(:))来计算灰度图像I的梯度,如下所示:
G = nlfilter(I,[3 3],fmax) - nlfilter(I,[3 3],fmin);
然而,我想对4-邻域做同样的事情,而不是用3*3滑动块中定义的8-邻域,以类似于形态学数学中使用的结构元素的方式。
此测试背后的想法是将自定义函数应用于像素和具有半径r的给定邻域。
请注意,我对应用用户定义函数很感兴趣。梯度只是一个例子。
发布于 2013-07-17 03:08:58
匿名函数是您想要的“用户定义”或“自定义”函数的。
您只需根据需要使用匿名函数即可。例如,为了只考虑3x3窗口的4个最近邻居(左上右下)像素,您可以这样写:
f = @(x) max(x(2:2:8)) - min(x(2:2:8))
G = nlfilter(I,[3 3],f);作为梯度。
另一个示例是,对半径为r的通用圆形邻域执行相同的操作
r = 5;
H = fspecial('disk',r);
f = @(x) max(x(H>0))-min(x(H>0));
G = nlfilter(I,size(H),f); https://stackoverflow.com/questions/17683242
复制相似问题