首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中实现滑动4邻域运算

在MATLAB中实现滑动4邻域运算
EN

Stack Overflow用户
提问于 2013-07-17 01:28:52
回答 1查看 1.6K关注 0票数 1

是否有一种方法可以在具有给定邻域的图像中执行自定义操作?

例如,我定义了两个函数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的给定邻域。

请注意,我对应用用户定义函数很感兴趣。梯度只是一个例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-17 03:08:58

匿名函数是您想要的“用户定义”或“自定义”函数的

您只需根据需要使用匿名函数即可。例如,为了只考虑3x3窗口的4个最近邻居(左上右下)像素,您可以这样写:

代码语言:javascript
复制
f = @(x) max(x(2:2:8)) - min(x(2:2:8)) 
G = nlfilter(I,[3 3],f);

作为梯度。

另一个示例是,对半径为r的通用圆形邻域执行相同的操作

代码语言:javascript
复制
r = 5;
H = fspecial('disk',r);
f = @(x) max(x(H>0))-min(x(H>0)); 
G = nlfilter(I,size(H),f); 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17683242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档