我讀了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. 管道操作員,它是如何工作的?