首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >邻域差分计算在matlab中的高效实现

邻域差分计算在matlab中的高效实现
EN

Stack Overflow用户
提问于 2013-12-01 07:07:22
回答 2查看 544关注 0票数 0

我有二维图像数据,我想要计算相邻像素之间的绝对差值。每个像素有8个邻域(上、左、右和对角线),我需要将结果记录在一维向量中。

现在,我首先创建一个边缘对列表(i,j),其中i和j是像素位置的索引。例如,3x3图像中的像素被标记为1到9,这定义了i和j的范围,然后我遍历所有的边缘对来计算差值。问题是,这是非常缓慢的,因为有这么多的边缘在一个图像。

有更好的方法吗?非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-01 07:44:36

你想记录一次还是两次差异?如果您计算每个像素的8个差异,那么您将记录每个差值两次:一次在ij之间,一次在ji之间(相同的abs差)。

这里有一个2D图像I的无循环选项

代码语言:javascript
复制
d1 = abs( I(:,1:end-1) - I(:,2:end) ); % difference left-right
d2 = abs( I(1:end-1,:) - I(2:end,:) ); % diff up
d3 = abs( I(1:end-1,1:end-1) - I(2:end,2:end) ); % 1st diagonal
d4 = abs( I(1:end-1,2:end) - I(2:end,1:end-1) ); % 1st diagonal
allDiff = [d1(:); d2(:); d3(:); d4(:) ]; % stack them together.
票数 1
EN

Stack Overflow用户

发布于 2016-06-23 10:51:55

计算方法是如何使边缘像素与相应的水平像素之间的abs差值满足一个阈值,例如1,2,3…并且以同样的方式存储水平像素的值,也满足于水平相对和执行上述相同方法的要求。假设边缘像素I(i,j)然后I(i,j+r)水平像素和I(i,j-r)垂直像素

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20309659

复制
相关文章

相似问题

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