我读了https://en.wikipedia.org/wiki/Sobel_operator
说,我们要检测灰度图像中的水平边缘。
请注意 - 我写矩阵作为行的序列。
问题1)然后我应该取[1,0,-1; 2,0,-2; 1,0,-1](来自G x =以上维基链接的矩阵* A)并且将其与给定图像进行卷积。 所以我会叠加[-1,0,1; -2,0,2; -1,0,1](从矩阵的180度旋转获得)在每个像素上。
是吗?
问题2)假设图像是[a,b,c; d,X,f; g,h,i],那么我将用-a + c-2d + 2f-g + i = Y来代替像素X.如果Y变成负值会怎么样? (像素值不能为负)。
问题3)我可以通过应用sobel算子(不是将该输出矩阵作为图像渲染)后得到的矩阵来得出关于图像的特定像素的任何结论吗?
问题4)是否 - 取决于使用的矩阵 - 水平或垂直边缘将在输出图像中强调,但不是两者都是?
谢谢。sobel操作员如何工作
0
A
回答
0
像素值不能为负数
现在好了就可以了,根据定义。使用偏移表示法可以很容易地看到(平坦=灰色,负=暗,正=明),使用2的补码表示法通常会使数学更容易(但看起来真的很糟糕,如果直接渲染会造成混淆)。无论哪种方式,如果你想使用相同的格式(听起来像你这样做,否则就没有问题),你还必须将结果夹紧和/或缩放到新的范围,因为在最糟糕的情况下,他们不会适合。自然图像中的大多数像素不会有很大的衍生物,因此钳位不会造成太大麻烦,但是否合适取决于您需要的信息。缩放会降低各处的小细节。
显然,如果您使用不同的目标格式(每个像素的位数多于源数据),那么首先这不是一个问题。如果你有一个8位输入,你可以将结果以一个有符号的16位格式存储,而不会有任何问题。
这是 - 根据使用的矩阵 - 水平或垂直边缘将强调在输出图像,但不是两个?
是的,但您可以通过获取梯度向量的长度来合并它们。这将在任何方向(不仅H或V,而且对角线和两者之间的角度)大致相等地处理边缘。您也可以将水平和垂直导数的绝对值相加,这是一种更简单的计算,但它将对角线边缘视为与直边不同。
1
1)对。 2)标志会告诉你边缘的极性;如果你想保持两个极性,取绝对值;否则只保留正面或负面部分。 3)边缘是滤波器响应高的地方。 4)右边,虽然一些斜边也是可见的。
相关问题
- 1. Pig的COGROUP操作员如何工作?
- 2. OR操作员如何工作
- 3. 班上的操作员如何工作?
- 4. C++ - 如何||操作员工作?
- 5. <<操作员如何工作?
- 6. IPython如何?操作员实际工作?
- 7. DataTorrent:JDBC操作员不工作
- 8. !=操作员不工作
- 9. 成员操作员不工作
- 10. 操作员新操作员和新操作员不能重载?
- 11. 如何更改操作员' - '的智能操作员行为?
- 12. 与TJ操作员一起工作
- 13. Mod操作员不在C工作
- 14. c#!=操作员不能正常工作
- 15. Boost xpressive!操作员不工作
- 16. Bash脚本-gt操作员不工作
- 17. - =操作员工作,但不是+ =
- 18. Raspberry php - >操作员不工作
- 19. Javascript:“!=”操作员无法正常工作
- 20. 索贝尔操作员不工作
- 21. WebDriver操作如何工作
- 22. >>>操作员如何在Java中工作
- 23. RxJS管道如何工作(可出租操作员)
- 24. 增量操作员如何在开关柜中工作?
- 25. 新操作员如何在JavaScript中工作?
- 26. 如何让零合并操作员使用闭包工作?
- 27. 或者操作员在这种情况下如何工作?
- 28. +操作员如何工作组合代表?
- 29. FAST ESP的xrank操作员如何工作?
- 30. 管道操作员,它是如何工作的?