1

很难解释标题中的问题,所以请继续阅读。

我有一个项目,我们正在实施 sobel 过滤器。起初,使用 sobel 计算,图像无法正常工作

Gx <= ("000" & p3-p1)+(("00" & p6 & '0')-("00" & p4 & '0'))+("000" & p9-p7);
Gy <= ("000" & p7-p1)+(("00" & p8 & '0')-("00" & p2 & '0'))+("000" & p9-p3);

但以不同的方式表达相同的计算

Gx <= ("000" & p3)+("00" & p6 & '0')+("000" & p9)-("000" & p1)-("00" & p4 & '0')-("000"
 & p7);
Gy <= ("000" & p7)+("00" & p8 & '0')+("000" & p9)-("000" & p1)-("00" & p2 & '0')-("000"
 & p3);

它工作得很好。尽管如此,仅过滤器的模拟是完全相同的。这与我如何在向量之前填充零有关吗?

4

1 回答 1

2

在不知道数据类型的情况下,我不能完全确定这是否是原因,但我的猜测是,如果p1 > p3(以及其他一些)你将从这两种类型的计算中得到不同的结果。伪代码示例:

p1 = "010";
p3 = "001";

--Method1:
res = "000" & p3-p1 = "000" & "111" = "000111";


--Method2
res = ("000" & p3) - ("000" & p1) = "000001" - "000010" = "111111";
于 2012-05-18T11:23:22.897 回答