2015-10-14 101 views
0

Area積分不變是一種在圖像處理中使用的簽名的。有沒有人知道計算AII的算法?Area積分不變計算

即我想要計算通過邊界與相交的圓圈包圍的區域...

邊界不是用公式,但是從任意的輪廓曲線。下面的圖片只是一個示意圖。真正的邊界可以是複雜得多,在邊界的各個位置,即頂部,底部,左側的封閉區域......

The red area。我使用MATLAB,圖像大多是二進制。 The red area

回答

0

如果你知道圓的方程和線,那麼它很容易,如果你是在一個圖像中做這個。

  1. 選擇圓內的像素(可以用圓的公式很容易地完成)。如果您需要將AII計算爲比率,請計算您擁有的像素數。

  2. 單獨的像素的上方和線下方。如果知道線的方程或每列中的線的值,則可以輕鬆完成此操作。逐列逐行並丟棄高於該行值的像素。計算結果。

  3. 這就是它!如果您想要AII沒有比例,那麼2中的像素數就是結果。如果你想把它當作一個比例,由1

+0

我忘了提及的線沒有繪製任何方程的基礎上,但從邊界的輪廓或約... – sytheve

+0

此外,相對於線的像素不能被行的列值分開,因爲有時候該區域可能位於線條的頂部,具體取決於線條的形狀。 – sytheve

+0

@sytheve然後更容易,不是嗎? *「或每一列中的行值」 *當然 –

0

像素數除以2的像素數量。如果你只有圖像,沒有公式,您仍然可以選擇你想要的像素在你想計算的區域給你的算法一個像素點,然後重新檢查所有的鄰居,如果它們是白色的,就把它們添加到你的區域。完成後,只需計算您擁有的像素。其結果在某種意義上說是你想要的地區。

+0

如何選擇區域?現在,我使用「imfill」的功能,但它是非常耗時的大圖片特別像...... 1000×1000 – sytheve

+0

是的,你可以通過使用'XOR(originalImage,imfilledImage)'選擇的區域。確保將您的二進制圖像轉換爲邏輯顯式。我沒有看到任何其他(更快)的可能性。 – Wauzl

+0

另外,使用'imfill'時記得指定正確的連接。 – Wauzl