2016-07-14 82 views
1

我有一張圖像,其中一半的圖像被NaN或零點遮住(我可以選擇哪一個或在圖像的這一半中放置任何其他值)以及我想在整個圖像上進行Sobel邊緣檢測,同時忽略從NaN/0到實際圖像的轉換形成的線。這是我想要做的邊緣檢測圖像的例子:如何讓Sobel邊緣檢測忽略NaN或0

enter image description here

我只想做對圖像的右側邊緣檢測,但後來在我的項目,我將有一個彎曲的形狀而不是一個很好的矩形,所以無論我如何裁剪,都會有一些NaN/0。

當我做邊緣檢測,現在我得到: enter image description here

所以基本上我的問題可以歸結爲:有什麼辦法,我除去中間,檢測到該邊緣或有索貝爾在某種程度上忽視那種類型的過渡?

我也很困惑,爲什麼索貝爾檢測到圖像中間的一條線,而不是我在旋轉圖像時創建的一側的線,這會導致邊緣的一些像素被填充0。我認爲這是因爲這些邊緣沒有連接到任何突出的邊緣,但這對我沒有多大幫助。

任何幫助將不勝感激!

P.S.是的,形象是果蠅的形象。

+0

只需用NaN做它,然後進行閾值處理,然後將NaN轉換爲二進制零。我不理解你的問題? – rlbond

+0

你確定它的Sobel?看起來像一個Canny邊緣檢測給我。 – kosinix

+0

@ kosinix:你說的是什麼? –

回答

0

你可以先裁剪你的圖像,做邊緣過濾器,然後用零填充結果。

1

沿無效區域檢測到的邊緣將被限制在3x3鄰居中。只需使用原始圖像作爲蒙版來擦除這些像素(使用膨脹)。