【发布时间】:2016-12-14 13:11:32
【问题描述】:
让S 是包含数据矩阵D 的符号的矩阵,即S=sign(D)。我想在S 中找到以下两个单元格之间的垂直变化。 (我试图在高斯差异后检测边缘)。为了避免噪音,我只想在两个结果像素中找到边缘时才执行此操作。
我已经实现了这个数学上很好的代码(满足了我的要求)。 (对边缘施加一些权重)
[D,S]=DogCalc(FileName);%the function is in the end of this file
edges=zeros(size(D));
for i=1:rowSize*columnSize-columnSize
if(S(i)~=S(i+1)&&S(i+columnSize)~=S(i+1+columnSize))%apply weighted edge for horizontal edge
edges(i)=abs((D(i)*S(i+1)-D(i+1)*S(i))/(S(i+1)-S(i)));
elseif(S(i)~=S(i+columnSize)&&S(i+1)~=S(i+1+columnSize))%apply weighted edge for vertical edge
edges(i)=abs((D(i)*S(i+columnSize)-D(i+columnSize)*S(i))/(S(i+columnSize)-S(i)));
end
end
imshow(edges);
我尝试使用文件管理器来避免 for 循环无济于事。假设过滤器在回答条件的有趣像素中提取带有1 的矩阵(替换if 语句)。一切都出错了:
Tester=[1 -1; 1 -1];
%V for vertical and H for horizontal
VEdges=abs(imfilter(S,0.25*Tester,'same'));
HEdges=abs(imfilter(S,0.25*Tester.','same'));
VEdges(VEdges<1)=0;
HEdges(HEdges<1)=0;
- 使用过滤器是否可行\正确?
- 如果是这样,我做错了什么?
【问题讨论】:
标签: matlab image-processing filter